@mj-biz-apps/orders-ng 5.20.0 → 5.22.0
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.
- package/dist/checkout-element/main.js +1396 -134
- package/dist/lib/checkout-widget/checkout-account.d.ts +35 -0
- package/dist/lib/checkout-widget/checkout-account.d.ts.map +1 -0
- package/dist/lib/checkout-widget/checkout-account.js +67 -0
- package/dist/lib/checkout-widget/checkout-account.js.map +1 -0
- package/dist/lib/checkout-widget/checkout-events.d.ts +52 -0
- package/dist/lib/checkout-widget/checkout-events.d.ts.map +1 -0
- package/dist/lib/checkout-widget/checkout-events.js +39 -0
- package/dist/lib/checkout-widget/checkout-events.js.map +1 -0
- package/dist/lib/checkout-widget/checkout-public-host.component.d.ts +80 -0
- package/dist/lib/checkout-widget/checkout-public-host.component.d.ts.map +1 -1
- package/dist/lib/checkout-widget/checkout-public-host.component.js +429 -17
- package/dist/lib/checkout-widget/checkout-public-host.component.js.map +1 -1
- package/dist/lib/checkout-widget/checkout-widget.component.d.ts +18 -1
- package/dist/lib/checkout-widget/checkout-widget.component.d.ts.map +1 -1
- package/dist/lib/checkout-widget/checkout-widget.component.js +160 -23
- package/dist/lib/checkout-widget/checkout-widget.component.js.map +1 -1
- package/dist/lib/form-panels/document-forms.module.d.ts +19 -17
- package/dist/lib/form-panels/document-forms.module.d.ts.map +1 -1
- package/dist/lib/form-panels/document-forms.module.js +8 -0
- package/dist/lib/form-panels/document-forms.module.js.map +1 -1
- package/dist/lib/form-panels/order-access-overrides.panel.d.ts +41 -0
- package/dist/lib/form-panels/order-access-overrides.panel.d.ts.map +1 -0
- package/dist/lib/form-panels/order-access-overrides.panel.js +366 -0
- package/dist/lib/form-panels/order-access-overrides.panel.js.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsOrdersCheckoutSession/mjbizappsorderscheckoutsession.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/mjBizAppsOrdersCheckoutSession/mjbizappsorderscheckoutsession.form.component.js +24 -5
- package/dist/lib/generated/Entities/mjBizAppsOrdersCheckoutSession/mjbizappsorderscheckoutsession.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/mjBizAppsOrdersCheckoutSessionStep/mjbizappsorderscheckoutsessionstep.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/mjBizAppsOrdersCheckoutSessionStep/mjbizappsorderscheckoutsessionstep.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsOrdersCheckoutSessionStep/mjbizappsorderscheckoutsessionstep.form.component.js +77 -0
- package/dist/lib/generated/Entities/mjBizAppsOrdersCheckoutSessionStep/mjbizappsorderscheckoutsessionstep.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsOrdersEntitlementAccessOverride/mjbizappsordersentitlementaccessoverride.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/mjBizAppsOrdersEntitlementAccessOverride/mjbizappsordersentitlementaccessoverride.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsOrdersEntitlementAccessOverride/mjbizappsordersentitlementaccessoverride.form.component.js +79 -0
- package/dist/lib/generated/Entities/mjBizAppsOrdersEntitlementAccessOverride/mjbizappsordersentitlementaccessoverride.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsOrdersEntitlementGrant/mjbizappsordersentitlementgrant.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/mjBizAppsOrdersEntitlementGrant/mjbizappsordersentitlementgrant.form.component.js +25 -6
- package/dist/lib/generated/Entities/mjBizAppsOrdersEntitlementGrant/mjbizappsordersentitlementgrant.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/mjBizAppsOrdersOrderCheckoutAnswer/mjbizappsordersordercheckoutanswer.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/mjBizAppsOrdersOrderCheckoutAnswer/mjbizappsordersordercheckoutanswer.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsOrdersOrderCheckoutAnswer/mjbizappsordersordercheckoutanswer.form.component.js +65 -0
- package/dist/lib/generated/Entities/mjBizAppsOrdersOrderCheckoutAnswer/mjbizappsordersordercheckoutanswer.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsOrdersOrderHeader/mjbizappsordersorderheader.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/mjBizAppsOrdersOrderHeader/mjbizappsordersorderheader.form.component.js +70 -16
- package/dist/lib/generated/Entities/mjBizAppsOrdersOrderHeader/mjbizappsordersorderheader.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/mjBizAppsOrdersOrderLine/mjbizappsordersorderline.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/mjBizAppsOrdersOrderLine/mjbizappsordersorderline.form.component.js +34 -16
- package/dist/lib/generated/Entities/mjBizAppsOrdersOrderLine/mjbizappsordersorderline.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/mjBizAppsOrdersOrderLineChoice/mjbizappsordersorderlinechoice.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/mjBizAppsOrdersOrderLineChoice/mjbizappsordersorderlinechoice.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsOrdersOrderLineChoice/mjbizappsordersorderlinechoice.form.component.js +65 -0
- package/dist/lib/generated/Entities/mjBizAppsOrdersOrderLineChoice/mjbizappsordersorderlinechoice.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsOrdersOutboundDelivery/mjbizappsordersoutbounddelivery.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/mjBizAppsOrdersOutboundDelivery/mjbizappsordersoutbounddelivery.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsOrdersOutboundDelivery/mjbizappsordersoutbounddelivery.form.component.js +77 -0
- package/dist/lib/generated/Entities/mjBizAppsOrdersOutboundDelivery/mjbizappsordersoutbounddelivery.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsOrdersOutboundEvent/mjbizappsordersoutboundevent.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/mjBizAppsOrdersOutboundEvent/mjbizappsordersoutboundevent.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsOrdersOutboundEvent/mjbizappsordersoutboundevent.form.component.js +84 -0
- package/dist/lib/generated/Entities/mjBizAppsOrdersOutboundEvent/mjbizappsordersoutboundevent.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsOrdersProductEntitlement/mjbizappsordersproductentitlement.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/mjBizAppsOrdersProductEntitlement/mjbizappsordersproductentitlement.form.component.js +20 -10
- package/dist/lib/generated/Entities/mjBizAppsOrdersProductEntitlement/mjbizappsordersproductentitlement.form.component.js.map +1 -1
- package/dist/lib/generated/generated-forms.module.d.ts +88 -82
- package/dist/lib/generated/generated-forms.module.d.ts.map +1 -1
- package/dist/lib/generated/generated-forms.module.js +22 -4
- package/dist/lib/generated/generated-forms.module.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The post-payment account step as the public checkout shows it (#292). Pure, so it can be tested
|
|
3
|
+
* without the host component.
|
|
4
|
+
*
|
|
5
|
+
* `/complete` answers with `AccountStep: true` when a host registered an account step; the widget
|
|
6
|
+
* then asks `/checkout/account` for it. `Created` with `CanSetPassword` shows a password form;
|
|
7
|
+
* `Exists` and `Failed` show a message, and `Failed` offers to try again. No `Account` means no
|
|
8
|
+
* step, and the checkout behaves as it always has.
|
|
9
|
+
*/
|
|
10
|
+
export type CheckoutAccountOutcome = 'Created' | 'Exists' | 'Failed';
|
|
11
|
+
export interface CheckoutAccountView {
|
|
12
|
+
Outcome: CheckoutAccountOutcome;
|
|
13
|
+
Message?: string;
|
|
14
|
+
CanSetPassword: boolean;
|
|
15
|
+
/** The host will e-mail a link the buyer must use before the account signs in. */
|
|
16
|
+
VerificationRequired?: boolean;
|
|
17
|
+
}
|
|
18
|
+
/** Shown when the account step could not be reached or did not answer. */
|
|
19
|
+
export declare const ACCOUNT_STEP_FAILED: CheckoutAccountView;
|
|
20
|
+
/** The account the server reported, or null when the response carries none (no step registered). */
|
|
21
|
+
export declare function ReadCheckoutAccount(raw: unknown): CheckoutAccountView | null;
|
|
22
|
+
/** The note shown with the password form when the host will send a verification link. */
|
|
23
|
+
export declare function VerificationNote(account: CheckoutAccountView | null): string | null;
|
|
24
|
+
/** The line shown under the confirmation when no password form is showing. */
|
|
25
|
+
export declare function AccountMessage(account: CheckoutAccountView, passwordSet: boolean): string | null;
|
|
26
|
+
/** Why the two entries cannot be sent, or null when they can. The host's own policy is checked by the server. */
|
|
27
|
+
export declare function CheckPasswordEntry(password: string, confirmation: string): string | null;
|
|
28
|
+
/**
|
|
29
|
+
* Whether the checkout may leave for its redirect: not while the buyer can still set a password or
|
|
30
|
+
* try a failed step again, unless the buyer chose to leave it.
|
|
31
|
+
*/
|
|
32
|
+
export declare function MayRedirect(account: CheckoutAccountView | null, dismissed?: boolean): boolean;
|
|
33
|
+
/** True once nothing about the account step is left to do, so a reload need not come back to it. */
|
|
34
|
+
export declare function IsAccountSettled(account: CheckoutAccountView | null): boolean;
|
|
35
|
+
//# sourceMappingURL=checkout-account.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"checkout-account.d.ts","sourceRoot":"","sources":["../../../src/lib/checkout-widget/checkout-account.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,MAAM,MAAM,sBAAsB,GAAG,SAAS,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAErE,MAAM,WAAW,mBAAmB;IAChC,OAAO,EAAE,sBAAsB,CAAC;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,OAAO,CAAC;IACxB,kFAAkF;IAClF,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAClC;AAED,0EAA0E;AAC1E,eAAO,MAAM,mBAAmB,EAAE,mBAAkE,CAAC;AAErG,oGAAoG;AACpG,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,OAAO,GAAG,mBAAmB,GAAG,IAAI,CAU5E;AAID,yFAAyF;AACzF,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,mBAAmB,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CAEnF;AAED,8EAA8E;AAC9E,wBAAgB,cAAc,CAAC,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAUhG;AAED,iHAAiH;AACjH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAIxF;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,mBAAmB,GAAG,IAAI,EAAE,SAAS,UAAQ,GAAG,OAAO,CAG3F;AAED,oGAAoG;AACpG,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,mBAAmB,GAAG,IAAI,GAAG,OAAO,CAE7E"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The post-payment account step as the public checkout shows it (#292). Pure, so it can be tested
|
|
3
|
+
* without the host component.
|
|
4
|
+
*
|
|
5
|
+
* `/complete` answers with `AccountStep: true` when a host registered an account step; the widget
|
|
6
|
+
* then asks `/checkout/account` for it. `Created` with `CanSetPassword` shows a password form;
|
|
7
|
+
* `Exists` and `Failed` show a message, and `Failed` offers to try again. No `Account` means no
|
|
8
|
+
* step, and the checkout behaves as it always has.
|
|
9
|
+
*/
|
|
10
|
+
/** Shown when the account step could not be reached or did not answer. */
|
|
11
|
+
export const ACCOUNT_STEP_FAILED = { Outcome: 'Failed', CanSetPassword: false };
|
|
12
|
+
/** The account the server reported, or null when the response carries none (no step registered). */
|
|
13
|
+
export function ReadCheckoutAccount(raw) {
|
|
14
|
+
if (!raw || typeof raw !== 'object')
|
|
15
|
+
return null;
|
|
16
|
+
const a = raw;
|
|
17
|
+
if (a['Outcome'] !== 'Created' && a['Outcome'] !== 'Exists' && a['Outcome'] !== 'Failed')
|
|
18
|
+
return null;
|
|
19
|
+
return {
|
|
20
|
+
Outcome: a['Outcome'],
|
|
21
|
+
Message: typeof a['Message'] === 'string' && a['Message'] ? a['Message'] : undefined,
|
|
22
|
+
CanSetPassword: a['CanSetPassword'] === true,
|
|
23
|
+
VerificationRequired: a['Outcome'] === 'Created' && a['VerificationRequired'] === true,
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
const VERIFY_NOTE = 'We are sending a link to your e-mail. Use it to verify your account before you sign in.';
|
|
27
|
+
/** The note shown with the password form when the host will send a verification link. */
|
|
28
|
+
export function VerificationNote(account) {
|
|
29
|
+
return account?.VerificationRequired ? VERIFY_NOTE : null;
|
|
30
|
+
}
|
|
31
|
+
/** The line shown under the confirmation when no password form is showing. */
|
|
32
|
+
export function AccountMessage(account, passwordSet) {
|
|
33
|
+
if (passwordSet) {
|
|
34
|
+
return account.VerificationRequired
|
|
35
|
+
? 'Your password is set. Check your e-mail for the link to verify your account, then sign in with the e-mail you used here.'
|
|
36
|
+
: 'Your password is set. You can now sign in with the e-mail you used here.';
|
|
37
|
+
}
|
|
38
|
+
if (account.Message)
|
|
39
|
+
return account.Message;
|
|
40
|
+
if (account.Outcome === 'Exists')
|
|
41
|
+
return 'You already have an account with this e-mail. Sign in, or reset your password if you have forgotten it.';
|
|
42
|
+
if (account.Outcome === 'Failed')
|
|
43
|
+
return 'We could not set up your account just now. Your order is confirmed. Please try again in a moment.';
|
|
44
|
+
return VerificationNote(account);
|
|
45
|
+
}
|
|
46
|
+
/** Why the two entries cannot be sent, or null when they can. The host's own policy is checked by the server. */
|
|
47
|
+
export function CheckPasswordEntry(password, confirmation) {
|
|
48
|
+
if (!password)
|
|
49
|
+
return 'Please enter a password.';
|
|
50
|
+
if (password !== confirmation)
|
|
51
|
+
return 'The two passwords do not match.';
|
|
52
|
+
return null;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Whether the checkout may leave for its redirect: not while the buyer can still set a password or
|
|
56
|
+
* try a failed step again, unless the buyer chose to leave it.
|
|
57
|
+
*/
|
|
58
|
+
export function MayRedirect(account, dismissed = false) {
|
|
59
|
+
if (dismissed || !account)
|
|
60
|
+
return true;
|
|
61
|
+
return !account.CanSetPassword && account.Outcome !== 'Failed';
|
|
62
|
+
}
|
|
63
|
+
/** True once nothing about the account step is left to do, so a reload need not come back to it. */
|
|
64
|
+
export function IsAccountSettled(account) {
|
|
65
|
+
return !account || (account.Outcome !== 'Failed' && !account.CanSetPassword);
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=checkout-account.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"checkout-account.js","sourceRoot":"","sources":["../../../src/lib/checkout-widget/checkout-account.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAYH,0EAA0E;AAC1E,MAAM,CAAC,MAAM,mBAAmB,GAAwB,EAAE,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC;AAErG,oGAAoG;AACpG,MAAM,UAAU,mBAAmB,CAAC,GAAY;IAC5C,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IACjD,MAAM,CAAC,GAAG,GAA8B,CAAC;IACzC,IAAI,CAAC,CAAC,SAAS,CAAC,KAAK,SAAS,IAAI,CAAC,CAAC,SAAS,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,SAAS,CAAC,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IACtG,OAAO;QACH,OAAO,EAAE,CAAC,CAAC,SAAS,CAAC;QACrB,OAAO,EAAE,OAAO,CAAC,CAAC,SAAS,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS;QACpF,cAAc,EAAE,CAAC,CAAC,gBAAgB,CAAC,KAAK,IAAI;QAC5C,oBAAoB,EAAE,CAAC,CAAC,SAAS,CAAC,KAAK,SAAS,IAAI,CAAC,CAAC,sBAAsB,CAAC,KAAK,IAAI;KACzF,CAAC;AACN,CAAC;AAED,MAAM,WAAW,GAAG,yFAAyF,CAAC;AAE9G,yFAAyF;AACzF,MAAM,UAAU,gBAAgB,CAAC,OAAmC;IAChE,OAAO,OAAO,EAAE,oBAAoB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC;AAC9D,CAAC;AAED,8EAA8E;AAC9E,MAAM,UAAU,cAAc,CAAC,OAA4B,EAAE,WAAoB;IAC7E,IAAI,WAAW,EAAE,CAAC;QACd,OAAO,OAAO,CAAC,oBAAoB;YAC/B,CAAC,CAAC,0HAA0H;YAC5H,CAAC,CAAC,0EAA0E,CAAC;IACrF,CAAC;IACD,IAAI,OAAO,CAAC,OAAO;QAAE,OAAO,OAAO,CAAC,OAAO,CAAC;IAC5C,IAAI,OAAO,CAAC,OAAO,KAAK,QAAQ;QAAE,OAAO,yGAAyG,CAAC;IACnJ,IAAI,OAAO,CAAC,OAAO,KAAK,QAAQ;QAAE,OAAO,mGAAmG,CAAC;IAC7I,OAAO,gBAAgB,CAAC,OAAO,CAAC,CAAC;AACrC,CAAC;AAED,iHAAiH;AACjH,MAAM,UAAU,kBAAkB,CAAC,QAAgB,EAAE,YAAoB;IACrE,IAAI,CAAC,QAAQ;QAAE,OAAO,0BAA0B,CAAC;IACjD,IAAI,QAAQ,KAAK,YAAY;QAAE,OAAO,iCAAiC,CAAC;IACxE,OAAO,IAAI,CAAC;AAChB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,OAAmC,EAAE,SAAS,GAAG,KAAK;IAC9E,IAAI,SAAS,IAAI,CAAC,OAAO;QAAE,OAAO,IAAI,CAAC;IACvC,OAAO,CAAC,OAAO,CAAC,cAAc,IAAI,OAAO,CAAC,OAAO,KAAK,QAAQ,CAAC;AACnE,CAAC;AAED,oGAAoG;AACpG,MAAM,UAAU,gBAAgB,CAAC,OAAmC;IAChE,OAAO,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,KAAK,QAAQ,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;AACjF,CAAC"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The DOM events the public checkout element dispatches for its host page (#294).
|
|
3
|
+
*
|
|
4
|
+
* Host pages track a checkout funnel — Google Tag Manager, GA4, their own scripts — by listening on
|
|
5
|
+
* `<mj-orders-checkout>` or on `document`. Every event bubbles and is `composed`, so it crosses a
|
|
6
|
+
* shadow root. These builders are the element's public contract, kept pure so it is testable.
|
|
7
|
+
*
|
|
8
|
+
* NO PERSONAL DATA IN ANY DETAIL. The events reach every script on the host page, so no detail
|
|
9
|
+
* carries the buyer's e-mail, name or anything they typed beyond the promotion code.
|
|
10
|
+
*/
|
|
11
|
+
/** The element's state, as `checkout-state-change` reports it. */
|
|
12
|
+
export type CheckoutElementState = 'LOADING' | 'CHECKOUT' | 'PROCESSING' | 'PASSWORD' | 'SUCCESS' | 'ERROR';
|
|
13
|
+
export declare const CHECKOUT_STATE_CHANGE_EVENT = "checkout-state-change";
|
|
14
|
+
export declare const CHECKOUT_COMPLETE_EVENT = "checkout-complete";
|
|
15
|
+
export declare const CHECKOUT_ERROR_EVENT = "checkout-error";
|
|
16
|
+
/** The buyer pressed Cancel; the form has been reset. */
|
|
17
|
+
export declare const CHECKOUT_CANCEL_EVENT = "checkout-cancel";
|
|
18
|
+
/** The checkout asks its container to close, e.g. a modal on the host page. Sent with Cancel. */
|
|
19
|
+
export declare const CHECKOUT_CLOSE_EVENT = "checkout-close";
|
|
20
|
+
/** Dispatched ON the element by an embedding host to return it to a blank form. */
|
|
21
|
+
export declare const CHECKOUT_RESET_REQUEST_EVENT = "checkout-reset";
|
|
22
|
+
/** The element refused a reset because a payment is in flight. */
|
|
23
|
+
export declare const CHECKOUT_RESET_REFUSED_EVENT = "checkout-reset-refused";
|
|
24
|
+
export interface CheckoutStateChangeDetail {
|
|
25
|
+
state: CheckoutElementState;
|
|
26
|
+
}
|
|
27
|
+
/** The `checkout-complete` detail. Shaped for GA4: `amount` in major units, `currency` upper-case. */
|
|
28
|
+
export interface CheckoutCompleteDetail {
|
|
29
|
+
sessionId: string;
|
|
30
|
+
productName: string | null;
|
|
31
|
+
productId: string | null;
|
|
32
|
+
amount: number | null;
|
|
33
|
+
currency: string | null;
|
|
34
|
+
coupon: string | null;
|
|
35
|
+
}
|
|
36
|
+
export interface CheckoutErrorDetail {
|
|
37
|
+
message: string;
|
|
38
|
+
}
|
|
39
|
+
export interface CheckoutCompleteSource {
|
|
40
|
+
sessionId: string;
|
|
41
|
+
productName?: unknown;
|
|
42
|
+
productId?: unknown;
|
|
43
|
+
/** The order's charged total from `/complete`, already in major units. */
|
|
44
|
+
totalGross?: unknown;
|
|
45
|
+
currency?: unknown;
|
|
46
|
+
/** The promotion code the buyer applied, if any. */
|
|
47
|
+
coupon?: unknown;
|
|
48
|
+
}
|
|
49
|
+
export declare function BuildCheckoutCompleteDetail(source: CheckoutCompleteSource): CheckoutCompleteDetail;
|
|
50
|
+
/** A bubbling, composed CustomEvent — the only shape the element dispatches. */
|
|
51
|
+
export declare function CheckoutElementEvent<T>(name: string, detail: T): CustomEvent<T>;
|
|
52
|
+
//# sourceMappingURL=checkout-events.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"checkout-events.d.ts","sourceRoot":"","sources":["../../../src/lib/checkout-widget/checkout-events.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,kEAAkE;AAClE,MAAM,MAAM,oBAAoB,GAAG,SAAS,GAAG,UAAU,GAAG,YAAY,GAAG,UAAU,GAAG,SAAS,GAAG,OAAO,CAAC;AAE5G,eAAO,MAAM,2BAA2B,0BAA0B,CAAC;AACnE,eAAO,MAAM,uBAAuB,sBAAsB,CAAC;AAC3D,eAAO,MAAM,oBAAoB,mBAAmB,CAAC;AACrD,yDAAyD;AACzD,eAAO,MAAM,qBAAqB,oBAAoB,CAAC;AACvD,iGAAiG;AACjG,eAAO,MAAM,oBAAoB,mBAAmB,CAAC;AACrD,mFAAmF;AACnF,eAAO,MAAM,4BAA4B,mBAAmB,CAAC;AAC7D,kEAAkE;AAClE,eAAO,MAAM,4BAA4B,2BAA2B,CAAC;AAErE,MAAM,WAAW,yBAAyB;IACtC,KAAK,EAAE,oBAAoB,CAAC;CAC/B;AAED,sGAAsG;AACtG,MAAM,WAAW,sBAAsB;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED,MAAM,WAAW,mBAAmB;IAChC,OAAO,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,sBAAsB;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,0EAA0E;IAC1E,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,oDAAoD;IACpD,MAAM,CAAC,EAAE,OAAO,CAAC;CACpB;AAID,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,sBAAsB,GAAG,sBAAsB,CAWlG;AAED,gFAAgF;AAChF,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAE/E"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The DOM events the public checkout element dispatches for its host page (#294).
|
|
3
|
+
*
|
|
4
|
+
* Host pages track a checkout funnel — Google Tag Manager, GA4, their own scripts — by listening on
|
|
5
|
+
* `<mj-orders-checkout>` or on `document`. Every event bubbles and is `composed`, so it crosses a
|
|
6
|
+
* shadow root. These builders are the element's public contract, kept pure so it is testable.
|
|
7
|
+
*
|
|
8
|
+
* NO PERSONAL DATA IN ANY DETAIL. The events reach every script on the host page, so no detail
|
|
9
|
+
* carries the buyer's e-mail, name or anything they typed beyond the promotion code.
|
|
10
|
+
*/
|
|
11
|
+
export const CHECKOUT_STATE_CHANGE_EVENT = 'checkout-state-change';
|
|
12
|
+
export const CHECKOUT_COMPLETE_EVENT = 'checkout-complete';
|
|
13
|
+
export const CHECKOUT_ERROR_EVENT = 'checkout-error';
|
|
14
|
+
/** The buyer pressed Cancel; the form has been reset. */
|
|
15
|
+
export const CHECKOUT_CANCEL_EVENT = 'checkout-cancel';
|
|
16
|
+
/** The checkout asks its container to close, e.g. a modal on the host page. Sent with Cancel. */
|
|
17
|
+
export const CHECKOUT_CLOSE_EVENT = 'checkout-close';
|
|
18
|
+
/** Dispatched ON the element by an embedding host to return it to a blank form. */
|
|
19
|
+
export const CHECKOUT_RESET_REQUEST_EVENT = 'checkout-reset';
|
|
20
|
+
/** The element refused a reset because a payment is in flight. */
|
|
21
|
+
export const CHECKOUT_RESET_REFUSED_EVENT = 'checkout-reset-refused';
|
|
22
|
+
const text = (value) => (typeof value === 'string' && value.trim() ? value.trim() : null);
|
|
23
|
+
export function BuildCheckoutCompleteDetail(source) {
|
|
24
|
+
const amount = typeof source.totalGross === 'number' && Number.isFinite(source.totalGross) ? source.totalGross : null;
|
|
25
|
+
const currency = text(source.currency);
|
|
26
|
+
return {
|
|
27
|
+
sessionId: source.sessionId,
|
|
28
|
+
productName: text(source.productName),
|
|
29
|
+
productId: text(source.productId),
|
|
30
|
+
amount: amount === null ? null : Math.round(amount * 100) / 100,
|
|
31
|
+
currency: currency === null ? null : currency.toUpperCase(),
|
|
32
|
+
coupon: text(source.coupon),
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
/** A bubbling, composed CustomEvent — the only shape the element dispatches. */
|
|
36
|
+
export function CheckoutElementEvent(name, detail) {
|
|
37
|
+
return new CustomEvent(name, { detail, bubbles: true, composed: true });
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=checkout-events.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"checkout-events.js","sourceRoot":"","sources":["../../../src/lib/checkout-widget/checkout-events.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAKH,MAAM,CAAC,MAAM,2BAA2B,GAAG,uBAAuB,CAAC;AACnE,MAAM,CAAC,MAAM,uBAAuB,GAAG,mBAAmB,CAAC;AAC3D,MAAM,CAAC,MAAM,oBAAoB,GAAG,gBAAgB,CAAC;AACrD,yDAAyD;AACzD,MAAM,CAAC,MAAM,qBAAqB,GAAG,iBAAiB,CAAC;AACvD,iGAAiG;AACjG,MAAM,CAAC,MAAM,oBAAoB,GAAG,gBAAgB,CAAC;AACrD,mFAAmF;AACnF,MAAM,CAAC,MAAM,4BAA4B,GAAG,gBAAgB,CAAC;AAC7D,kEAAkE;AAClE,MAAM,CAAC,MAAM,4BAA4B,GAAG,wBAAwB,CAAC;AA+BrE,MAAM,IAAI,GAAG,CAAC,KAAc,EAAiB,EAAE,CAAC,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAElH,MAAM,UAAU,2BAA2B,CAAC,MAA8B;IACtE,MAAM,MAAM,GAAG,OAAO,MAAM,CAAC,UAAU,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC;IACtH,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACvC,OAAO;QACH,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;QACrC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;QACjC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC,GAAG,GAAG;QAC/D,QAAQ,EAAE,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE;QAC3D,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;KAC9B,CAAC;AACN,CAAC;AAED,gFAAgF;AAChF,MAAM,UAAU,oBAAoB,CAAI,IAAY,EAAE,MAAS;IAC3D,OAAO,IAAI,WAAW,CAAI,IAAI,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;AAC/E,CAAC"}
|
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
* (and usable as a normal Angular component in Explorer or any host app).
|
|
8
8
|
*/
|
|
9
9
|
import { AfterViewChecked, OnDestroy, OnInit } from '@angular/core';
|
|
10
|
+
import { type CheckoutAccountView } from './checkout-account.js';
|
|
10
11
|
import { type CheckoutSubmissionEvent, type CheckoutWidgetConfig } from './checkout-widget.component.js';
|
|
11
12
|
import * as i0 from "@angular/core";
|
|
12
13
|
export { buildCheckoutDraftLine } from './checkout-draft-line.js';
|
|
@@ -16,6 +17,7 @@ interface StripeCard {
|
|
|
16
17
|
complete?: boolean;
|
|
17
18
|
}) => void): void;
|
|
18
19
|
unmount?(): void;
|
|
20
|
+
destroy?(): void;
|
|
19
21
|
}
|
|
20
22
|
interface StripeInstance {
|
|
21
23
|
elements(): {
|
|
@@ -57,21 +59,99 @@ export declare class CheckoutPublicHostComponent implements OnInit, AfterViewChe
|
|
|
57
59
|
loadError: string | null;
|
|
58
60
|
successMessage: string | null;
|
|
59
61
|
orderNumber: string | null;
|
|
62
|
+
/** The post-payment account step, when the host registered one (#292). */
|
|
63
|
+
account: CheckoutAccountView | null;
|
|
64
|
+
password: string;
|
|
65
|
+
passwordConfirmation: string;
|
|
66
|
+
passwordError: string | null;
|
|
67
|
+
passwordBusy: boolean;
|
|
68
|
+
passwordSet: boolean;
|
|
69
|
+
/** True while the account step is being asked for. */
|
|
70
|
+
accountLoading: boolean;
|
|
71
|
+
/** The buyer chose to leave a failed account step. */
|
|
72
|
+
private accountDismissed;
|
|
73
|
+
get accountMessage(): string | null;
|
|
74
|
+
get verificationNote(): string | null;
|
|
60
75
|
private stripe;
|
|
61
76
|
private card;
|
|
62
77
|
private cardMounted;
|
|
63
78
|
private destroyed;
|
|
79
|
+
private state;
|
|
80
|
+
/** Bumped by Cancel: the template re-creates the widget, which clears everything the buyer entered. */
|
|
81
|
+
formGeneration: number;
|
|
82
|
+
/** From the element's attributes, for a host that embeds the checkout in its own panel. */
|
|
83
|
+
prefillEmail: string | null;
|
|
84
|
+
private attributionSource;
|
|
85
|
+
private attributionReference;
|
|
86
|
+
private readonly onResetRequested;
|
|
64
87
|
get isFree(): boolean;
|
|
65
88
|
ngOnInit(): Promise<void>;
|
|
66
89
|
ngAfterViewChecked(): void;
|
|
67
90
|
ngOnDestroy(): void;
|
|
91
|
+
/**
|
|
92
|
+
* Cancel resets the checkout to a blank form and tells the host page, which may close the modal
|
|
93
|
+
* the checkout sits in. The widget is re-created, so every field the buyer filled in is cleared,
|
|
94
|
+
* and the card field is mounted again on the new form. The session stays open for the next try.
|
|
95
|
+
*/
|
|
68
96
|
onCancelled(): void;
|
|
97
|
+
/**
|
|
98
|
+
* A reset the embedding host asked for, by dispatching `checkout-reset` on the element (a voice
|
|
99
|
+
* or chat agent closing its panel, say). Refused while a payment is in flight — resetting then
|
|
100
|
+
* would strand a charge the buyer cannot see. Unlike Cancel it sends no `checkout-cancel` or
|
|
101
|
+
* `checkout-close`: the host started it. Also refused while the account step after a sale is
|
|
102
|
+
* unsettled, since the buyer could not come back to it.
|
|
103
|
+
*
|
|
104
|
+
* A reset always starts a new session, before a sale as well as after one: the server matches
|
|
105
|
+
* the buyer's person record once per session, so a kept session would carry the previous
|
|
106
|
+
* conversation's buyer into the next. The e-mail and attribution are read again, so a host
|
|
107
|
+
* starting a new conversation sets them on the element before it dispatches the reset.
|
|
108
|
+
*/
|
|
109
|
+
private resetRequested;
|
|
110
|
+
/** The account step is still asking the buyer for something, and the buyer has not left it. */
|
|
111
|
+
private get accountUnsettled();
|
|
112
|
+
/**
|
|
113
|
+
* Back to a blank form: every field, the error banner and the card entry. The session stays open.
|
|
114
|
+
* The caller reports the state, since a host reset reports `LOADING` next, not `CHECKOUT`.
|
|
115
|
+
*/
|
|
116
|
+
private resetForm;
|
|
69
117
|
onSubmitted(event: CheckoutSubmissionEvent): Promise<void>;
|
|
70
118
|
private finish;
|
|
119
|
+
/** Asks for the account step of the completed checkout. The host is asked again only after a failure. */
|
|
120
|
+
private loadAccount;
|
|
121
|
+
/** Asks the host again after the account step failed. */
|
|
122
|
+
retryAccount(): Promise<void>;
|
|
123
|
+
/** Leaves a failed account step. A reload of this checkout in the same tab offers it again. */
|
|
124
|
+
dismissAccount(): void;
|
|
125
|
+
/**
|
|
126
|
+
* A reload after payment: when this tab completed a checkout whose account step is not settled,
|
|
127
|
+
* shows the confirmation and the account step instead of a new checkout.
|
|
128
|
+
*/
|
|
129
|
+
private resumeAccountStep;
|
|
130
|
+
/** Sends the new account's password. The host's policy decides; its message is shown when it refuses. */
|
|
131
|
+
submitPassword(): Promise<void>;
|
|
132
|
+
/** Leaves the password for later: the buyer can reset it at sign-in. */
|
|
133
|
+
skipPassword(): void;
|
|
134
|
+
/** Follows the widget's redirect once nothing is left for the buyer to do here. */
|
|
135
|
+
private leaveIfDone;
|
|
136
|
+
/** Reports a state the host page can track; repeats of the same state are not re-sent. */
|
|
137
|
+
private setState;
|
|
138
|
+
private reportError;
|
|
139
|
+
/** Dispatches on the `<mj-orders-checkout>` element; bubbling and composed, so `document` hears it too. */
|
|
140
|
+
private dispatch;
|
|
71
141
|
private mountStripe;
|
|
72
142
|
private loadStripe;
|
|
73
143
|
private readHostAttributes;
|
|
144
|
+
/**
|
|
145
|
+
* For a host that embeds the checkout in its own panel: an e-mail it already knows, and where the
|
|
146
|
+
* checkout came from. The server keeps the attribution only if it reads as one.
|
|
147
|
+
*/
|
|
148
|
+
private readConversationAttributes;
|
|
149
|
+
private forgetClientKey;
|
|
74
150
|
private clientKey;
|
|
151
|
+
private get completingKey();
|
|
152
|
+
private rememberCompleting;
|
|
153
|
+
private forgetCompleting;
|
|
154
|
+
private completingSession;
|
|
75
155
|
private post;
|
|
76
156
|
private str;
|
|
77
157
|
static ɵfac: i0.ɵɵFactoryDeclaration<CheckoutPublicHostComponent, never>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkout-public-host.component.d.ts","sourceRoot":"","sources":["../../../src/lib/checkout-widget/checkout-public-host.component.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EACH,gBAAgB,EAKhB,SAAS,EACT,MAAM,EAET,MAAM,eAAe,CAAC;AAEvB,OAAO,EAEH,KAAK,uBAAuB,EAC5B,KAAK,oBAAoB,EAC5B,MAAM,6BAA6B,CAAC;;AAQrC,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,UAAU,UAAU;IAChB,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CAAC;IAC1C,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE;QAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,GAAG,IAAI,CAAC;IACvE,OAAO,CAAC,IAAI,IAAI,CAAC;CACpB;AAED,UAAU,cAAc;IACpB,QAAQ,IAAI;QAAE,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CAAA;KAAE,CAAC;IACjD,kBAAkB,CACd,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE;QAAE,cAAc,EAAE;YAAE,IAAI,EAAE,UAAU,CAAC;YAAC,eAAe,CAAC,EAAE;gBAAE,KAAK,CAAC,EAAE,MAAM,CAAA;aAAE,CAAA;SAAE,CAAA;KAAE,GACrF,OAAO,CAAC;QAAE,KAAK,CAAC,EAAE;YAAE,OAAO,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;QAAC,aAAa,CAAC,EAAE;YAAE,MAAM,CAAC,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,CAAC,CAAC;CACrF;AAED,OAAO,CAAC,MAAM,CAAC;IACX,UAAU,MAAM;QACZ,MAAM,CAAC,EAAE,CAAC,cAAc,EAAE,MAAM,KAAK,cAAc,CAAC;KACvD;CACJ;AAED,qBAOa,2BAA4B,YAAW,MAAM,EAAE,gBAAgB,EAAE,SAAS;IACnF,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA0C;IACjE,OAAO,CAAC,QAAQ,CAAC,GAAG,CAA6B;IAEjC,IAAI,SAAM;IACV,OAAO,SAAe;IAE/B,MAAM,EAAE,oBAAoB,GAAG,IAAI,CAAQ;IAC3C,UAAU,SAAM;IAChB,SAAS,SAAM;IACf,UAAU,UAAS;IACnB,cAAc,UAAS;IACvB,qBAAqB,EAAE,MAAM,GAAG,IAAI,CAAQ;IAC5C,YAAY,EAAE,MAAM,GAAG,IAAI,CAAQ;IACnC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAQ;IAChC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAQ;IACrC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAQ;IAEzC,OAAO,CAAC,MAAM,CAA+B;IAC7C,OAAO,CAAC,IAAI,CAA2B;IACvC,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,SAAS,CAAS;IAE1B,IAAW,MAAM,IAAI,OAAO,CAE3B;IAEY,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"checkout-public-host.component.d.ts","sourceRoot":"","sources":["../../../src/lib/checkout-widget/checkout-public-host.component.ts"],"names":[],"mappings":"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"}
|