@liquidcommerce/elements-sdk 2.7.25 → 2.7.26

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (81) hide show
  1. package/README.md +20 -4
  2. package/dist/index.checkout.esm.js +8410 -7130
  3. package/dist/index.esm.js +13783 -11655
  4. package/dist/types/core/a11y/announcer.service.d.ts +16 -0
  5. package/dist/types/core/a11y/focus-manager.service.d.ts +21 -0
  6. package/dist/types/core/a11y/focusable.d.ts +5 -0
  7. package/dist/types/core/a11y/glyph-button.d.ts +8 -0
  8. package/dist/types/core/a11y/index.d.ts +5 -0
  9. package/dist/types/core/a11y/single-select.d.ts +16 -0
  10. package/dist/types/core/base-component.service.d.ts +2 -0
  11. package/dist/types/interfaces/configs/global.interface.d.ts +2 -0
  12. package/dist/types/modules/address/address-display.component.d.ts +3 -1
  13. package/dist/types/modules/address/address-input.component.d.ts +10 -1
  14. package/dist/types/modules/cart/components/cart-body.component.d.ts +1 -0
  15. package/dist/types/modules/cart/components/cart-item-quantity-price.component.d.ts +5 -0
  16. package/dist/types/modules/cart/components/cart-item.component.d.ts +6 -0
  17. package/dist/types/modules/checkout/components/checkout-completed.component.d.ts +2 -0
  18. package/dist/types/modules/checkout/components/checkout-item-quantity.component.d.ts +1 -0
  19. package/dist/types/modules/checkout/components/checkout-payment.component.d.ts +1 -0
  20. package/dist/types/modules/checkout/components/checkout-place-order-button.component.d.ts +2 -0
  21. package/dist/types/modules/product/components/components.d.ts +6 -1
  22. package/dist/types/modules/product/components/product-add-to-cart-section.component.d.ts +6 -1
  23. package/dist/types/modules/product/components/product-drawer.component.d.ts +6 -0
  24. package/dist/types/modules/product/components/product-image-carousel.component.d.ts +1 -0
  25. package/dist/types/modules/product/components/product-retailers-carousel.component.d.ts +1 -0
  26. package/dist/types/modules/product/components/product-retailers-popup-list.component.d.ts +5 -0
  27. package/dist/types/modules/product/product.commands.d.ts +2 -2
  28. package/dist/types/modules/product-list/components/card-components/product-price-and-personalization.d.ts +2 -1
  29. package/dist/types/modules/product-list/components/card-components/product-quantity-selector.d.ts +2 -1
  30. package/dist/types/modules/product-list/components/card-components/product-sizes-list.d.ts +1 -0
  31. package/dist/types/modules/product-list/components/filter-components/product-list-fulfillment-filter.d.ts +1 -0
  32. package/dist/types/modules/product-list/components/product-list-filters.component.d.ts +1 -0
  33. package/dist/types/modules/product-list/components/product-list-product-pre-cart.component.d.ts +2 -0
  34. package/dist/types/modules/product-list/product-list.commands.d.ts +1 -1
  35. package/dist/types/modules/product-list/product-list.component.d.ts +3 -0
  36. package/dist/types/modules/theme-provider/services/contrast-guard.service.d.ts +19 -0
  37. package/dist/types/modules/ui-components/alert/alert.component.d.ts +1 -1
  38. package/dist/types/modules/ui-components/buttons/buttons-open-cart.component.d.ts +5 -0
  39. package/dist/types/modules/ui-components/drawer/drawer.component.d.ts +14 -0
  40. package/dist/types/modules/ui-components/engraving/engraving-form.component.d.ts +2 -0
  41. package/dist/types/modules/ui-components/engraving/engraving-view.component.d.ts +1 -0
  42. package/dist/types/modules/ui-components/input/input.component.d.ts +5 -0
  43. package/dist/types/modules/ui-components/lce-element/lce-element.component.d.ts +9 -1
  44. package/dist/types/modules/ui-components/ui.commands.d.ts +3 -1
  45. package/dist/types/static/icon/arrow-right.icon.d.ts +1 -1
  46. package/dist/types/static/icon/bag.icon.d.ts +1 -1
  47. package/dist/types/static/icon/check.icon.d.ts +1 -1
  48. package/dist/types/static/icon/checkbox.icon.d.ts +1 -1
  49. package/dist/types/static/icon/chevron-down.icon.d.ts +1 -1
  50. package/dist/types/static/icon/chevron-left.icon.d.ts +1 -1
  51. package/dist/types/static/icon/chevron-up.icon.d.ts +1 -1
  52. package/dist/types/static/icon/close.icon.d.ts +1 -1
  53. package/dist/types/static/icon/error-info.icon.d.ts +1 -1
  54. package/dist/types/static/icon/filter.icon.d.ts +1 -1
  55. package/dist/types/static/icon/icon.a11y.d.ts +1 -0
  56. package/dist/types/static/icon/icon.types.d.ts +1 -0
  57. package/dist/types/static/icon/index.d.ts +1 -0
  58. package/dist/types/static/icon/info.icon.d.ts +1 -1
  59. package/dist/types/static/icon/loading-spinner.icon.d.ts +1 -1
  60. package/dist/types/static/icon/search.icon.d.ts +1 -1
  61. package/dist/types/static/icon/success.icon.d.ts +1 -1
  62. package/dist/types/static/icon/trash.icon.d.ts +1 -1
  63. package/dist/types/static/icon/warning.icon.d.ts +1 -1
  64. package/dist/types/utils/color-contrast.d.ts +16 -0
  65. package/docs/v1/README.md +3 -0
  66. package/docs/v1/api/actions/address-actions.md +1 -1
  67. package/docs/v1/api/client.md +4 -3
  68. package/docs/v1/api/configuration.md +13 -0
  69. package/docs/v1/api/ui-helpers.md +2 -2
  70. package/docs/v1/getting-started/concepts.md +24 -7
  71. package/docs/v1/getting-started/installation.md +2 -2
  72. package/docs/v1/getting-started/quick-start.md +8 -3
  73. package/docs/v1/guides/accessibility.md +190 -0
  74. package/docs/v1/guides/address-component.md +3 -3
  75. package/docs/v1/guides/best-practices.md +1 -1
  76. package/docs/v1/guides/cart-component.md +3 -3
  77. package/docs/v1/guides/events.md +18 -5
  78. package/docs/v1/guides/theming.md +6 -1
  79. package/docs/v1/integration/vanilla-js.md +1 -1
  80. package/docs/v1/reference/error-handling.md +1 -1
  81. package/package.json +43 -14
@@ -0,0 +1,16 @@
1
+ export type AnnouncementPoliteness = 'polite' | 'assertive';
2
+ export declare class AnnouncerService {
3
+ private politeRegion;
4
+ private assertiveRegion;
5
+ private pendingTimeouts;
6
+ private readonly queues;
7
+ private readonly draining;
8
+ private lastMessage;
9
+ private lastMessageAt;
10
+ static getInstance(): AnnouncerService;
11
+ announce(message: string, politeness?: AnnouncementPoliteness): void;
12
+ private drain;
13
+ clear(): void;
14
+ destroy(): void;
15
+ private ensureRegion;
16
+ }
@@ -0,0 +1,21 @@
1
+ export declare const A11Y_PERSIST_ATTRIBUTE = "data-lce-a11y-persist";
2
+ export type FocusScope = 'drawer' | 'product-drawer';
3
+ export declare class FocusManagerService {
4
+ private readonly triggerStacks;
5
+ private hiddenBackground;
6
+ static getInstance(): FocusManagerService;
7
+ captureTrigger(scope: FocusScope, trigger?: Element | null, fallback?: () => HTMLElement | null): void;
8
+ restoreFocus(scope: FocusScope): boolean;
9
+ releaseTrigger(scope: FocusScope): void;
10
+ hasTrigger(scope: FocusScope): boolean;
11
+ hasRestorableTrigger(scope: FocusScope): boolean;
12
+ private resolveTrigger;
13
+ focusInitial(container: HTMLElement, preferredSelector?: string): boolean;
14
+ restoreFocusWhenReady(root: ParentNode, selector: string, maxFrames?: number): () => void;
15
+ containsFocus(container: HTMLElement): boolean;
16
+ trapFocus(container: HTMLElement): () => void;
17
+ private getDeepActiveElement;
18
+ hideBackground(overlayRoot: Element | null): void;
19
+ showBackground(): void;
20
+ destroy(): void;
21
+ }
@@ -0,0 +1,5 @@
1
+ export declare function isVisible(element: HTMLElement): boolean;
2
+ export declare function isFocusable(element: HTMLElement, root?: ParentNode): boolean;
3
+ export declare function getFocusableElements(root: ParentNode): HTMLElement[];
4
+ export declare function isFocusTarget(element: HTMLElement): boolean;
5
+ export declare function safeFocus(element: HTMLElement | null | undefined): boolean;
@@ -0,0 +1,8 @@
1
+ export interface IGlyphButtonParams {
2
+ glyph: string;
3
+ label: string;
4
+ className?: string;
5
+ focusKey?: string;
6
+ enabled?: boolean;
7
+ }
8
+ export declare function createGlyphButton({ glyph, label, className, focusKey, enabled }: IGlyphButtonParams): HTMLButtonElement;
@@ -0,0 +1,5 @@
1
+ export { type AnnouncementPoliteness, AnnouncerService } from '@/core/a11y/announcer.service';
2
+ export { A11Y_PERSIST_ATTRIBUTE, FocusManagerService } from '@/core/a11y/focus-manager.service';
3
+ export { getFocusableElements, isFocusable, isVisible, safeFocus } from '@/core/a11y/focusable';
4
+ export { type IGlyphButtonParams, createGlyphButton } from '@/core/a11y/glyph-button';
5
+ export { type IRovingFocusOptions, type RovingOrientation, applyOptionSemantics, focusSelectedItem, updateSelection, wireRovingFocus, } from '@/core/a11y/single-select';
@@ -0,0 +1,16 @@
1
+ export type RovingOrientation = 'horizontal' | 'vertical' | 'both';
2
+ type SelectionAttribute = 'aria-selected' | 'aria-checked';
3
+ export interface IRovingFocusOptions {
4
+ items: HTMLElement[];
5
+ orientation?: RovingOrientation;
6
+ selectionFollowsFocus?: boolean;
7
+ onActivate?: (item: HTMLElement, index: number) => void;
8
+ }
9
+ export declare function updateSelection(items: HTMLElement[], selected: HTMLElement | null, attribute?: SelectionAttribute): void;
10
+ export declare function applyOptionSemantics(element: HTMLElement, { label, selected }: {
11
+ label: string;
12
+ selected: boolean;
13
+ }): void;
14
+ export declare function focusSelectedItem(root: ParentNode, itemSelector: string): boolean;
15
+ export declare function wireRovingFocus({ items, orientation, selectionFollowsFocus, onActivate }: IRovingFocusOptions): void;
16
+ export {};
@@ -1,3 +1,4 @@
1
+ import { AnnouncerService } from '@/core/a11y';
1
2
  import { ClientConfigService } from '@/core/client/client-config.service';
2
3
  import { LoggerFactory } from '@/core/logger/logger-factory';
3
4
  import { PubSubService } from '@/core/pubsub/pubsub.service';
@@ -34,6 +35,7 @@ export declare abstract class BaseComponent<TParams = Record<string, any>, TConf
34
35
  protected readonly logger: ReturnType<typeof LoggerFactory.get>;
35
36
  protected readonly clientConfig: ClientConfigService;
36
37
  protected readonly telemetry: TelemetryService;
38
+ protected readonly announcer: AnnouncerService;
37
39
  private initialized;
38
40
  private isDestroyed;
39
41
  private renderScheduled;
@@ -23,6 +23,8 @@ export interface IGlobalTheme {
23
23
  warningColor: string;
24
24
  successColor: string;
25
25
  drawerBackgroundColor: string;
26
+ inputBorderColor?: string;
27
+ focusRingColor?: string;
26
28
  }
27
29
  export interface IPromoTicker {
28
30
  promoCode: string;
@@ -1,4 +1,4 @@
1
- import { BaseComponent } from '@/core/base-component.service';
1
+ import { BaseComponent, type IOnStoreChanged } from '@/core/base-component.service';
2
2
  import type { IAddressComponent } from '@/interfaces/configs';
3
3
  import type { IAddressOptions } from './address.interface';
4
4
  export interface IAddressDisplayComponentParams {
@@ -8,6 +8,8 @@ export interface IAddressDisplayComponentParams {
8
8
  }
9
9
  export declare class AddressDisplayComponent extends BaseComponent<IAddressDisplayComponentParams, IAddressComponent> {
10
10
  get hostClasses(): string[];
11
+ private lastAnnouncedAddress;
11
12
  constructor();
13
+ onStoreChanged(changes: IOnStoreChanged[]): boolean | undefined;
12
14
  protected template(): HTMLElement[];
13
15
  }
@@ -25,10 +25,19 @@ export declare class AddressInputComponent extends BaseComponent<IAddressInputCo
25
25
  private handleCancel;
26
26
  private handleCheckAvailability;
27
27
  private handleSuggestionClick;
28
- private handleDocumentClick;
28
+ private suggestionsStatus;
29
+ private activeSuggestionIndex;
30
+ private handleRootClick;
31
+ private handleFocusOut;
29
32
  private searchAddresses;
30
33
  private updateErrorDisplay;
31
34
  private updateSuggestionsDisplay;
35
+ private updateSuggestionsStatus;
36
+ private getSuggestionOptions;
37
+ private moveActiveSuggestion;
38
+ private setActiveSuggestion;
39
+ private isSuggestionListOpen;
40
+ private handleComboboxKeydown;
32
41
  private showSuggestions;
33
42
  private hideSuggestions;
34
43
  private createElement;
@@ -10,6 +10,7 @@ export declare class CartBodyComponent extends BaseComponent<null, ICartComponen
10
10
  private getRetailerElementById;
11
11
  private getLoadingElement;
12
12
  private showEmptyCartState;
13
+ private preserveDialogFocus;
13
14
  private addLoadingOverlay;
14
15
  private removeLoadingOverlay;
15
16
  private setupEmptyCartListeners;
@@ -7,14 +7,19 @@ export declare class CartItemQuantityPriceComponent extends BaseComponent<ICartI
7
7
  private qtyIncreaseButton;
8
8
  private qtyDecreaseButton;
9
9
  private quantitySpan;
10
+ private priceElement;
11
+ private unitPriceElement;
10
12
  get hostClasses(): string[];
11
13
  constructor();
14
+ onStoreChanged(changes: IOnStoreChanged[]): boolean;
12
15
  onStoreWatch(changes: IOnStoreChanged[]): void;
13
16
  private getItemStore;
14
17
  private calculateQuantityLimits;
15
18
  private getAvailableQuantity;
16
19
  private updateButtonStates;
17
20
  private handleQuantityChange;
21
+ private updatePriceText;
22
+ private applyUnitPrice;
18
23
  private createQuantityContainer;
19
24
  private createPriceContainer;
20
25
  protected template(): HTMLElement[];
@@ -6,6 +6,12 @@ export declare class CartItemComponent extends BaseComponent<ICartItemComponentP
6
6
  get hostClasses(): string[];
7
7
  get hostAttributes(): Record<string, string>;
8
8
  constructor();
9
+ private lastFocusedKey;
10
+ private cancelFocusRestore;
11
+ protected connected(): void;
12
+ protected disconnected(): void;
13
+ private readonly handleFocusIn;
14
+ protected afterRender(): void;
9
15
  private handleOpenEngravingForm;
10
16
  protected template(): HTMLElement[];
11
17
  }
@@ -12,5 +12,7 @@ export interface ICheckoutCompletedComponentParams {
12
12
  }
13
13
  export declare class CheckoutCompletedComponent extends BaseComponent<ICheckoutCompletedComponentParams, ICheckoutComponent> {
14
14
  get hostClasses(): string[];
15
+ private hasAnnouncedCompletion;
16
+ protected afterRender(): void;
15
17
  protected template(): HTMLElement[];
16
18
  }
@@ -14,6 +14,7 @@ export declare class CheckoutItemQuantityComponent extends BaseComponent<IChecko
14
14
  private getProductStoreByLiquidId;
15
15
  private getAvailableQuantity;
16
16
  private calculateQuantityLimits;
17
+ private get itemName();
17
18
  private updateButtonStates;
18
19
  private handleQuantityChange;
19
20
  protected template(): HTMLElement[];
@@ -21,6 +21,7 @@ export declare class CheckoutPaymentComponent extends BaseComponent<ICheckoutSen
21
21
  private handleBillingSameAsShippingChange;
22
22
  afterRender(): Promise<void>;
23
23
  private updateSaveButtonState;
24
+ private lastAnnouncedPaymentError;
24
25
  private updateErrorMessage;
25
26
  private showError;
26
27
  protected template(): HTMLElement[];
@@ -4,6 +4,8 @@ export declare class CheckoutPlaceOrderButtonComponent extends BaseComponent<nul
4
4
  private placeOrderButton;
5
5
  private errorContainer;
6
6
  private errorTimeoutId;
7
+ private lastButtonState;
8
+ private lastAnnouncedError;
7
9
  get hostClasses(): string[];
8
10
  constructor();
9
11
  afterRender(): void;
@@ -1,11 +1,16 @@
1
1
  import type { IProductFulfillmentStore } from '@/core/store/interfaces/product.interface';
2
2
  import { type FulfillmentType } from '@/enums';
3
3
  import type { IProductSizeAttributes } from '@/interfaces/api/product.interface';
4
- export declare function renderPopupRetailerCard({ fulfillment, selectedFulfillmentType, isSelected, selectedSizeAttributes, }: {
4
+ export declare const FULFILLMENT_TAB_SELECTOR = ".fulfillment-tab";
5
+ export declare function fulfillmentSelectedMessage(fulfillment: IProductFulfillmentStore, type: FulfillmentType): string;
6
+ export declare function fulfillmentTypeMessage(type: FulfillmentType, optionCount: number): string;
7
+ export declare function focusSelectedFulfillmentTab(root: ParentNode): boolean;
8
+ export declare function renderPopupRetailerCard({ fulfillment, selectedFulfillmentType, isSelected, selectedSizeAttributes, interactive, }: {
5
9
  fulfillment: IProductFulfillmentStore;
6
10
  selectedFulfillmentType: FulfillmentType;
7
11
  isSelected: boolean;
8
12
  selectedSizeAttributes: IProductSizeAttributes | null;
13
+ interactive?: boolean;
9
14
  }): HTMLElement;
10
15
  export declare function renderFulfillmentTabsContainer({ shippingFulfillments, onDemandFulfillments, shippingSelected, onDemandSelected, onTabClick, enableShippingFulfillment, enableOnDemandFulfillment, }: {
11
16
  shippingFulfillments: IProductFulfillmentStore[];
@@ -1,4 +1,4 @@
1
- import { BaseComponent } from '@/core/base-component.service';
1
+ import { BaseComponent, type IOnStoreChanged } from '@/core/base-component.service';
2
2
  import type { IProductComponent } from '@/interfaces/configs';
3
3
  export interface IAddToCartSectionComponentParams {
4
4
  productId: string;
@@ -8,10 +8,13 @@ export declare class ProductAddToCartSectionComponent extends BaseComponent<IAdd
8
8
  private qtyIncreaseButton;
9
9
  private qtyDecreaseButton;
10
10
  private quantityText;
11
+ private pendingFocusKey;
11
12
  get hostClasses(): string[];
12
13
  get hostAttributes(): Record<string, string>;
13
14
  constructor();
14
15
  private getProductId;
16
+ onStoreChanged(changes: IOnStoreChanged[]): boolean | undefined;
17
+ afterRender(): void;
15
18
  private getAvailableQuantity;
16
19
  private isFulfillmentClosed;
17
20
  private isButtonLoading;
@@ -19,6 +22,8 @@ export declare class ProductAddToCartSectionComponent extends BaseComponent<IAdd
19
22
  private handleAddToCart;
20
23
  private handleQuantityChange;
21
24
  private calculateTotalPrice;
25
+ private stepperFocusKey;
26
+ private createStepper;
22
27
  private createQuantityContainer;
23
28
  private getSizeAttributes;
24
29
  private openEngravingForm;
@@ -8,12 +8,18 @@ export declare class ProductDrawerComponent extends BaseComponent<IProductDrawer
8
8
  private isOpen;
9
9
  private contentContainer;
10
10
  private currentContentType;
11
+ private focusEntryFrame;
12
+ private readonly focusManager;
13
+ private readonly boundHandleKeydown;
11
14
  constructor();
15
+ private handleKeydown;
16
+ disconnected(): void;
12
17
  private getProductId;
13
18
  onStoreChanged(changes: IOnStoreChanged[]): boolean;
14
19
  private openWithContent;
15
20
  private open;
16
21
  private close;
22
+ private moveFocusIntoPanel;
17
23
  private updateDrawerState;
18
24
  protected template(): HTMLElement;
19
25
  }
@@ -36,5 +36,6 @@ export declare class ProductImageCarouselComponent extends BaseComponent<IImageC
36
36
  private updateTransform;
37
37
  private nextImage;
38
38
  private previousImage;
39
+ private mainImageLabel;
39
40
  protected template(): HTMLElement[];
40
41
  }
@@ -8,6 +8,7 @@ export declare class ProductRetailersCarouselComponent extends BaseComponent<IPr
8
8
  private listViewport;
9
9
  private listContainer;
10
10
  private retailerCards;
11
+ private pendingTabFocus;
11
12
  private isDragging;
12
13
  private hasMoved;
13
14
  private startX;
@@ -9,8 +9,13 @@ export interface IProductRetailersPopupListComponentParams {
9
9
  export declare class ProductRetailersPopupListComponent extends BaseComponent<IProductRetailersPopupListComponentParams, IProductComponent> {
10
10
  get hostClasses(): string[];
11
11
  private get isProductContext();
12
+ private productPath;
12
13
  beforeSetupStoreWatchers(): void;
14
+ private pendingTabFocus;
15
+ protected afterRender(): void;
13
16
  private onFulfillmentTabClick;
17
+ private announceSelectedFulfillment;
18
+ private announceFulfillmentTypeChange;
14
19
  private onRetailerCardClick;
15
20
  protected template(): HTMLElement[];
16
21
  }
@@ -19,10 +19,10 @@ export declare class ProductCommands extends BaseCommand {
19
19
  updateQuantity(productId: string, delta: number): Promise<void>;
20
20
  changeFulfillmentType(productId: string, newFulfillmentType: FulfillmentType): Promise<void>;
21
21
  removeProduct(productId: string): Promise<void>;
22
- openProductDrawer(productId: string, contentType: IProductDrawerContentConfig['type'], data?: Record<string, any>): Promise<void>;
22
+ openProductDrawer(productId: string, contentType: IProductDrawerContentConfig['type'], data?: Record<string, any>, trigger?: HTMLElement | null): Promise<void>;
23
23
  closeProductDrawer(productId: string): Promise<void>;
24
24
  rerenderAllProducts(): Promise<void>;
25
- addToCart(productId: string, params: AddItemParams): Promise<void>;
25
+ addToCart(productId: string, params: AddItemParams, trigger?: HTMLElement | null): Promise<void>;
26
26
  addPresaleToCart(productId: string, params: AddItemParams): Promise<void>;
27
27
  productDataForEventFromStore(identifier: string): IBaseProductEventData;
28
28
  }
@@ -8,6 +8,7 @@ export interface IPricePersonalizationSectionParams {
8
8
  priceClassName?: string;
9
9
  personalizeClassName?: string;
10
10
  personalizeText?: string;
11
+ productName?: string;
11
12
  onPersonalizeClick?: () => void;
12
13
  }
13
- export declare const createPricePersonalizationSection: ({ price, showPrice, hasPersonalization, showPersonalization, hasAddress, wrapperClassName, priceClassName, personalizeClassName, personalizeText, onPersonalizeClick, }: IPricePersonalizationSectionParams) => HTMLElement | null;
14
+ export declare const createPricePersonalizationSection: ({ price, showPrice, hasPersonalization, showPersonalization, hasAddress, wrapperClassName, priceClassName, personalizeClassName, personalizeText, productName, onPersonalizeClick, }: IPricePersonalizationSectionParams) => HTMLElement | null;
@@ -5,6 +5,7 @@ export interface IQuantitySelectorParams {
5
5
  maxQuantity: number;
6
6
  cardStyle: PLCCardStyle;
7
7
  disabled?: boolean;
8
+ productName?: string;
8
9
  onChange: (quantity: number) => void;
9
10
  }
10
- export declare const createQuantitySelector: ({ initialQuantity, minQuantity, maxQuantity, cardStyle, disabled, onChange, }: IQuantitySelectorParams) => HTMLElement;
11
+ export declare const createQuantitySelector: ({ initialQuantity, minQuantity, maxQuantity, cardStyle, disabled, productName, onChange, }: IQuantitySelectorParams) => HTMLElement;
@@ -7,6 +7,7 @@ export interface IProductListSizeSelectorParams {
7
7
  }
8
8
  export declare class ProductListSizeSelectorComponent extends BaseComponent<IProductListSizeSelectorParams> {
9
9
  private onOutsideClick;
10
+ private readonly uid;
10
11
  get hostClasses(): string[];
11
12
  protected disconnected?(): void;
12
13
  protected template(): HTMLElement[];
@@ -11,4 +11,5 @@ export declare function createFulfillmentFilter(params: ICreateFulfillmentFilter
11
11
  elements: HTMLElement[];
12
12
  chevronContainer: HTMLElement;
13
13
  fulfillmentList: HTMLElement;
14
+ headerButton: HTMLButtonElement;
14
15
  };
@@ -50,6 +50,7 @@ export declare class ProductListFiltersComponent extends BaseComponent<IProductL
50
50
  private isEngravingCurrentlyDisabled;
51
51
  private buildEngravingFilterElements;
52
52
  private isSameDayDeliveryCurrentlyDisabled;
53
+ private fulfillmentFilterHeaderButton;
53
54
  private toggleFulfillmentFilterCollapse;
54
55
  private buildFulfillmentFilterElements;
55
56
  private togglePriceFilterCollapse;
@@ -19,9 +19,11 @@ export declare class ProductListProductPreCartComponent extends BaseComponent<IP
19
19
  constructor();
20
20
  private getListConfig;
21
21
  protected connected?(): void;
22
+ private pendingViewFocus;
22
23
  private handleRetailersBack;
23
24
  private handleEngravingBack;
24
25
  private handleEngravingEdit;
26
+ protected afterRender(): void;
25
27
  protected disconnected?(): void;
26
28
  private getSelectedSize;
27
29
  onStoreWatch(changes: IOnStoreChanged[]): void;
@@ -22,7 +22,7 @@ export declare class ProductListCommands extends BaseCommand {
22
22
  getItemsPerPage(slug: string): number;
23
23
  updatePagination(navigation: INavigationResponse | undefined): IPagination;
24
24
  createInitialPagination(): IPagination;
25
- addToCart(slug: string, productId: string, params: AddItemParams): Promise<void>;
25
+ addToCart(slug: string, productId: string, params: AddItemParams, trigger?: HTMLElement | null): Promise<void>;
26
26
  selectSize(slug: string, productId: string, sizeId: string): Promise<void>;
27
27
  changeFulfillmentType: (slug: string, productId: string, newFulfillmentType: FulfillmentType) => Promise<void>;
28
28
  selectFulfillment: (slug: string, productId: string, selectedFulfillmentId: string) => Promise<void>;
@@ -31,7 +31,10 @@ export declare class ProductListComponent extends BaseComponent<IProductListComp
31
31
  private loadMoreProducts;
32
32
  private createCardsContainer;
33
33
  private renderLoadingState;
34
+ private hasRenderedProductsOnce;
35
+ private lastAnnouncedSentinelState;
34
36
  private renderProducts;
37
+ private announceResultCount;
35
38
  private appendNewProducts;
36
39
  private setupInfiniteScroll;
37
40
  private createScrollSentinel;
@@ -0,0 +1,19 @@
1
+ import type { IGlobalTheme } from '@/interfaces/configs';
2
+ import { type IRgbColor } from '@/utils/color-contrast';
3
+ interface IGuardedHost {
4
+ apply: () => void;
5
+ }
6
+ export declare class ContrastGuardService {
7
+ private readonly logger;
8
+ private readonly hosts;
9
+ private readonly reported;
10
+ static getInstance(): ContrastGuardService;
11
+ register(host: IGuardedHost): () => void;
12
+ refreshAll(): void;
13
+ computeOverrides(theme: Partial<IGlobalTheme> | undefined, surface: IRgbColor | null): Record<string, string>;
14
+ private token;
15
+ private correctAgainstAll;
16
+ private correct;
17
+ private report;
18
+ }
19
+ export {};
@@ -9,8 +9,8 @@ export interface IAlertComponentParams {
9
9
  export declare class AlertComponent extends BaseComponent<IAlertComponentParams, null> {
10
10
  private hideTimeout;
11
11
  private elements;
12
+ private lastAnnouncedKey;
12
13
  get hostClasses(): string[];
13
- get hostAttributes(): Record<string, string>;
14
14
  beforeSetupStoreWatchers(): void;
15
15
  afterRender(): void;
16
16
  onStoreWatch(changes: IOnStoreChanged[]): void;
@@ -5,7 +5,12 @@ export interface IButtonsOpenCartComponentParams {
5
5
  }
6
6
  export declare class ButtonsOpenCartComponent extends BaseComponent<IButtonsOpenCartComponentParams, null> {
7
7
  get hostClasses(): string[];
8
+ private buttonElement;
9
+ private badgeElement;
10
+ private unwatchQuantity;
8
11
  protected template(): HTMLElement[];
9
12
  protected afterRender(): void;
13
+ protected disconnected(): void;
10
14
  private setupCartBadge;
15
+ private applyCartQuantity;
11
16
  }
@@ -8,7 +8,14 @@ export declare class DrawerComponent extends BaseComponent {
8
8
  private currentContentType;
9
9
  private mode;
10
10
  private isTransitioning;
11
+ private readonly focusManager;
12
+ private releaseFocusTrap;
13
+ private focusEntryFrame;
14
+ private contentTeardownTimeout;
15
+ private previousBodyOverflow;
16
+ private pendingFocusKey;
11
17
  private readonly boundHandleKeydown;
18
+ private readonly boundHandleBackdropClick;
12
19
  constructor();
13
20
  disconnected(): void;
14
21
  onStoreChanged(changes: IOnStoreChanged[]): boolean;
@@ -16,6 +23,13 @@ export declare class DrawerComponent extends BaseComponent {
16
23
  private animateContentSwap;
17
24
  private open;
18
25
  private close;
26
+ private applyDialogSemantics;
27
+ private setupOverlaySemantics;
28
+ private teardownOverlaySemantics;
29
+ private moveFocusIntoDrawer;
30
+ private getTopLevelHost;
31
+ private scheduleContentTeardown;
32
+ private cancelPendingContentTeardown;
19
33
  private cleanupCurrentContent;
20
34
  private handleBackdropClick;
21
35
  private handleKeydown;
@@ -10,6 +10,7 @@ export interface IEngravingFormComponentParams {
10
10
  fee: number;
11
11
  location?: string;
12
12
  displayMode?: DisplayModeType;
13
+ returnFocusKey?: string;
13
14
  }
14
15
  export declare class EngravingFormComponent extends BaseComponent<IEngravingFormComponentParams, null> {
15
16
  get hostClasses(): string[];
@@ -26,6 +27,7 @@ export declare class EngravingFormComponent extends BaseComponent<IEngravingForm
26
27
  private getFulfillmentData;
27
28
  private retailersSection;
28
29
  private engravingLinesSection;
30
+ private returnToCart;
29
31
  private actionButtonsSection;
30
32
  protected template(): HTMLElement[];
31
33
  }
@@ -13,6 +13,7 @@ export declare class EngravingViewComponent extends BaseComponent<IEngravingView
13
13
  private engravingQuantityFee;
14
14
  private engravingLines;
15
15
  private isEngravingRequired;
16
+ private get editFocusKey();
16
17
  private handleEdit;
17
18
  private handleRemove;
18
19
  protected template(): HTMLElement | HTMLElement[] | string;
@@ -20,15 +20,20 @@ export interface IInputComponentParams {
20
20
  onValidation?: (isValid: boolean, errors: string[]) => void;
21
21
  onChange?: (value: string) => void;
22
22
  label?: string;
23
+ ariaLabel?: string;
23
24
  name: string;
24
25
  autocomplete?: boolean;
25
26
  disabled?: boolean;
26
27
  }
27
28
  export declare class InputComponent extends BaseComponent<IInputComponentParams, null> {
29
+ private readonly uid;
28
30
  get hostClasses(): string[];
31
+ private get controlId();
32
+ private get errorContainerId();
29
33
  private inputElement;
30
34
  private errorContainer;
31
35
  private validationTimeout;
36
+ private announceNextErrors;
32
37
  private handlePhoneKeydown;
33
38
  private formatPhoneNumber;
34
39
  private formatDate;
@@ -1,12 +1,20 @@
1
- import type { ComponentType } from '@/enums';
1
+ import { type ComponentType } from '@/enums';
2
2
  import { SafeHTMLElement } from '@/utils/dom-compat';
3
3
  export declare class LceElementComponent extends SafeHTMLElement {
4
4
  private _initialized;
5
5
  protected _container: ShadowRoot | null;
6
6
  private _wrappedComponentRerender;
7
+ private _contentType;
8
+ private _appliedContrastVariables;
9
+ private _unregisterContrastGuard;
7
10
  constructor();
8
11
  initialize(contentType: ComponentType, contentElement: HTMLElement): void;
9
12
  rerender(context?: string): void;
13
+ connectedCallback(): void;
14
+ disconnectedCallback(): void;
15
+ private applyContrastCorrections;
16
+ private resolveSurfaceColor;
17
+ private measureHostSurfaceColor;
10
18
  private applyBasicStyles;
11
19
  private isCSSStyleSheetSupported;
12
20
  private applyThemeStyles;
@@ -2,10 +2,12 @@ import { BaseCommand } from '@/core/command/base-command.service';
2
2
  import type { IDrawerContentConfig } from '@/core/store/interfaces/core.interface';
3
3
  export declare class UICommands extends BaseCommand {
4
4
  static getInstance(): UICommands;
5
- openDrawer({ mode, contentType, data, }: {
5
+ openDrawer({ mode, contentType, data, trigger, triggerFallback, }: {
6
6
  mode?: 'drawer' | 'modal';
7
7
  contentType: IDrawerContentConfig['type'];
8
8
  data?: Record<string, any>;
9
+ trigger?: HTMLElement | null;
10
+ triggerFallback?: () => HTMLElement | null;
9
11
  }): void;
10
12
  closeDrawer(): void;
11
13
  }
@@ -1,2 +1,2 @@
1
1
  import type { IconProps } from './icon.types';
2
- export declare const ArrowRightIcon: ({ width, height, className, color }: IconProps) => string;
2
+ export declare const ArrowRightIcon: ({ width, height, className, color, label }: IconProps) => string;
@@ -1,2 +1,2 @@
1
1
  import type { IconProps } from './icon.types';
2
- export declare const BagIcon: ({ width, height, className, color }: IconProps) => string;
2
+ export declare const BagIcon: ({ width, height, className, color, label }: IconProps) => string;
@@ -1,2 +1,2 @@
1
1
  import type { IconProps } from './icon.types';
2
- export declare const CheckIcon: ({ width, height, className, color }: IconProps) => string;
2
+ export declare const CheckIcon: ({ width, height, className, color, label }: IconProps) => string;
@@ -1,2 +1,2 @@
1
1
  import type { IconProps } from './icon.types';
2
- export declare const CheckboxIcon: ({ width, height, className, color }: IconProps) => string;
2
+ export declare const CheckboxIcon: ({ width, height, className, color, label }: IconProps) => string;
@@ -1,2 +1,2 @@
1
1
  import type { IconProps } from './icon.types';
2
- export declare const ChevronDownIcon: ({ width, height, className, color }: IconProps) => string;
2
+ export declare const ChevronDownIcon: ({ width, height, className, color, label }: IconProps) => string;
@@ -1,2 +1,2 @@
1
1
  import type { IconProps } from './icon.types';
2
- export declare const ChevronLeftIcon: ({ width, height, className, color }: IconProps) => string;
2
+ export declare const ChevronLeftIcon: ({ width, height, className, color, label }: IconProps) => string;
@@ -1,2 +1,2 @@
1
1
  import type { IconProps } from './icon.types';
2
- export declare const ChevronUpIcon: ({ width, height, className, color }: IconProps) => string;
2
+ export declare const ChevronUpIcon: ({ width, height, className, color, label }: IconProps) => string;
@@ -1,2 +1,2 @@
1
1
  import type { IconProps } from './icon.types';
2
- export declare const CloseIcon: ({ width, height, className, color }: IconProps) => string;
2
+ export declare const CloseIcon: ({ width, height, className, color, label }: IconProps) => string;
@@ -1,2 +1,2 @@
1
1
  import type { IconProps } from './icon.types';
2
- export declare const ErrorInfoIcon: ({ width, height, className, color }: IconProps) => string;
2
+ export declare const ErrorInfoIcon: ({ width, height, className, color, label }: IconProps) => string;