From 3248efcb3971279c40d3fb8477c73e22df9857c9 Mon Sep 17 00:00:00 2001 From: James Calverley Date: Wed, 17 Dec 2025 14:14:35 -0500 Subject: [PATCH] add rendermode field to pickup location item api --- .changeset/petite-foxes-pay.md | 5 +++++ .../checkout/api/pickup/pickup-location-item.ts | 15 +++++++++++++++ .../preact/pickup-location-option-target.ts | 6 +++++- .../tests/pickup-location-option-target.test.tsx | 3 +++ 4 files changed, 28 insertions(+), 1 deletion(-) create mode 100644 .changeset/petite-foxes-pay.md diff --git a/.changeset/petite-foxes-pay.md b/.changeset/petite-foxes-pay.md new file mode 100644 index 0000000000..71b9d5e09d --- /dev/null +++ b/.changeset/petite-foxes-pay.md @@ -0,0 +1,5 @@ +--- +'@shopify/ui-extensions': minor +--- + +add renderMode field to pickup location item diff --git a/packages/ui-extensions/src/surfaces/checkout/api/pickup/pickup-location-item.ts b/packages/ui-extensions/src/surfaces/checkout/api/pickup/pickup-location-item.ts index 366f1133d5..7b88550a54 100644 --- a/packages/ui-extensions/src/surfaces/checkout/api/pickup/pickup-location-item.ts +++ b/packages/ui-extensions/src/surfaces/checkout/api/pickup/pickup-location-item.ts @@ -11,4 +11,19 @@ export interface PickupLocationItemApi { * Whether the pickup location is currently selected. */ isTargetSelected: SubscribableSignalLike; + + /** + * The render mode of the pickup location option. + */ + renderMode: PickupLocationOptionItemRenderMode; +} + +/** + * The render mode of a pickup location option item. + */ +export interface PickupLocationOptionItemRenderMode { + /** + * Whether the pickup location option is rendered in an overlay. + */ + overlay: boolean; } diff --git a/packages/ui-extensions/src/surfaces/checkout/preact/pickup-location-option-target.ts b/packages/ui-extensions/src/surfaces/checkout/preact/pickup-location-option-target.ts index dc7089b97c..f497cd36fe 100644 --- a/packages/ui-extensions/src/surfaces/checkout/preact/pickup-location-option-target.ts +++ b/packages/ui-extensions/src/surfaces/checkout/preact/pickup-location-option-target.ts @@ -1,6 +1,7 @@ import {useMemo} from 'preact/hooks'; import type {PickupLocationOption} from '../api/standard/standard'; +import {PickupLocationOptionItemRenderMode} from '../api/pickup/pickup-location-item'; import {ExtensionHasNoTargetError} from './errors'; import {useApi} from './api'; @@ -14,6 +15,7 @@ import {useSubscription} from './subscription'; export function usePickupLocationOptionTarget(): { pickupLocationOptionTarget: PickupLocationOption; isTargetSelected: boolean; + renderMode: PickupLocationOptionItemRenderMode; } { const api = useApi<'purchase.checkout.pickup-location-option-item.render-after'>(); @@ -26,13 +28,15 @@ export function usePickupLocationOptionTarget(): { const pickupLocationOptionTarget = useSubscription(api.target); const isTargetSelected = useSubscription(api.isTargetSelected); + const renderMode = api.renderMode; const pickupLocationOption = useMemo(() => { return { pickupLocationOptionTarget, isTargetSelected, + renderMode, }; - }, [pickupLocationOptionTarget, isTargetSelected]); + }, [pickupLocationOptionTarget, isTargetSelected, renderMode]); return pickupLocationOption; } diff --git a/packages/ui-extensions/src/surfaces/checkout/preact/tests/pickup-location-option-target.test.tsx b/packages/ui-extensions/src/surfaces/checkout/preact/tests/pickup-location-option-target.test.tsx index d8c2e3388b..0c722c9e07 100644 --- a/packages/ui-extensions/src/surfaces/checkout/preact/tests/pickup-location-option-target.test.tsx +++ b/packages/ui-extensions/src/surfaces/checkout/preact/tests/pickup-location-option-target.test.tsx @@ -59,6 +59,7 @@ describe('usePickupLocationOptionTarget', () => { setupGlobalShopifyMock({ extension: createMockExtension(target), target: createMockSubscribableSignalLike(pickupLocationOption), + renderMode: {overlay: false}, }); expect(() => { @@ -77,6 +78,7 @@ describe('usePickupLocationOptionTarget', () => { extension: createMockExtension(target), target: createMockSubscribableSignalLike(pickupLocationOption), isTargetSelected: createMockSubscribableSignalLike(true), + renderMode: {overlay: false}, }); const {value} = mount.hook(() => usePickupLocationOptionTarget()); @@ -84,6 +86,7 @@ describe('usePickupLocationOptionTarget', () => { expect(value).toStrictEqual({ pickupLocationOptionTarget: pickupLocationOption, isTargetSelected: true, + renderMode: {overlay: false}, }); }); });