Skip to content

Commit 232e28c

Browse files
committed
implement targets
1 parent e1389f4 commit 232e28c

File tree

10 files changed

+181
-0
lines changed

10 files changed

+181
-0
lines changed

.changeset/proud-paths-listen.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@shopify/ui-extensions': minor
3+
---
4+
5+
Adds register details targets
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import {render} from 'preact';
2+
3+
export default async () => {
4+
render(<Extension />, document.body);
5+
};
6+
7+
const Extension = () => {
8+
return <s-button onClick={() => shopify.action.presentModal()} />;
9+
};
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
import {render} from 'preact';
2+
3+
export default async () => {
4+
render(<Extension />, document.body);
5+
};
6+
7+
const Extension = () => {
8+
return (
9+
<s-page heading="Register Details Action">
10+
<s-scroll-box>
11+
<s-text>
12+
This is a action extension on the register details screen
13+
</s-text>
14+
</s-scroll-box>
15+
</s-page>
16+
);
17+
};
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
import {render} from 'preact';
2+
3+
export default async () => {
4+
render(<Extension />, document.body);
5+
};
6+
7+
const Extension = () => {
8+
return (
9+
<s-pos-block>
10+
<s-text>This is a block extension on the register details screen</s-text>
11+
<s-button
12+
slot="secondary-actions"
13+
onClick={() => shopify.cashDrawer.open()}
14+
>
15+
Open drawer
16+
</s-button>
17+
</s-pos-block>
18+
);
19+
};
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
import type {ReferenceEntityTemplateSchema} from '@shopify/generate-docs';
2+
import {generateCodeBlock} from '../helpers/generateCodeBlock';
3+
import {ExtensionTargetType} from '../types/ExtensionTargetType';
4+
5+
const data: ReferenceEntityTemplateSchema = {
6+
name: ExtensionTargetType.PosRegisterDetailsActionMenuItemRender,
7+
description:
8+
'A static extension target that renders as a menu item on the register details screen',
9+
defaultExample: {
10+
codeblock: generateCodeBlock(
11+
'Menu item',
12+
'targets',
13+
'pos-register-details-action-menu-item',
14+
),
15+
},
16+
category: 'Targets',
17+
subCategory: 'Register details',
18+
isVisualComponent: false,
19+
related: [
20+
{
21+
name: ExtensionTargetType.PosRegisterDetailsActionRender,
22+
url: '/docs/api/pos-ui-extensions/targets/register-details/pos-register-details-action-render',
23+
},
24+
{
25+
name: ExtensionTargetType.PosRegisterDetailsBlockRender,
26+
url: '/docs/api/pos-ui-extensions/targets/register-details/pos-register-details-block-render',
27+
},
28+
],
29+
type: 'Target',
30+
};
31+
export default data;
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
import type {ReferenceEntityTemplateSchema} from '@shopify/generate-docs';
2+
import {generateCodeBlock} from '../helpers/generateCodeBlock';
3+
import {ExtensionTargetType} from '../types/ExtensionTargetType';
4+
5+
const data: ReferenceEntityTemplateSchema = {
6+
name: ExtensionTargetType.PosRegisterDetailsActionRender,
7+
description:
8+
'A full-screen extension target that renders when a `pos.register-details.action.menu-item.render` target calls for it',
9+
defaultExample: {
10+
codeblock: generateCodeBlock(
11+
'Action',
12+
'targets',
13+
'pos-register-details-action',
14+
),
15+
},
16+
category: 'Targets',
17+
subCategory: 'Register details',
18+
isVisualComponent: false,
19+
related: [
20+
{
21+
name: ExtensionTargetType.PosRegisterDetailsActionMenuItemRender,
22+
url: '/docs/api/pos-ui-extensions/targets/register-details/pos-register-details-action-menu-item-render',
23+
},
24+
{
25+
name: ExtensionTargetType.PosRegisterDetailsBlockRender,
26+
url: '/docs/api/pos-ui-extensions/targets/register-details/pos-register-details-block-render',
27+
},
28+
],
29+
type: 'Target',
30+
};
31+
export default data;
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
import type {ReferenceEntityTemplateSchema} from '@shopify/generate-docs';
2+
import {generateCodeBlock} from '../helpers/generateCodeBlock';
3+
import {ExtensionTargetType} from '../types/ExtensionTargetType';
4+
5+
const data: ReferenceEntityTemplateSchema = {
6+
name: ExtensionTargetType.PosRegisterDetailsBlockRender,
7+
description: 'Renders a custom section within register details screen',
8+
defaultExample: {
9+
codeblock: generateCodeBlock(
10+
'Block',
11+
'targets',
12+
'pos-register-details-block-render',
13+
),
14+
},
15+
category: 'Targets',
16+
subCategory: 'Register details',
17+
isVisualComponent: false,
18+
related: [
19+
{
20+
name: ExtensionTargetType.PosRegisterDetailsActionMenuItemRender,
21+
url: '/docs/api/pos-ui-extensions/targets/register-details/pos-register-details-action-menu-item-render',
22+
},
23+
{
24+
name: ExtensionTargetType.PosRegisterDetailsActionRender,
25+
url: '/docs/api/pos-ui-extensions/targets/register-details/pos-register-details-action-render',
26+
},
27+
],
28+
type: 'Target',
29+
};
30+
export default data;

packages/ui-extensions/docs/surfaces/point-of-sale/reference/types/ExtensionTargetType.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,9 @@ export enum ExtensionTargetType {
2626
PosReceiptFooterBlockRender = 'pos.receipt-footer.block.render',
2727
PosCartLineItemDetailsActionMenuItemRender = 'pos.cart.line-item-details.action.menu-item.render',
2828
PosCartLineItemDetailsActionRender = 'pos.cart.line-item-details.action.render',
29+
PosRegisterDetailsActionMenuItemRender = 'pos.register-details.action.menu-item.render',
30+
PosRegisterDetailsActionRender = 'pos.register-details.action.render',
31+
PosRegisterDetailsBlockRender = 'pos.register-details.block.render',
2932
}
3033

3134
export enum TargetLink {
@@ -56,4 +59,7 @@ export enum TargetLink {
5659
PosReceiptFooterBlockRender = '[pos.receipt-footer.block.render](/docs/api/pos-ui-extensions/targets/receipts/pos-receipt-footer-block-render)',
5760
PosCartLineItemDetailsActionMenuItemRender = '[pos.cart.line-item-details.action.menu-item.render](/docs/api/pos-ui-extensions/targets/cart-details/pos-cart-line-item-details-action-menu-item-render)',
5861
PosCartLineItemDetailsActionRender = '[pos.cart.line-item-details.action.render](/docs/api/pos-ui-extensions/targets/cart-details/pos-cart-line-item-details-action-render)',
62+
PosRegisterDetailsActionMenuItemRender = '[pos.register-details.action.menu-item.render](/docs/api/pos-ui-extensions/targets/register-details/pos-register-details-action-menu-item-render)',
63+
PosRegisterDetailsActionRender = '[pos.register-details.action.render](/docs/api/pos-ui-extensions/targets/register-details/pos-register-details-action-render)',
64+
PosRegisterDetailsBlockRender = '[pos.register-details.block.render](/docs/api/pos-ui-extensions/targets/register-details/pos-register-details-block-render)',
5965
}

packages/ui-extensions/docs/surfaces/point-of-sale/staticPages/targets-overview.doc.ts

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,14 @@ See [an example](targets/action/pos-cart-line-item-details-action-render).
112112
`,
113113
image: 'cart-lineitem-action.png',
114114
},
115+
{
116+
title: 'Register details',
117+
description: `
118+
Displays an action target modally when a menu item is tapped on the register details screen.
119+
120+
See [an example](targets/action/pos-register-details-action-render).
121+
`,
122+
},
115123
],
116124
},
117125
{
@@ -202,6 +210,14 @@ See [an example](targets/block/pos-receipt-footer-block-render).
202210
`,
203211
image: 'posreceipt-footer.png',
204212
},
213+
{
214+
title: 'Register details',
215+
description: `
216+
Renders a custom section within the native register details screen.
217+
218+
See [an example](targets/block/pos-register-details-block-render).
219+
`,
220+
},
205221
],
206222
},
207223
],

packages/ui-extensions/src/surfaces/point-of-sale/extension-targets.ts

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import type {
1919
ProductApi,
2020
OrderApi,
2121
StorageApi,
22+
CashDrawerApi,
2223
} from './api';
2324
import type {ActionExtensionComponents} from './components/targets/ActionExtensionComponents';
2425
import type {BlockExtensionComponents} from './components/targets/BlockExtensionComponents';
@@ -191,6 +192,22 @@ export interface RenderExtensionTargets {
191192
{[key: string]: any} & StorageApi & TransactionCompleteWithReprintData,
192193
ReceiptComponents
193194
>;
195+
'pos.register-details.action.menu-item.render': RenderExtension<
196+
StandardApi<'pos.register-details.action.menu-item.render'> &
197+
ActionApi &
198+
CashDrawerApi,
199+
ActionExtensionComponents
200+
>;
201+
'pos.register-details.action.render': RenderExtension<
202+
ActionTargetApi<'pos.register-details.action.render'> & CashDrawerApi,
203+
BasicComponents
204+
>;
205+
'pos.register-details.block.render': RenderExtension<
206+
StandardApi<'pos.register-details.block.render'> &
207+
ActionApi &
208+
CashDrawerApi,
209+
BlockExtensionComponents
210+
>;
194211
}
195212

196213
export interface ExtensionTargets

0 commit comments

Comments
 (0)