@mj-biz-apps/orders-ng 5.41.0 → 5.43.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 +368 -246
- package/dist/lib/checkout-widget/checkout-account.d.ts +10 -0
- package/dist/lib/checkout-widget/checkout-account.d.ts.map +1 -1
- package/dist/lib/checkout-widget/checkout-account.js +12 -0
- package/dist/lib/checkout-widget/checkout-account.js.map +1 -1
- package/dist/lib/checkout-widget/checkout-events.d.ts +15 -1
- package/dist/lib/checkout-widget/checkout-events.d.ts.map +1 -1
- package/dist/lib/checkout-widget/checkout-events.js +3 -1
- package/dist/lib/checkout-widget/checkout-events.js.map +1 -1
- package/dist/lib/checkout-widget/checkout-public-host.component.d.ts +6 -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 +50 -21
- package/dist/lib/checkout-widget/checkout-public-host.component.js.map +1 -1
- package/dist/lib/checkout-widget/checkout-widget.component.d.ts +38 -2
- package/dist/lib/checkout-widget/checkout-widget.component.d.ts.map +1 -1
- package/dist/lib/checkout-widget/checkout-widget.component.js +313 -227
- package/dist/lib/checkout-widget/checkout-widget.component.js.map +1 -1
- package/dist/lib/custom/OrderHeader/order-header-form.component.d.ts.map +1 -1
- package/dist/lib/custom/OrderHeader/order-header-form.component.js +2 -1
- package/dist/lib/custom/OrderHeader/order-header-form.component.js.map +1 -1
- package/dist/lib/custom/OrderHeader/order-lines-editor.component.d.ts +14 -2
- package/dist/lib/custom/OrderHeader/order-lines-editor.component.d.ts.map +1 -1
- package/dist/lib/custom/OrderHeader/order-lines-editor.component.js +44 -6
- package/dist/lib/custom/OrderHeader/order-lines-editor.component.js.map +1 -1
- package/dist/lib/custom/OrderHeader/picker-scroll.d.ts +12 -0
- package/dist/lib/custom/OrderHeader/picker-scroll.d.ts.map +1 -0
- package/dist/lib/custom/OrderHeader/picker-scroll.js +15 -0
- package/dist/lib/custom/OrderHeader/picker-scroll.js.map +1 -0
- package/dist/lib/custom/PaymentHeader/payment-header-form.component.d.ts +11 -0
- package/dist/lib/custom/PaymentHeader/payment-header-form.component.d.ts.map +1 -1
- package/dist/lib/custom/PaymentHeader/payment-header-form.component.js +363 -297
- package/dist/lib/custom/PaymentHeader/payment-header-form.component.js.map +1 -1
- package/dist/lib/data/orders-grid-state.d.ts +2 -1
- package/dist/lib/data/orders-grid-state.d.ts.map +1 -1
- package/dist/lib/data/orders-grid-state.js +2 -1
- package/dist/lib/data/orders-grid-state.js.map +1 -1
- package/dist/lib/data/orders-queries.d.ts +17 -4
- package/dist/lib/data/orders-queries.d.ts.map +1 -1
- package/dist/lib/data/orders-queries.js +30 -6
- package/dist/lib/data/orders-queries.js.map +1 -1
- package/dist/lib/form-panels/document-overviews.panels.js +1 -1
- package/dist/lib/form-panels/document-overviews.panels.js.map +1 -1
- package/dist/lib/form-panels/external-invoices.panel.js +3 -3
- package/dist/lib/form-panels/external-invoices.panel.js.map +1 -1
- package/dist/lib/form-panels/organization-orders.panel.d.ts +8 -1
- package/dist/lib/form-panels/organization-orders.panel.d.ts.map +1 -1
- package/dist/lib/form-panels/organization-orders.panel.js +29 -5
- package/dist/lib/form-panels/organization-orders.panel.js.map +1 -1
- package/dist/lib/form-panels/person-orders.panel.d.ts +8 -1
- package/dist/lib/form-panels/person-orders.panel.d.ts.map +1 -1
- package/dist/lib/form-panels/person-orders.panel.js +29 -5
- package/dist/lib/form-panels/person-orders.panel.js.map +1 -1
- package/dist/lib/generated/Entities/mjBizAppsOrdersOrderHeader/mjbizappsordersorderheader.form.component.js +2 -2
- package/dist/lib/generated/Entities/mjBizAppsOrdersOrderHeader/mjbizappsordersorderheader.form.component.js.map +1 -1
- package/dist/lib/pages/orders/order-document.page.d.ts +13 -2
- package/dist/lib/pages/orders/order-document.page.d.ts.map +1 -1
- package/dist/lib/pages/orders/order-document.page.js +37 -6
- package/dist/lib/pages/orders/order-document.page.js.map +1 -1
- package/dist/lib/pages/orders/return.page.d.ts +9 -3
- package/dist/lib/pages/orders/return.page.d.ts.map +1 -1
- package/dist/lib/pages/orders/return.page.js +106 -83
- package/dist/lib/pages/orders/return.page.js.map +1 -1
- package/dist/lib/pages/payments/payments-dashboard.page.d.ts +11 -2
- package/dist/lib/pages/payments/payments-dashboard.page.d.ts.map +1 -1
- package/dist/lib/pages/payments/payments-dashboard.page.js +14 -12
- package/dist/lib/pages/payments/payments-dashboard.page.js.map +1 -1
- package/dist/lib/pages/payments/payments-list.page.d.ts +12 -3
- package/dist/lib/pages/payments/payments-list.page.d.ts.map +1 -1
- package/dist/lib/pages/payments/payments-list.page.js +15 -13
- package/dist/lib/pages/payments/payments-list.page.js.map +1 -1
- package/dist/lib/pages/receivables/billing.page.js +11 -11
- package/dist/lib/pages/receivables/billing.page.js.map +1 -1
- package/dist/lib/pages/receivables/external-invoicing-queue.page.js +1 -1
- package/dist/lib/pages/receivables/external-invoicing-queue.page.js.map +1 -1
- package/dist/lib/pages/receivables/progress.page.js +5 -5
- package/dist/lib/pages/receivables/subscriptions.page.d.ts +14 -3
- package/dist/lib/pages/receivables/subscriptions.page.d.ts.map +1 -1
- package/dist/lib/pages/receivables/subscriptions.page.js +17 -13
- package/dist/lib/pages/receivables/subscriptions.page.js.map +1 -1
- package/dist/lib/sections/section-nav.model.js +1 -1
- package/dist/lib/sections/section-nav.model.js.map +1 -1
- package/dist/lib/sections/section-shell.component.js +2 -2
- package/dist/lib/services/pricing-scheduler.service.d.ts +15 -1
- package/dist/lib/services/pricing-scheduler.service.d.ts.map +1 -1
- package/dist/lib/services/pricing-scheduler.service.js +31 -2
- package/dist/lib/services/pricing-scheduler.service.js.map +1 -1
- package/dist/lib/styles/orders-kit.css +21 -15
- package/package.json +3 -3
|
@@ -36,7 +36,7 @@ function MJCheckoutWidgetComponent_Conditional_4_Template(rf, ctx) { if (rf & 1)
|
|
|
36
36
|
i0.ɵɵtextInterpolate(ctx_r0.config == null ? null : ctx_r0.config.description);
|
|
37
37
|
} }
|
|
38
38
|
function MJCheckoutWidgetComponent_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
39
|
-
i0.ɵɵelementStart(0, "div", 4)(1, "span",
|
|
39
|
+
i0.ɵɵelementStart(0, "div", 4)(1, "span", 27);
|
|
40
40
|
i0.ɵɵtext(2, "\u26A0\uFE0F");
|
|
41
41
|
i0.ɵɵelementEnd();
|
|
42
42
|
i0.ɵɵelementStart(3, "span");
|
|
@@ -47,18 +47,27 @@ function MJCheckoutWidgetComponent_Conditional_5_Template(rf, ctx) { if (rf & 1)
|
|
|
47
47
|
i0.ɵɵadvance(4);
|
|
48
48
|
i0.ɵɵtextInterpolate(ctx_r0.displayErrorMessage());
|
|
49
49
|
} }
|
|
50
|
-
function
|
|
51
|
-
i0.ɵɵelementStart(0, "
|
|
50
|
+
function MJCheckoutWidgetComponent_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
51
|
+
i0.ɵɵelementStart(0, "div", 5)(1, "span");
|
|
52
|
+
i0.ɵɵtext(2);
|
|
53
|
+
i0.ɵɵelementEnd()();
|
|
54
|
+
} if (rf & 2) {
|
|
55
|
+
const ctx_r0 = i0.ɵɵnextContext();
|
|
56
|
+
i0.ɵɵadvance(2);
|
|
57
|
+
i0.ɵɵtextInterpolate(ctx_r0.displayNoticeMessage());
|
|
58
|
+
} }
|
|
59
|
+
function MJCheckoutWidgetComponent_Conditional_12_Template(rf, ctx) { if (rf & 1) {
|
|
60
|
+
i0.ɵɵelementStart(0, "span", 10);
|
|
52
61
|
i0.ɵɵtext(1, "FREE");
|
|
53
62
|
i0.ɵɵelementEnd();
|
|
54
63
|
} }
|
|
55
|
-
function
|
|
56
|
-
i0.ɵɵelementStart(0, "span",
|
|
64
|
+
function MJCheckoutWidgetComponent_Conditional_14_Template(rf, ctx) { if (rf & 1) {
|
|
65
|
+
i0.ɵɵelementStart(0, "span", 12);
|
|
57
66
|
i0.ɵɵtext(1, "$0.00");
|
|
58
67
|
i0.ɵɵelementEnd();
|
|
59
68
|
} }
|
|
60
|
-
function
|
|
61
|
-
i0.ɵɵelementStart(0, "span",
|
|
69
|
+
function MJCheckoutWidgetComponent_Conditional_15_Template(rf, ctx) { if (rf & 1) {
|
|
70
|
+
i0.ɵɵelementStart(0, "span", 13);
|
|
62
71
|
i0.ɵɵtext(1);
|
|
63
72
|
i0.ɵɵelementEnd();
|
|
64
73
|
} if (rf & 2) {
|
|
@@ -66,20 +75,20 @@ function MJCheckoutWidgetComponent_Conditional_14_Template(rf, ctx) { if (rf & 1
|
|
|
66
75
|
i0.ɵɵadvance();
|
|
67
76
|
i0.ɵɵtextInterpolate2("", ctx_r0.currencySymbol(), "", ((ctx_r0.config == null ? null : ctx_r0.config.unitPrice) || 0).toFixed(2));
|
|
68
77
|
} }
|
|
69
|
-
function
|
|
78
|
+
function MJCheckoutWidgetComponent_Conditional_16_Template(rf, ctx) { if (rf & 1) {
|
|
70
79
|
const _r2 = i0.ɵɵgetCurrentView();
|
|
71
|
-
i0.ɵɵelementStart(0, "div",
|
|
80
|
+
i0.ɵɵelementStart(0, "div", 14)(1, "label", 28);
|
|
72
81
|
i0.ɵɵtext(2, "Quantity");
|
|
73
82
|
i0.ɵɵelementEnd();
|
|
74
|
-
i0.ɵɵelementStart(3, "div",
|
|
75
|
-
i0.ɵɵlistener("click", function
|
|
83
|
+
i0.ɵɵelementStart(3, "div", 29)(4, "button", 30);
|
|
84
|
+
i0.ɵɵlistener("click", function MJCheckoutWidgetComponent_Conditional_16_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r2); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.onQuantityChange(ctx_r0.quantity() - 1)); });
|
|
76
85
|
i0.ɵɵtext(5, "-");
|
|
77
86
|
i0.ɵɵelementEnd();
|
|
78
|
-
i0.ɵɵelementStart(6, "input",
|
|
79
|
-
i0.ɵɵlistener("ngModelChange", function
|
|
87
|
+
i0.ɵɵelementStart(6, "input", 31);
|
|
88
|
+
i0.ɵɵlistener("ngModelChange", function MJCheckoutWidgetComponent_Conditional_16_Template_input_ngModelChange_6_listener($event) { i0.ɵɵrestoreView(_r2); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.onQuantityChange($event)); });
|
|
80
89
|
i0.ɵɵelementEnd();
|
|
81
|
-
i0.ɵɵelementStart(7, "button",
|
|
82
|
-
i0.ɵɵlistener("click", function
|
|
90
|
+
i0.ɵɵelementStart(7, "button", 30);
|
|
91
|
+
i0.ɵɵlistener("click", function MJCheckoutWidgetComponent_Conditional_16_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r2); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.onQuantityChange(ctx_r0.quantity() + 1)); });
|
|
83
92
|
i0.ɵɵtext(8, "+");
|
|
84
93
|
i0.ɵɵelementEnd()()();
|
|
85
94
|
} if (rf & 2) {
|
|
@@ -91,15 +100,15 @@ function MJCheckoutWidgetComponent_Conditional_15_Template(rf, ctx) { if (rf & 1
|
|
|
91
100
|
i0.ɵɵadvance();
|
|
92
101
|
i0.ɵɵproperty("disabled", ctx_r0.quantity() >= ((ctx_r0.config == null ? null : ctx_r0.config.maxQuantity) || 50));
|
|
93
102
|
} }
|
|
94
|
-
function
|
|
95
|
-
i0.ɵɵelementStart(0, "span",
|
|
103
|
+
function MJCheckoutWidgetComponent_Conditional_18_For_4_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
104
|
+
i0.ɵɵelementStart(0, "span", 20);
|
|
96
105
|
i0.ɵɵtext(1, "*");
|
|
97
106
|
i0.ɵɵelementEnd();
|
|
98
107
|
} }
|
|
99
|
-
function
|
|
108
|
+
function MJCheckoutWidgetComponent_Conditional_18_For_4_Case_4_Template(rf, ctx) { if (rf & 1) {
|
|
100
109
|
const _r3 = i0.ɵɵgetCurrentView();
|
|
101
|
-
i0.ɵɵelementStart(0, "textarea",
|
|
102
|
-
i0.ɵɵlistener("ngModelChange", function
|
|
110
|
+
i0.ɵɵelementStart(0, "textarea", 38);
|
|
111
|
+
i0.ɵɵlistener("ngModelChange", function MJCheckoutWidgetComponent_Conditional_18_For_4_Case_4_Template_textarea_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r3); const field_r4 = i0.ɵɵnextContext().$implicit; const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.updateUnitField(0, field_r4.name, $event)); });
|
|
103
112
|
i0.ɵɵtext(1, " ");
|
|
104
113
|
i0.ɵɵelementEnd();
|
|
105
114
|
} if (rf & 2) {
|
|
@@ -108,8 +117,8 @@ function MJCheckoutWidgetComponent_Conditional_17_For_4_Case_4_Template(rf, ctx)
|
|
|
108
117
|
const ctx_r0 = i0.ɵɵnextContext(2);
|
|
109
118
|
i0.ɵɵproperty("ngModel", (tmp_12_0 = ctx_r0.units()[0]) == null ? null : tmp_12_0[field_r4.name])("placeholder", field_r4.placeholder || "")("required", field_r4.required || false);
|
|
110
119
|
} }
|
|
111
|
-
function
|
|
112
|
-
i0.ɵɵelementStart(0, "option",
|
|
120
|
+
function MJCheckoutWidgetComponent_Conditional_18_For_4_Case_5_For_4_Template(rf, ctx) { if (rf & 1) {
|
|
121
|
+
i0.ɵɵelementStart(0, "option", 22);
|
|
113
122
|
i0.ɵɵtext(1);
|
|
114
123
|
i0.ɵɵelementEnd();
|
|
115
124
|
} if (rf & 2) {
|
|
@@ -118,14 +127,14 @@ function MJCheckoutWidgetComponent_Conditional_17_For_4_Case_5_For_4_Template(rf
|
|
|
118
127
|
i0.ɵɵadvance();
|
|
119
128
|
i0.ɵɵtextInterpolate(opt_r6.label);
|
|
120
129
|
} }
|
|
121
|
-
function
|
|
130
|
+
function MJCheckoutWidgetComponent_Conditional_18_For_4_Case_5_Template(rf, ctx) { if (rf & 1) {
|
|
122
131
|
const _r5 = i0.ɵɵgetCurrentView();
|
|
123
|
-
i0.ɵɵelementStart(0, "select",
|
|
124
|
-
i0.ɵɵlistener("ngModelChange", function
|
|
125
|
-
i0.ɵɵelementStart(1, "option",
|
|
132
|
+
i0.ɵɵelementStart(0, "select", 39);
|
|
133
|
+
i0.ɵɵlistener("ngModelChange", function MJCheckoutWidgetComponent_Conditional_18_For_4_Case_5_Template_select_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r5); const field_r4 = i0.ɵɵnextContext().$implicit; const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.updateUnitField(0, field_r4.name, $event)); });
|
|
134
|
+
i0.ɵɵelementStart(1, "option", 22);
|
|
126
135
|
i0.ɵɵtext(2);
|
|
127
136
|
i0.ɵɵelementEnd();
|
|
128
|
-
i0.ɵɵrepeaterCreate(3,
|
|
137
|
+
i0.ɵɵrepeaterCreate(3, MJCheckoutWidgetComponent_Conditional_18_For_4_Case_5_For_4_Template, 2, 2, "option", 22, _forTrack3);
|
|
129
138
|
i0.ɵɵelementEnd();
|
|
130
139
|
} if (rf & 2) {
|
|
131
140
|
let tmp_12_0;
|
|
@@ -139,10 +148,10 @@ function MJCheckoutWidgetComponent_Conditional_17_For_4_Case_5_Template(rf, ctx)
|
|
|
139
148
|
i0.ɵɵadvance();
|
|
140
149
|
i0.ɵɵrepeater(field_r4.options);
|
|
141
150
|
} }
|
|
142
|
-
function
|
|
151
|
+
function MJCheckoutWidgetComponent_Conditional_18_For_4_Case_6_Template(rf, ctx) { if (rf & 1) {
|
|
143
152
|
const _r7 = i0.ɵɵgetCurrentView();
|
|
144
|
-
i0.ɵɵelementStart(0, "label",
|
|
145
|
-
i0.ɵɵlistener("ngModelChange", function
|
|
153
|
+
i0.ɵɵelementStart(0, "label", 35)(1, "input", 40);
|
|
154
|
+
i0.ɵɵlistener("ngModelChange", function MJCheckoutWidgetComponent_Conditional_18_For_4_Case_6_Template_input_ngModelChange_1_listener($event) { i0.ɵɵrestoreView(_r7); const field_r4 = i0.ɵɵnextContext().$implicit; const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.updateUnitField(0, field_r4.name, $event)); });
|
|
146
155
|
i0.ɵɵelementEnd();
|
|
147
156
|
i0.ɵɵelementStart(2, "span");
|
|
148
157
|
i0.ɵɵtext(3);
|
|
@@ -156,10 +165,10 @@ function MJCheckoutWidgetComponent_Conditional_17_For_4_Case_6_Template(rf, ctx)
|
|
|
156
165
|
i0.ɵɵadvance(2);
|
|
157
166
|
i0.ɵɵtextInterpolate(field_r4.label);
|
|
158
167
|
} }
|
|
159
|
-
function
|
|
168
|
+
function MJCheckoutWidgetComponent_Conditional_18_For_4_Case_7_Template(rf, ctx) { if (rf & 1) {
|
|
160
169
|
const _r8 = i0.ɵɵgetCurrentView();
|
|
161
|
-
i0.ɵɵelementStart(0, "input",
|
|
162
|
-
i0.ɵɵlistener("ngModelChange", function
|
|
170
|
+
i0.ɵɵelementStart(0, "input", 41);
|
|
171
|
+
i0.ɵɵlistener("ngModelChange", function MJCheckoutWidgetComponent_Conditional_18_For_4_Case_7_Template_input_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r8); const field_r4 = i0.ɵɵnextContext().$implicit; const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.updateUnitField(0, field_r4.name, $event)); });
|
|
163
172
|
i0.ɵɵelementEnd();
|
|
164
173
|
} if (rf & 2) {
|
|
165
174
|
let tmp_12_0;
|
|
@@ -167,10 +176,10 @@ function MJCheckoutWidgetComponent_Conditional_17_For_4_Case_7_Template(rf, ctx)
|
|
|
167
176
|
const ctx_r0 = i0.ɵɵnextContext(2);
|
|
168
177
|
i0.ɵɵproperty("ngModel", (tmp_12_0 = ctx_r0.units()[0]) == null ? null : tmp_12_0[field_r4.name])("placeholder", field_r4.placeholder || "")("required", field_r4.required || false);
|
|
169
178
|
} }
|
|
170
|
-
function
|
|
179
|
+
function MJCheckoutWidgetComponent_Conditional_18_For_4_Case_8_Template(rf, ctx) { if (rf & 1) {
|
|
171
180
|
const _r9 = i0.ɵɵgetCurrentView();
|
|
172
|
-
i0.ɵɵelementStart(0, "input",
|
|
173
|
-
i0.ɵɵlistener("ngModelChange", function
|
|
181
|
+
i0.ɵɵelementStart(0, "input", 42);
|
|
182
|
+
i0.ɵɵlistener("ngModelChange", function MJCheckoutWidgetComponent_Conditional_18_For_4_Case_8_Template_input_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r9); const field_r4 = i0.ɵɵnextContext().$implicit; const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.updateUnitField(0, field_r4.name, $event)); });
|
|
174
183
|
i0.ɵɵelementEnd();
|
|
175
184
|
} if (rf & 2) {
|
|
176
185
|
let tmp_12_0;
|
|
@@ -178,17 +187,17 @@ function MJCheckoutWidgetComponent_Conditional_17_For_4_Case_8_Template(rf, ctx)
|
|
|
178
187
|
const ctx_r0 = i0.ɵɵnextContext(2);
|
|
179
188
|
i0.ɵɵproperty("ngModel", (tmp_12_0 = ctx_r0.units()[0]) == null ? null : tmp_12_0[field_r4.name])("required", field_r4.required || false);
|
|
180
189
|
} }
|
|
181
|
-
function
|
|
182
|
-
i0.ɵɵelementStart(0, "p",
|
|
190
|
+
function MJCheckoutWidgetComponent_Conditional_18_For_4_Case_9_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
191
|
+
i0.ɵɵelementStart(0, "p", 44);
|
|
183
192
|
i0.ɵɵtext(1, "Your member discount is tied to this verified e-mail.");
|
|
184
193
|
i0.ɵɵelementEnd();
|
|
185
194
|
} }
|
|
186
|
-
function
|
|
195
|
+
function MJCheckoutWidgetComponent_Conditional_18_For_4_Case_9_Template(rf, ctx) { if (rf & 1) {
|
|
187
196
|
const _r10 = i0.ɵɵgetCurrentView();
|
|
188
|
-
i0.ɵɵelementStart(0, "input",
|
|
189
|
-
i0.ɵɵlistener("ngModelChange", function
|
|
197
|
+
i0.ɵɵelementStart(0, "input", 43);
|
|
198
|
+
i0.ɵɵlistener("ngModelChange", function MJCheckoutWidgetComponent_Conditional_18_For_4_Case_9_Template_input_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r10); const field_r4 = i0.ɵɵnextContext().$implicit; const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.updateUnitField(0, field_r4.name, $event)); });
|
|
190
199
|
i0.ɵɵelementEnd();
|
|
191
|
-
i0.ɵɵconditionalCreate(1,
|
|
200
|
+
i0.ɵɵconditionalCreate(1, MJCheckoutWidgetComponent_Conditional_18_For_4_Case_9_Conditional_1_Template, 2, 0, "p", 44);
|
|
192
201
|
} if (rf & 2) {
|
|
193
202
|
let tmp_13_0;
|
|
194
203
|
const field_r4 = i0.ɵɵnextContext().$implicit;
|
|
@@ -197,12 +206,12 @@ function MJCheckoutWidgetComponent_Conditional_17_For_4_Case_9_Template(rf, ctx)
|
|
|
197
206
|
i0.ɵɵadvance();
|
|
198
207
|
i0.ɵɵconditional(ctx_r0.isLockedEmail(0, field_r4.name) ? 1 : -1);
|
|
199
208
|
} }
|
|
200
|
-
function
|
|
201
|
-
i0.ɵɵelementStart(0, "div",
|
|
209
|
+
function MJCheckoutWidgetComponent_Conditional_18_For_4_Template(rf, ctx) { if (rf & 1) {
|
|
210
|
+
i0.ɵɵelementStart(0, "div", 18)(1, "label", 19);
|
|
202
211
|
i0.ɵɵtext(2);
|
|
203
|
-
i0.ɵɵconditionalCreate(3,
|
|
212
|
+
i0.ɵɵconditionalCreate(3, MJCheckoutWidgetComponent_Conditional_18_For_4_Conditional_3_Template, 2, 0, "span", 20);
|
|
204
213
|
i0.ɵɵelementEnd();
|
|
205
|
-
i0.ɵɵconditionalCreate(4,
|
|
214
|
+
i0.ɵɵconditionalCreate(4, MJCheckoutWidgetComponent_Conditional_18_For_4_Case_4_Template, 2, 3, "textarea", 33)(5, MJCheckoutWidgetComponent_Conditional_18_For_4_Case_5_Template, 5, 4, "select", 34)(6, MJCheckoutWidgetComponent_Conditional_18_For_4_Case_6_Template, 4, 2, "label", 35)(7, MJCheckoutWidgetComponent_Conditional_18_For_4_Case_7_Template, 1, 3, "input", 36)(8, MJCheckoutWidgetComponent_Conditional_18_For_4_Case_8_Template, 1, 2, "input", 37)(9, MJCheckoutWidgetComponent_Conditional_18_For_4_Case_9_Template, 2, 6);
|
|
206
215
|
i0.ɵɵelementEnd();
|
|
207
216
|
} if (rf & 2) {
|
|
208
217
|
let tmp_14_0;
|
|
@@ -215,27 +224,27 @@ function MJCheckoutWidgetComponent_Conditional_17_For_4_Template(rf, ctx) { if (
|
|
|
215
224
|
i0.ɵɵadvance();
|
|
216
225
|
i0.ɵɵconditional((tmp_14_0 = field_r4.type) === "textarea" ? 4 : tmp_14_0 === "select" ? 5 : tmp_14_0 === "boolean" ? 6 : tmp_14_0 === "number" ? 7 : tmp_14_0 === "date" ? 8 : 9);
|
|
217
226
|
} }
|
|
218
|
-
function
|
|
219
|
-
i0.ɵɵelementStart(0, "h3",
|
|
227
|
+
function MJCheckoutWidgetComponent_Conditional_18_Template(rf, ctx) { if (rf & 1) {
|
|
228
|
+
i0.ɵɵelementStart(0, "h3", 16);
|
|
220
229
|
i0.ɵɵtext(1, "Details");
|
|
221
230
|
i0.ɵɵelementEnd();
|
|
222
|
-
i0.ɵɵelementStart(2, "div",
|
|
223
|
-
i0.ɵɵrepeaterCreate(3,
|
|
231
|
+
i0.ɵɵelementStart(2, "div", 17);
|
|
232
|
+
i0.ɵɵrepeaterCreate(3, MJCheckoutWidgetComponent_Conditional_18_For_4_Template, 10, 5, "div", 32, _forTrack2);
|
|
224
233
|
i0.ɵɵelementEnd();
|
|
225
234
|
} if (rf & 2) {
|
|
226
235
|
const ctx_r0 = i0.ɵɵnextContext();
|
|
227
236
|
i0.ɵɵadvance(3);
|
|
228
237
|
i0.ɵɵrepeater(ctx_r0.activeFieldDefs());
|
|
229
238
|
} }
|
|
230
|
-
function
|
|
231
|
-
i0.ɵɵelementStart(0, "span",
|
|
239
|
+
function MJCheckoutWidgetComponent_Conditional_19_For_7_For_5_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
240
|
+
i0.ɵɵelementStart(0, "span", 20);
|
|
232
241
|
i0.ɵɵtext(1, "*");
|
|
233
242
|
i0.ɵɵelementEnd();
|
|
234
243
|
} }
|
|
235
|
-
function
|
|
244
|
+
function MJCheckoutWidgetComponent_Conditional_19_For_7_For_5_Case_4_Template(rf, ctx) { if (rf & 1) {
|
|
236
245
|
const _r12 = i0.ɵɵgetCurrentView();
|
|
237
|
-
i0.ɵɵelementStart(0, "textarea",
|
|
238
|
-
i0.ɵɵlistener("ngModelChange", function
|
|
246
|
+
i0.ɵɵelementStart(0, "textarea", 38);
|
|
247
|
+
i0.ɵɵlistener("ngModelChange", function MJCheckoutWidgetComponent_Conditional_19_For_7_For_5_Case_4_Template_textarea_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r12); const ctx_r12 = i0.ɵɵnextContext(); const field_r14 = ctx_r12.$implicit; const $index_r15 = ctx_r12.$index; const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.updateUnitField($index_r15, field_r14.name, $event)); });
|
|
239
248
|
i0.ɵɵtext(1, " ");
|
|
240
249
|
i0.ɵɵelementEnd();
|
|
241
250
|
} if (rf & 2) {
|
|
@@ -243,8 +252,8 @@ function MJCheckoutWidgetComponent_Conditional_18_For_7_For_5_Case_4_Template(rf
|
|
|
243
252
|
const unit_r16 = i0.ɵɵnextContext().$implicit;
|
|
244
253
|
i0.ɵɵproperty("ngModel", unit_r16[field_r14.name])("placeholder", field_r14.placeholder || "")("required", field_r14.required || false);
|
|
245
254
|
} }
|
|
246
|
-
function
|
|
247
|
-
i0.ɵɵelementStart(0, "option",
|
|
255
|
+
function MJCheckoutWidgetComponent_Conditional_19_For_7_For_5_Case_5_For_4_Template(rf, ctx) { if (rf & 1) {
|
|
256
|
+
i0.ɵɵelementStart(0, "option", 22);
|
|
248
257
|
i0.ɵɵtext(1);
|
|
249
258
|
i0.ɵɵelementEnd();
|
|
250
259
|
} if (rf & 2) {
|
|
@@ -253,14 +262,14 @@ function MJCheckoutWidgetComponent_Conditional_18_For_7_For_5_Case_5_For_4_Templ
|
|
|
253
262
|
i0.ɵɵadvance();
|
|
254
263
|
i0.ɵɵtextInterpolate(opt_r18.label);
|
|
255
264
|
} }
|
|
256
|
-
function
|
|
265
|
+
function MJCheckoutWidgetComponent_Conditional_19_For_7_For_5_Case_5_Template(rf, ctx) { if (rf & 1) {
|
|
257
266
|
const _r17 = i0.ɵɵgetCurrentView();
|
|
258
|
-
i0.ɵɵelementStart(0, "select",
|
|
259
|
-
i0.ɵɵlistener("ngModelChange", function
|
|
260
|
-
i0.ɵɵelementStart(1, "option",
|
|
267
|
+
i0.ɵɵelementStart(0, "select", 39);
|
|
268
|
+
i0.ɵɵlistener("ngModelChange", function MJCheckoutWidgetComponent_Conditional_19_For_7_For_5_Case_5_Template_select_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r17); const ctx_r12 = i0.ɵɵnextContext(); const field_r14 = ctx_r12.$implicit; const $index_r15 = ctx_r12.$index; const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.updateUnitField($index_r15, field_r14.name, $event)); });
|
|
269
|
+
i0.ɵɵelementStart(1, "option", 22);
|
|
261
270
|
i0.ɵɵtext(2);
|
|
262
271
|
i0.ɵɵelementEnd();
|
|
263
|
-
i0.ɵɵrepeaterCreate(3,
|
|
272
|
+
i0.ɵɵrepeaterCreate(3, MJCheckoutWidgetComponent_Conditional_19_For_7_For_5_Case_5_For_4_Template, 2, 2, "option", 22, _forTrack3);
|
|
264
273
|
i0.ɵɵelementEnd();
|
|
265
274
|
} if (rf & 2) {
|
|
266
275
|
const field_r14 = i0.ɵɵnextContext().$implicit;
|
|
@@ -273,10 +282,10 @@ function MJCheckoutWidgetComponent_Conditional_18_For_7_For_5_Case_5_Template(rf
|
|
|
273
282
|
i0.ɵɵadvance();
|
|
274
283
|
i0.ɵɵrepeater(field_r14.options);
|
|
275
284
|
} }
|
|
276
|
-
function
|
|
285
|
+
function MJCheckoutWidgetComponent_Conditional_19_For_7_For_5_Case_6_Template(rf, ctx) { if (rf & 1) {
|
|
277
286
|
const _r19 = i0.ɵɵgetCurrentView();
|
|
278
|
-
i0.ɵɵelementStart(0, "label",
|
|
279
|
-
i0.ɵɵlistener("ngModelChange", function
|
|
287
|
+
i0.ɵɵelementStart(0, "label", 35)(1, "input", 40);
|
|
288
|
+
i0.ɵɵlistener("ngModelChange", function MJCheckoutWidgetComponent_Conditional_19_For_7_For_5_Case_6_Template_input_ngModelChange_1_listener($event) { i0.ɵɵrestoreView(_r19); const ctx_r12 = i0.ɵɵnextContext(); const field_r14 = ctx_r12.$implicit; const $index_r15 = ctx_r12.$index; const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.updateUnitField($index_r15, field_r14.name, $event)); });
|
|
280
289
|
i0.ɵɵelementEnd();
|
|
281
290
|
i0.ɵɵelementStart(2, "span");
|
|
282
291
|
i0.ɵɵtext(3);
|
|
@@ -289,37 +298,37 @@ function MJCheckoutWidgetComponent_Conditional_18_For_7_For_5_Case_6_Template(rf
|
|
|
289
298
|
i0.ɵɵadvance(2);
|
|
290
299
|
i0.ɵɵtextInterpolate(field_r14.label);
|
|
291
300
|
} }
|
|
292
|
-
function
|
|
301
|
+
function MJCheckoutWidgetComponent_Conditional_19_For_7_For_5_Case_7_Template(rf, ctx) { if (rf & 1) {
|
|
293
302
|
const _r20 = i0.ɵɵgetCurrentView();
|
|
294
|
-
i0.ɵɵelementStart(0, "input",
|
|
295
|
-
i0.ɵɵlistener("ngModelChange", function
|
|
303
|
+
i0.ɵɵelementStart(0, "input", 41);
|
|
304
|
+
i0.ɵɵlistener("ngModelChange", function MJCheckoutWidgetComponent_Conditional_19_For_7_For_5_Case_7_Template_input_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r20); const ctx_r12 = i0.ɵɵnextContext(); const field_r14 = ctx_r12.$implicit; const $index_r15 = ctx_r12.$index; const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.updateUnitField($index_r15, field_r14.name, $event)); });
|
|
296
305
|
i0.ɵɵelementEnd();
|
|
297
306
|
} if (rf & 2) {
|
|
298
307
|
const field_r14 = i0.ɵɵnextContext().$implicit;
|
|
299
308
|
const unit_r16 = i0.ɵɵnextContext().$implicit;
|
|
300
309
|
i0.ɵɵproperty("ngModel", unit_r16[field_r14.name])("placeholder", field_r14.placeholder || "")("required", field_r14.required || false);
|
|
301
310
|
} }
|
|
302
|
-
function
|
|
311
|
+
function MJCheckoutWidgetComponent_Conditional_19_For_7_For_5_Case_8_Template(rf, ctx) { if (rf & 1) {
|
|
303
312
|
const _r21 = i0.ɵɵgetCurrentView();
|
|
304
|
-
i0.ɵɵelementStart(0, "input",
|
|
305
|
-
i0.ɵɵlistener("ngModelChange", function
|
|
313
|
+
i0.ɵɵelementStart(0, "input", 42);
|
|
314
|
+
i0.ɵɵlistener("ngModelChange", function MJCheckoutWidgetComponent_Conditional_19_For_7_For_5_Case_8_Template_input_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r21); const ctx_r12 = i0.ɵɵnextContext(); const field_r14 = ctx_r12.$implicit; const $index_r15 = ctx_r12.$index; const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.updateUnitField($index_r15, field_r14.name, $event)); });
|
|
306
315
|
i0.ɵɵelementEnd();
|
|
307
316
|
} if (rf & 2) {
|
|
308
317
|
const field_r14 = i0.ɵɵnextContext().$implicit;
|
|
309
318
|
const unit_r16 = i0.ɵɵnextContext().$implicit;
|
|
310
319
|
i0.ɵɵproperty("ngModel", unit_r16[field_r14.name])("required", field_r14.required || false);
|
|
311
320
|
} }
|
|
312
|
-
function
|
|
313
|
-
i0.ɵɵelementStart(0, "p",
|
|
321
|
+
function MJCheckoutWidgetComponent_Conditional_19_For_7_For_5_Case_9_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
322
|
+
i0.ɵɵelementStart(0, "p", 44);
|
|
314
323
|
i0.ɵɵtext(1, "Your member discount is tied to this verified e-mail.");
|
|
315
324
|
i0.ɵɵelementEnd();
|
|
316
325
|
} }
|
|
317
|
-
function
|
|
326
|
+
function MJCheckoutWidgetComponent_Conditional_19_For_7_For_5_Case_9_Template(rf, ctx) { if (rf & 1) {
|
|
318
327
|
const _r22 = i0.ɵɵgetCurrentView();
|
|
319
|
-
i0.ɵɵelementStart(0, "input",
|
|
320
|
-
i0.ɵɵlistener("ngModelChange", function
|
|
328
|
+
i0.ɵɵelementStart(0, "input", 43);
|
|
329
|
+
i0.ɵɵlistener("ngModelChange", function MJCheckoutWidgetComponent_Conditional_19_For_7_For_5_Case_9_Template_input_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r22); const ctx_r12 = i0.ɵɵnextContext(); const field_r14 = ctx_r12.$implicit; const $index_r15 = ctx_r12.$index; const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.updateUnitField($index_r15, field_r14.name, $event)); });
|
|
321
330
|
i0.ɵɵelementEnd();
|
|
322
|
-
i0.ɵɵconditionalCreate(1,
|
|
331
|
+
i0.ɵɵconditionalCreate(1, MJCheckoutWidgetComponent_Conditional_19_For_7_For_5_Case_9_Conditional_1_Template, 2, 0, "p", 44);
|
|
323
332
|
} if (rf & 2) {
|
|
324
333
|
const ctx_r12 = i0.ɵɵnextContext();
|
|
325
334
|
const field_r14 = ctx_r12.$implicit;
|
|
@@ -330,12 +339,12 @@ function MJCheckoutWidgetComponent_Conditional_18_For_7_For_5_Case_9_Template(rf
|
|
|
330
339
|
i0.ɵɵadvance();
|
|
331
340
|
i0.ɵɵconditional(ctx_r0.isLockedEmail($index_r15, field_r14.name) ? 1 : -1);
|
|
332
341
|
} }
|
|
333
|
-
function
|
|
334
|
-
i0.ɵɵelementStart(0, "div",
|
|
342
|
+
function MJCheckoutWidgetComponent_Conditional_19_For_7_For_5_Template(rf, ctx) { if (rf & 1) {
|
|
343
|
+
i0.ɵɵelementStart(0, "div", 18)(1, "label", 19);
|
|
335
344
|
i0.ɵɵtext(2);
|
|
336
|
-
i0.ɵɵconditionalCreate(3,
|
|
345
|
+
i0.ɵɵconditionalCreate(3, MJCheckoutWidgetComponent_Conditional_19_For_7_For_5_Conditional_3_Template, 2, 0, "span", 20);
|
|
337
346
|
i0.ɵɵelementEnd();
|
|
338
|
-
i0.ɵɵconditionalCreate(4,
|
|
347
|
+
i0.ɵɵconditionalCreate(4, MJCheckoutWidgetComponent_Conditional_19_For_7_For_5_Case_4_Template, 2, 3, "textarea", 33)(5, MJCheckoutWidgetComponent_Conditional_19_For_7_For_5_Case_5_Template, 5, 4, "select", 34)(6, MJCheckoutWidgetComponent_Conditional_19_For_7_For_5_Case_6_Template, 4, 2, "label", 35)(7, MJCheckoutWidgetComponent_Conditional_19_For_7_For_5_Case_7_Template, 1, 3, "input", 36)(8, MJCheckoutWidgetComponent_Conditional_19_For_7_For_5_Case_8_Template, 1, 2, "input", 37)(9, MJCheckoutWidgetComponent_Conditional_19_For_7_For_5_Case_9_Template, 2, 6);
|
|
339
348
|
i0.ɵɵelementEnd();
|
|
340
349
|
} if (rf & 2) {
|
|
341
350
|
let tmp_24_0;
|
|
@@ -348,12 +357,12 @@ function MJCheckoutWidgetComponent_Conditional_18_For_7_For_5_Template(rf, ctx)
|
|
|
348
357
|
i0.ɵɵadvance();
|
|
349
358
|
i0.ɵɵconditional((tmp_24_0 = field_r14.type) === "textarea" ? 4 : tmp_24_0 === "select" ? 5 : tmp_24_0 === "boolean" ? 6 : tmp_24_0 === "number" ? 7 : tmp_24_0 === "date" ? 8 : 9);
|
|
350
359
|
} }
|
|
351
|
-
function
|
|
352
|
-
i0.ɵɵelementStart(0, "div",
|
|
360
|
+
function MJCheckoutWidgetComponent_Conditional_19_For_7_Template(rf, ctx) { if (rf & 1) {
|
|
361
|
+
i0.ɵɵelementStart(0, "div", 48)(1, "div", 49);
|
|
353
362
|
i0.ɵɵtext(2);
|
|
354
363
|
i0.ɵɵelementEnd();
|
|
355
|
-
i0.ɵɵelementStart(3, "div",
|
|
356
|
-
i0.ɵɵrepeaterCreate(4,
|
|
364
|
+
i0.ɵɵelementStart(3, "div", 17);
|
|
365
|
+
i0.ɵɵrepeaterCreate(4, MJCheckoutWidgetComponent_Conditional_19_For_7_For_5_Template, 10, 5, "div", 32, _forTrack2);
|
|
357
366
|
i0.ɵɵelementEnd()();
|
|
358
367
|
} if (rf & 2) {
|
|
359
368
|
const $index_r23 = ctx.$index;
|
|
@@ -363,17 +372,17 @@ function MJCheckoutWidgetComponent_Conditional_18_For_7_Template(rf, ctx) { if (
|
|
|
363
372
|
i0.ɵɵadvance(2);
|
|
364
373
|
i0.ɵɵrepeater(ctx_r0.activeFieldDefs());
|
|
365
374
|
} }
|
|
366
|
-
function
|
|
375
|
+
function MJCheckoutWidgetComponent_Conditional_19_Template(rf, ctx) { if (rf & 1) {
|
|
367
376
|
const _r11 = i0.ɵɵgetCurrentView();
|
|
368
|
-
i0.ɵɵelementStart(0, "div",
|
|
377
|
+
i0.ɵɵelementStart(0, "div", 45)(1, "h3", 16);
|
|
369
378
|
i0.ɵɵtext(2);
|
|
370
379
|
i0.ɵɵelementEnd();
|
|
371
|
-
i0.ɵɵelementStart(3, "button",
|
|
372
|
-
i0.ɵɵlistener("click", function
|
|
380
|
+
i0.ɵɵelementStart(3, "button", 46);
|
|
381
|
+
i0.ɵɵlistener("click", function MJCheckoutWidgetComponent_Conditional_19_Template_button_click_3_listener() { i0.ɵɵrestoreView(_r11); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.copyPrimaryToAll()); });
|
|
373
382
|
i0.ɵɵtext(4, "Copy Primary Info to All");
|
|
374
383
|
i0.ɵɵelementEnd()();
|
|
375
|
-
i0.ɵɵelementStart(5, "div",
|
|
376
|
-
i0.ɵɵrepeaterCreate(6,
|
|
384
|
+
i0.ɵɵelementStart(5, "div", 47);
|
|
385
|
+
i0.ɵɵrepeaterCreate(6, MJCheckoutWidgetComponent_Conditional_19_For_7_Template, 6, 1, "div", 48, i0.ɵɵrepeaterTrackByIndex);
|
|
377
386
|
i0.ɵɵelementEnd();
|
|
378
387
|
} if (rf & 2) {
|
|
379
388
|
const ctx_r0 = i0.ɵɵnextContext();
|
|
@@ -382,8 +391,8 @@ function MJCheckoutWidgetComponent_Conditional_18_Template(rf, ctx) { if (rf & 1
|
|
|
382
391
|
i0.ɵɵadvance(4);
|
|
383
392
|
i0.ɵɵrepeater(ctx_r0.units());
|
|
384
393
|
} }
|
|
385
|
-
function
|
|
386
|
-
i0.ɵɵelementStart(0, "option",
|
|
394
|
+
function MJCheckoutWidgetComponent_For_33_Template(rf, ctx) { if (rf & 1) {
|
|
395
|
+
i0.ɵɵelementStart(0, "option", 22);
|
|
387
396
|
i0.ɵɵtext(1);
|
|
388
397
|
i0.ɵɵelementEnd();
|
|
389
398
|
} if (rf & 2) {
|
|
@@ -392,8 +401,8 @@ function MJCheckoutWidgetComponent_For_32_Template(rf, ctx) { if (rf & 1) {
|
|
|
392
401
|
i0.ɵɵadvance();
|
|
393
402
|
i0.ɵɵtextInterpolate(c_r24.Name);
|
|
394
403
|
} }
|
|
395
|
-
function
|
|
396
|
-
i0.ɵɵelementStart(0, "option",
|
|
404
|
+
function MJCheckoutWidgetComponent_Conditional_34_For_9_Template(rf, ctx) { if (rf & 1) {
|
|
405
|
+
i0.ɵɵelementStart(0, "option", 22);
|
|
397
406
|
i0.ɵɵtext(1);
|
|
398
407
|
i0.ɵɵelementEnd();
|
|
399
408
|
} if (rf & 2) {
|
|
@@ -402,19 +411,19 @@ function MJCheckoutWidgetComponent_Conditional_33_For_9_Template(rf, ctx) { if (
|
|
|
402
411
|
i0.ɵɵadvance();
|
|
403
412
|
i0.ɵɵtextInterpolate(r_r26.Name);
|
|
404
413
|
} }
|
|
405
|
-
function
|
|
414
|
+
function MJCheckoutWidgetComponent_Conditional_34_Template(rf, ctx) { if (rf & 1) {
|
|
406
415
|
const _r25 = i0.ɵɵgetCurrentView();
|
|
407
|
-
i0.ɵɵelementStart(0, "div",
|
|
416
|
+
i0.ɵɵelementStart(0, "div", 18)(1, "label", 19);
|
|
408
417
|
i0.ɵɵtext(2, " State / Province ");
|
|
409
|
-
i0.ɵɵelementStart(3, "span",
|
|
418
|
+
i0.ɵɵelementStart(3, "span", 20);
|
|
410
419
|
i0.ɵɵtext(4, "*");
|
|
411
420
|
i0.ɵɵelementEnd()();
|
|
412
|
-
i0.ɵɵelementStart(5, "select",
|
|
413
|
-
i0.ɵɵlistener("ngModelChange", function
|
|
414
|
-
i0.ɵɵelementStart(6, "option",
|
|
421
|
+
i0.ɵɵelementStart(5, "select", 50);
|
|
422
|
+
i0.ɵɵlistener("ngModelChange", function MJCheckoutWidgetComponent_Conditional_34_Template_select_ngModelChange_5_listener($event) { i0.ɵɵrestoreView(_r25); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.onBillingRegionChange($event)); });
|
|
423
|
+
i0.ɵɵelementStart(6, "option", 22);
|
|
415
424
|
i0.ɵɵtext(7, "Select state or province");
|
|
416
425
|
i0.ɵɵelementEnd();
|
|
417
|
-
i0.ɵɵrepeaterCreate(8,
|
|
426
|
+
i0.ɵɵrepeaterCreate(8, MJCheckoutWidgetComponent_Conditional_34_For_9_Template, 2, 2, "option", 22, _forTrack0);
|
|
418
427
|
i0.ɵɵelementEnd()();
|
|
419
428
|
} if (rf & 2) {
|
|
420
429
|
const ctx_r0 = i0.ɵɵnextContext();
|
|
@@ -427,18 +436,18 @@ function MJCheckoutWidgetComponent_Conditional_33_Template(rf, ctx) { if (rf & 1
|
|
|
427
436
|
i0.ɵɵadvance(2);
|
|
428
437
|
i0.ɵɵrepeater(ctx_r0.billingRegions());
|
|
429
438
|
} }
|
|
430
|
-
function
|
|
431
|
-
i0.ɵɵelementStart(0, "span",
|
|
439
|
+
function MJCheckoutWidgetComponent_Conditional_38_Template(rf, ctx) { if (rf & 1) {
|
|
440
|
+
i0.ɵɵelementStart(0, "span", 20);
|
|
432
441
|
i0.ɵɵtext(1, "*");
|
|
433
442
|
i0.ɵɵelementEnd();
|
|
434
443
|
} }
|
|
435
|
-
function
|
|
436
|
-
i0.ɵɵelementStart(0, "span",
|
|
444
|
+
function MJCheckoutWidgetComponent_Conditional_40_For_5_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
445
|
+
i0.ɵɵelementStart(0, "span", 20);
|
|
437
446
|
i0.ɵɵtext(1, "*");
|
|
438
447
|
i0.ɵɵelementEnd();
|
|
439
448
|
} }
|
|
440
|
-
function
|
|
441
|
-
i0.ɵɵelementStart(0, "option",
|
|
449
|
+
function MJCheckoutWidgetComponent_Conditional_40_For_5_Conditional_4_For_4_Template(rf, ctx) { if (rf & 1) {
|
|
450
|
+
i0.ɵɵelementStart(0, "option", 22);
|
|
442
451
|
i0.ɵɵtext(1);
|
|
443
452
|
i0.ɵɵelementEnd();
|
|
444
453
|
} if (rf & 2) {
|
|
@@ -448,10 +457,10 @@ function MJCheckoutWidgetComponent_Conditional_39_For_5_Conditional_4_For_4_Temp
|
|
|
448
457
|
i0.ɵɵadvance();
|
|
449
458
|
i0.ɵɵtextInterpolate(ctx_r0.optionLabel(opt_r29));
|
|
450
459
|
} }
|
|
451
|
-
function
|
|
460
|
+
function MJCheckoutWidgetComponent_Conditional_40_For_5_Conditional_4_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
452
461
|
const _r30 = i0.ɵɵgetCurrentView();
|
|
453
|
-
i0.ɵɵelementStart(0, "input",
|
|
454
|
-
i0.ɵɵlistener("ngModelChange", function
|
|
462
|
+
i0.ɵɵelementStart(0, "input", 55);
|
|
463
|
+
i0.ɵɵlistener("ngModelChange", function MJCheckoutWidgetComponent_Conditional_40_For_5_Conditional_4_Conditional_5_Template_input_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r30); const question_r28 = i0.ɵɵnextContext(2).$implicit; const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.updateAnswer(question_r28.key, { OtherText: $event })); });
|
|
455
464
|
i0.ɵɵelementEnd();
|
|
456
465
|
} if (rf & 2) {
|
|
457
466
|
const question_r28 = i0.ɵɵnextContext(2).$implicit;
|
|
@@ -459,16 +468,16 @@ function MJCheckoutWidgetComponent_Conditional_39_For_5_Conditional_4_Conditiona
|
|
|
459
468
|
i0.ɵɵproperty("ngModel", ctx_r0.answerFor(question_r28.key).OtherText ?? "");
|
|
460
469
|
i0.ɵɵattribute("aria-label", question_r28.label + " (please specify)")("maxlength", ctx_r0.answerMaxLength(question_r28));
|
|
461
470
|
} }
|
|
462
|
-
function
|
|
471
|
+
function MJCheckoutWidgetComponent_Conditional_40_For_5_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
463
472
|
const _r27 = i0.ɵɵgetCurrentView();
|
|
464
|
-
i0.ɵɵelementStart(0, "select",
|
|
465
|
-
i0.ɵɵlistener("ngModelChange", function
|
|
466
|
-
i0.ɵɵelementStart(1, "option",
|
|
473
|
+
i0.ɵɵelementStart(0, "select", 53);
|
|
474
|
+
i0.ɵɵlistener("ngModelChange", function MJCheckoutWidgetComponent_Conditional_40_For_5_Conditional_4_Template_select_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r27); const question_r28 = i0.ɵɵnextContext().$implicit; const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.updateAnswer(question_r28.key, { Value: $event })); });
|
|
475
|
+
i0.ɵɵelementStart(1, "option", 22);
|
|
467
476
|
i0.ɵɵtext(2, "Select an answer");
|
|
468
477
|
i0.ɵɵelementEnd();
|
|
469
|
-
i0.ɵɵrepeaterCreate(3,
|
|
478
|
+
i0.ɵɵrepeaterCreate(3, MJCheckoutWidgetComponent_Conditional_40_For_5_Conditional_4_For_4_Template, 2, 2, "option", 22, _forTrack4, true);
|
|
470
479
|
i0.ɵɵelementEnd();
|
|
471
|
-
i0.ɵɵconditionalCreate(5,
|
|
480
|
+
i0.ɵɵconditionalCreate(5, MJCheckoutWidgetComponent_Conditional_40_For_5_Conditional_4_Conditional_5_Template, 1, 3, "input", 54);
|
|
472
481
|
} if (rf & 2) {
|
|
473
482
|
const question_r28 = i0.ɵɵnextContext().$implicit;
|
|
474
483
|
const ctx_r0 = i0.ɵɵnextContext(2);
|
|
@@ -480,10 +489,10 @@ function MJCheckoutWidgetComponent_Conditional_39_For_5_Conditional_4_Template(r
|
|
|
480
489
|
i0.ɵɵadvance(2);
|
|
481
490
|
i0.ɵɵconditional(ctx_r0.isOtherChosen(question_r28) ? 5 : -1);
|
|
482
491
|
} }
|
|
483
|
-
function
|
|
492
|
+
function MJCheckoutWidgetComponent_Conditional_40_For_5_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
484
493
|
const _r31 = i0.ɵɵgetCurrentView();
|
|
485
|
-
i0.ɵɵelementStart(0, "input",
|
|
486
|
-
i0.ɵɵlistener("ngModelChange", function
|
|
494
|
+
i0.ɵɵelementStart(0, "input", 56);
|
|
495
|
+
i0.ɵɵlistener("ngModelChange", function MJCheckoutWidgetComponent_Conditional_40_For_5_Conditional_5_Template_input_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r31); const question_r28 = i0.ɵɵnextContext().$implicit; const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.updateAnswer(question_r28.key, { Value: $event })); });
|
|
487
496
|
i0.ɵɵelementEnd();
|
|
488
497
|
} if (rf & 2) {
|
|
489
498
|
const question_r28 = i0.ɵɵnextContext().$implicit;
|
|
@@ -491,12 +500,12 @@ function MJCheckoutWidgetComponent_Conditional_39_For_5_Conditional_5_Template(r
|
|
|
491
500
|
i0.ɵɵproperty("id", ctx_r0.widgetInstanceId + "-q-" + question_r28.key)("ngModel", ctx_r0.answerFor(question_r28.key).Value ?? "")("required", question_r28.required || false);
|
|
492
501
|
i0.ɵɵattribute("maxlength", ctx_r0.answerMaxLength(question_r28));
|
|
493
502
|
} }
|
|
494
|
-
function
|
|
495
|
-
i0.ɵɵelementStart(0, "div",
|
|
503
|
+
function MJCheckoutWidgetComponent_Conditional_40_For_5_Template(rf, ctx) { if (rf & 1) {
|
|
504
|
+
i0.ɵɵelementStart(0, "div", 51)(1, "label", 19);
|
|
496
505
|
i0.ɵɵtext(2);
|
|
497
|
-
i0.ɵɵconditionalCreate(3,
|
|
506
|
+
i0.ɵɵconditionalCreate(3, MJCheckoutWidgetComponent_Conditional_40_For_5_Conditional_3_Template, 2, 0, "span", 20);
|
|
498
507
|
i0.ɵɵelementEnd();
|
|
499
|
-
i0.ɵɵconditionalCreate(4,
|
|
508
|
+
i0.ɵɵconditionalCreate(4, MJCheckoutWidgetComponent_Conditional_40_For_5_Conditional_4_Template, 6, 5)(5, MJCheckoutWidgetComponent_Conditional_40_For_5_Conditional_5_Template, 1, 4, "input", 52);
|
|
500
509
|
i0.ɵɵelementEnd();
|
|
501
510
|
} if (rf & 2) {
|
|
502
511
|
const question_r28 = ctx.$implicit;
|
|
@@ -510,27 +519,27 @@ function MJCheckoutWidgetComponent_Conditional_39_For_5_Template(rf, ctx) { if (
|
|
|
510
519
|
i0.ɵɵadvance();
|
|
511
520
|
i0.ɵɵconditional(question_r28.type === "select" ? 4 : 5);
|
|
512
521
|
} }
|
|
513
|
-
function
|
|
514
|
-
i0.ɵɵelementStart(0, "section",
|
|
522
|
+
function MJCheckoutWidgetComponent_Conditional_40_Template(rf, ctx) { if (rf & 1) {
|
|
523
|
+
i0.ɵɵelementStart(0, "section", 15)(1, "h3", 16);
|
|
515
524
|
i0.ɵɵtext(2, "A few questions");
|
|
516
525
|
i0.ɵɵelementEnd();
|
|
517
|
-
i0.ɵɵelementStart(3, "div",
|
|
518
|
-
i0.ɵɵrepeaterCreate(4,
|
|
526
|
+
i0.ɵɵelementStart(3, "div", 17);
|
|
527
|
+
i0.ɵɵrepeaterCreate(4, MJCheckoutWidgetComponent_Conditional_40_For_5_Template, 6, 4, "div", 51, _forTrack1);
|
|
519
528
|
i0.ɵɵelementEnd()();
|
|
520
529
|
} if (rf & 2) {
|
|
521
530
|
const ctx_r0 = i0.ɵɵnextContext();
|
|
522
531
|
i0.ɵɵadvance(4);
|
|
523
532
|
i0.ɵɵrepeater(ctx_r0.questions());
|
|
524
533
|
} }
|
|
525
|
-
function
|
|
526
|
-
i0.ɵɵelementStart(0, "span",
|
|
534
|
+
function MJCheckoutWidgetComponent_For_42_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
535
|
+
i0.ɵɵelementStart(0, "span", 20);
|
|
527
536
|
i0.ɵɵtext(1, "*");
|
|
528
537
|
i0.ɵɵelementEnd();
|
|
529
538
|
} }
|
|
530
|
-
function
|
|
539
|
+
function MJCheckoutWidgetComponent_For_42_For_9_Template(rf, ctx) { if (rf & 1) {
|
|
531
540
|
const _r32 = i0.ɵɵgetCurrentView();
|
|
532
|
-
i0.ɵɵelementStart(0, "label",
|
|
533
|
-
i0.ɵɵlistener("change", function
|
|
541
|
+
i0.ɵɵelementStart(0, "label", 35)(1, "input", 61);
|
|
542
|
+
i0.ɵɵlistener("change", function MJCheckoutWidgetComponent_For_42_For_9_Template_input_change_1_listener() { const opt_r33 = i0.ɵɵrestoreView(_r32).$implicit; const group_r34 = i0.ɵɵnextContext().$implicit; const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.toggleChoice(group_r34, ctx_r0.choiceValue(opt_r33))); });
|
|
534
543
|
i0.ɵɵelementEnd();
|
|
535
544
|
i0.ɵɵelementStart(2, "span");
|
|
536
545
|
i0.ɵɵtext(3);
|
|
@@ -545,16 +554,16 @@ function MJCheckoutWidgetComponent_For_41_For_9_Template(rf, ctx) { if (rf & 1)
|
|
|
545
554
|
i0.ɵɵadvance(2);
|
|
546
555
|
i0.ɵɵtextInterpolate(ctx_r0.choiceLabel(opt_r33));
|
|
547
556
|
} }
|
|
548
|
-
function
|
|
549
|
-
i0.ɵɵelementStart(0, "section",
|
|
557
|
+
function MJCheckoutWidgetComponent_For_42_Template(rf, ctx) { if (rf & 1) {
|
|
558
|
+
i0.ɵɵelementStart(0, "section", 15)(1, "fieldset", 57)(2, "legend", 16);
|
|
550
559
|
i0.ɵɵtext(3);
|
|
551
|
-
i0.ɵɵelementStart(4, "span",
|
|
560
|
+
i0.ɵɵelementStart(4, "span", 58);
|
|
552
561
|
i0.ɵɵtext(5);
|
|
553
562
|
i0.ɵɵelementEnd();
|
|
554
|
-
i0.ɵɵconditionalCreate(6,
|
|
563
|
+
i0.ɵɵconditionalCreate(6, MJCheckoutWidgetComponent_For_42_Conditional_6_Template, 2, 0, "span", 20);
|
|
555
564
|
i0.ɵɵelementEnd();
|
|
556
|
-
i0.ɵɵelementStart(7, "div",
|
|
557
|
-
i0.ɵɵrepeaterCreate(8,
|
|
565
|
+
i0.ɵɵelementStart(7, "div", 59);
|
|
566
|
+
i0.ɵɵrepeaterCreate(8, MJCheckoutWidgetComponent_For_42_For_9_Template, 4, 5, "label", 60, _forTrack5, true);
|
|
558
567
|
i0.ɵɵelementEnd()()();
|
|
559
568
|
} if (rf & 2) {
|
|
560
569
|
const group_r34 = ctx.$implicit;
|
|
@@ -568,8 +577,8 @@ function MJCheckoutWidgetComponent_For_41_Template(rf, ctx) { if (rf & 1) {
|
|
|
568
577
|
i0.ɵɵadvance(2);
|
|
569
578
|
i0.ɵɵrepeater(group_r34.options);
|
|
570
579
|
} }
|
|
571
|
-
function
|
|
572
|
-
i0.ɵɵelementStart(0, "p",
|
|
580
|
+
function MJCheckoutWidgetComponent_Conditional_43_Conditional_10_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
581
|
+
i0.ɵɵelementStart(0, "p", 77);
|
|
573
582
|
i0.ɵɵtext(1);
|
|
574
583
|
i0.ɵɵelementEnd();
|
|
575
584
|
} if (rf & 2) {
|
|
@@ -577,8 +586,8 @@ function MJCheckoutWidgetComponent_Conditional_42_Conditional_10_Conditional_7_T
|
|
|
577
586
|
i0.ɵɵadvance();
|
|
578
587
|
i0.ɵɵtextInterpolate(ctx_r0.promotionError);
|
|
579
588
|
} }
|
|
580
|
-
function
|
|
581
|
-
i0.ɵɵelementStart(0, "p",
|
|
589
|
+
function MJCheckoutWidgetComponent_Conditional_43_Conditional_10_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
590
|
+
i0.ɵɵelementStart(0, "p", 78);
|
|
582
591
|
i0.ɵɵtext(1);
|
|
583
592
|
i0.ɵɵelementEnd();
|
|
584
593
|
} if (rf & 2) {
|
|
@@ -587,19 +596,19 @@ function MJCheckoutWidgetComponent_Conditional_42_Conditional_10_Conditional_8_T
|
|
|
587
596
|
i0.ɵɵadvance();
|
|
588
597
|
i0.ɵɵtextInterpolate3(" ", promo_r36.code, " applied: \u2212", ctx_r0.currencySymbol(), "", promo_r36.discount.toFixed(2), " ");
|
|
589
598
|
} }
|
|
590
|
-
function
|
|
599
|
+
function MJCheckoutWidgetComponent_Conditional_43_Conditional_10_Template(rf, ctx) { if (rf & 1) {
|
|
591
600
|
const _r35 = i0.ɵɵgetCurrentView();
|
|
592
|
-
i0.ɵɵelementStart(0, "div",
|
|
601
|
+
i0.ɵɵelementStart(0, "div", 67)(1, "label", 73);
|
|
593
602
|
i0.ɵɵtext(2, "Promo code");
|
|
594
603
|
i0.ɵɵelementEnd();
|
|
595
|
-
i0.ɵɵelementStart(3, "div",
|
|
596
|
-
i0.ɵɵlistener("input", function
|
|
604
|
+
i0.ɵɵelementStart(3, "div", 74)(4, "input", 75);
|
|
605
|
+
i0.ɵɵlistener("input", function MJCheckoutWidgetComponent_Conditional_43_Conditional_10_Template_input_input_4_listener($event) { i0.ɵɵrestoreView(_r35); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.promotionCodeInput.set($event.target.value)); })("keydown.enter", function MJCheckoutWidgetComponent_Conditional_43_Conditional_10_Template_input_keydown_enter_4_listener() { i0.ɵɵrestoreView(_r35); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.applyPromotionCode()); });
|
|
597
606
|
i0.ɵɵelementEnd();
|
|
598
|
-
i0.ɵɵelementStart(5, "button",
|
|
599
|
-
i0.ɵɵlistener("click", function
|
|
607
|
+
i0.ɵɵelementStart(5, "button", 76);
|
|
608
|
+
i0.ɵɵlistener("click", function MJCheckoutWidgetComponent_Conditional_43_Conditional_10_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r35); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.applyPromotionCode()); });
|
|
600
609
|
i0.ɵɵtext(6, "Apply");
|
|
601
610
|
i0.ɵɵelementEnd()();
|
|
602
|
-
i0.ɵɵconditionalCreate(7,
|
|
611
|
+
i0.ɵɵconditionalCreate(7, MJCheckoutWidgetComponent_Conditional_43_Conditional_10_Conditional_7_Template, 2, 1, "p", 77)(8, MJCheckoutWidgetComponent_Conditional_43_Conditional_10_Conditional_8_Template, 2, 3, "p", 78);
|
|
603
612
|
i0.ɵɵelementEnd();
|
|
604
613
|
} if (rf & 2) {
|
|
605
614
|
let tmp_7_0;
|
|
@@ -613,8 +622,8 @@ function MJCheckoutWidgetComponent_Conditional_42_Conditional_10_Template(rf, ct
|
|
|
613
622
|
i0.ɵɵadvance(2);
|
|
614
623
|
i0.ɵɵconditional(ctx_r0.promotionError ? 7 : (tmp_7_0 = ctx_r0.activePromotion()) ? 8 : -1, tmp_7_0);
|
|
615
624
|
} }
|
|
616
|
-
function
|
|
617
|
-
i0.ɵɵelementStart(0, "p",
|
|
625
|
+
function MJCheckoutWidgetComponent_Conditional_43_Conditional_11_Template(rf, ctx) { if (rf & 1) {
|
|
626
|
+
i0.ɵɵelementStart(0, "p", 68);
|
|
618
627
|
i0.ɵɵtext(1);
|
|
619
628
|
i0.ɵɵelementEnd();
|
|
620
629
|
} if (rf & 2) {
|
|
@@ -623,10 +632,10 @@ function MJCheckoutWidgetComponent_Conditional_42_Conditional_11_Template(rf, ct
|
|
|
623
632
|
i0.ɵɵadvance();
|
|
624
633
|
i0.ɵɵtextInterpolate3(" ", member_r37.code ? member_r37.code + " member discount" : "Member discount", ": \u2212", ctx_r0.currencySymbol(), "", member_r37.discount.toFixed(2), " ");
|
|
625
634
|
} }
|
|
626
|
-
function
|
|
635
|
+
function MJCheckoutWidgetComponent_Conditional_43_Conditional_12_Template(rf, ctx) { if (rf & 1) {
|
|
627
636
|
const _r38 = i0.ɵɵgetCurrentView();
|
|
628
|
-
i0.ɵɵelementStart(0, "label",
|
|
629
|
-
i0.ɵɵlistener("change", function
|
|
637
|
+
i0.ɵɵelementStart(0, "label", 69)(1, "input", 61);
|
|
638
|
+
i0.ɵɵlistener("change", function MJCheckoutWidgetComponent_Conditional_43_Conditional_12_Template_input_change_1_listener($event) { i0.ɵɵrestoreView(_r38); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.autoRenewConsent.set($event.target.checked)); });
|
|
630
639
|
i0.ɵɵelementEnd();
|
|
631
640
|
i0.ɵɵelementStart(2, "span");
|
|
632
641
|
i0.ɵɵtext(3);
|
|
@@ -638,11 +647,11 @@ function MJCheckoutWidgetComponent_Conditional_42_Conditional_12_Template(rf, ct
|
|
|
638
647
|
i0.ɵɵadvance(2);
|
|
639
648
|
i0.ɵɵtextInterpolate(ctx);
|
|
640
649
|
} }
|
|
641
|
-
function
|
|
642
|
-
i0.ɵɵelementStart(0, "div",
|
|
650
|
+
function MJCheckoutWidgetComponent_Conditional_43_Conditional_13_Template(rf, ctx) { if (rf & 1) {
|
|
651
|
+
i0.ɵɵelementStart(0, "div", 70)(1, "span", 71);
|
|
643
652
|
i0.ɵɵtext(2, "Sales Tax");
|
|
644
653
|
i0.ɵɵelementEnd();
|
|
645
|
-
i0.ɵɵelementStart(3, "span",
|
|
654
|
+
i0.ɵɵelementStart(3, "span", 72);
|
|
646
655
|
i0.ɵɵtext(4);
|
|
647
656
|
i0.ɵɵelementEnd()();
|
|
648
657
|
} if (rf & 2) {
|
|
@@ -650,26 +659,26 @@ function MJCheckoutWidgetComponent_Conditional_42_Conditional_13_Template(rf, ct
|
|
|
650
659
|
i0.ɵɵadvance(4);
|
|
651
660
|
i0.ɵɵtextInterpolate2("", ctx_r0.currencySymbol(), "", (ctx_r0.quotedTax ?? 0).toFixed(2));
|
|
652
661
|
} }
|
|
653
|
-
function
|
|
654
|
-
i0.ɵɵelementStart(0, "section",
|
|
662
|
+
function MJCheckoutWidgetComponent_Conditional_43_Template(rf, ctx) { if (rf & 1) {
|
|
663
|
+
i0.ɵɵelementStart(0, "section", 62)(1, "h3", 16);
|
|
655
664
|
i0.ɵɵtext(2, "Payment");
|
|
656
665
|
i0.ɵɵelementEnd();
|
|
657
|
-
i0.ɵɵelementStart(3, "div",
|
|
658
|
-
i0.ɵɵelement(4, "div",
|
|
659
|
-
i0.ɵɵelementStart(5, "div",
|
|
666
|
+
i0.ɵɵelementStart(3, "div", 63);
|
|
667
|
+
i0.ɵɵelement(4, "div", 64);
|
|
668
|
+
i0.ɵɵelementStart(5, "div", 65)(6, "span", 66);
|
|
660
669
|
i0.ɵɵtext(7, "\uD83D\uDD12");
|
|
661
670
|
i0.ɵɵelementEnd();
|
|
662
671
|
i0.ɵɵelementStart(8, "span");
|
|
663
672
|
i0.ɵɵtext(9, "Secured by Stripe \u2022 PCI-DSS Level 1 Certified \u2022 End-to-end Encrypted");
|
|
664
673
|
i0.ɵɵelementEnd()()()();
|
|
665
|
-
i0.ɵɵconditionalCreate(10,
|
|
666
|
-
i0.ɵɵconditionalCreate(11,
|
|
667
|
-
i0.ɵɵconditionalCreate(12,
|
|
668
|
-
i0.ɵɵconditionalCreate(13,
|
|
669
|
-
i0.ɵɵelementStart(14, "div",
|
|
674
|
+
i0.ɵɵconditionalCreate(10, MJCheckoutWidgetComponent_Conditional_43_Conditional_10_Template, 9, 8, "div", 67);
|
|
675
|
+
i0.ɵɵconditionalCreate(11, MJCheckoutWidgetComponent_Conditional_43_Conditional_11_Template, 2, 3, "p", 68);
|
|
676
|
+
i0.ɵɵconditionalCreate(12, MJCheckoutWidgetComponent_Conditional_43_Conditional_12_Template, 4, 3, "label", 69);
|
|
677
|
+
i0.ɵɵconditionalCreate(13, MJCheckoutWidgetComponent_Conditional_43_Conditional_13_Template, 5, 2, "div", 70);
|
|
678
|
+
i0.ɵɵelementStart(14, "div", 70)(15, "span", 71);
|
|
670
679
|
i0.ɵɵtext(16, "Total Due");
|
|
671
680
|
i0.ɵɵelementEnd();
|
|
672
|
-
i0.ɵɵelementStart(17, "span",
|
|
681
|
+
i0.ɵɵelementStart(17, "span", 72);
|
|
673
682
|
i0.ɵɵtext(18);
|
|
674
683
|
i0.ɵɵelementEnd()();
|
|
675
684
|
} if (rf & 2) {
|
|
@@ -687,18 +696,18 @@ function MJCheckoutWidgetComponent_Conditional_42_Template(rf, ctx) { if (rf & 1
|
|
|
687
696
|
i0.ɵɵadvance(5);
|
|
688
697
|
i0.ɵɵtextInterpolate2("", ctx_r0.currencySymbol(), "", ctx_r0.totalGross().toFixed(2));
|
|
689
698
|
} }
|
|
690
|
-
function
|
|
691
|
-
i0.ɵɵelement(0, "span",
|
|
699
|
+
function MJCheckoutWidgetComponent_Conditional_46_Template(rf, ctx) { if (rf & 1) {
|
|
700
|
+
i0.ɵɵelement(0, "span", 79);
|
|
692
701
|
i0.ɵɵelementStart(1, "span");
|
|
693
702
|
i0.ɵɵtext(2, "Processing...");
|
|
694
703
|
i0.ɵɵelementEnd();
|
|
695
704
|
} }
|
|
696
|
-
function
|
|
705
|
+
function MJCheckoutWidgetComponent_Conditional_47_Template(rf, ctx) { if (rf & 1) {
|
|
697
706
|
i0.ɵɵelementStart(0, "span");
|
|
698
707
|
i0.ɵɵtext(1, "Complete Free Registration");
|
|
699
708
|
i0.ɵɵelementEnd();
|
|
700
709
|
} }
|
|
701
|
-
function
|
|
710
|
+
function MJCheckoutWidgetComponent_Conditional_48_Template(rf, ctx) { if (rf & 1) {
|
|
702
711
|
i0.ɵɵelementStart(0, "span");
|
|
703
712
|
i0.ɵɵtext(1);
|
|
704
713
|
i0.ɵɵelementEnd();
|
|
@@ -707,6 +716,20 @@ function MJCheckoutWidgetComponent_Conditional_47_Template(rf, ctx) { if (rf & 1
|
|
|
707
716
|
i0.ɵɵadvance();
|
|
708
717
|
i0.ɵɵtextInterpolate2("Pay ", ctx_r0.currencySymbol(), "", ctx_r0.totalGross().toFixed(2));
|
|
709
718
|
} }
|
|
719
|
+
/**
|
|
720
|
+
* Whether a unit field identifies one attendee and must not be copied from the first attendee to
|
|
721
|
+
* the others (#780). A field definition's `perPerson` decides when set; otherwise a name that holds
|
|
722
|
+
* "email" or "name", or ends in "id" (`attendeeEmail`, `badgeName`, `studentId`), is per person.
|
|
723
|
+
* Shared detail such as company or dietary needs is copied.
|
|
724
|
+
*/
|
|
725
|
+
export function IsPerPersonCheckoutField(key, defs) {
|
|
726
|
+
const def = defs.find((d) => d.name.toLowerCase() === key.toLowerCase());
|
|
727
|
+
if (typeof def?.perPerson === 'boolean') {
|
|
728
|
+
return def.perPerson;
|
|
729
|
+
}
|
|
730
|
+
const lower = key.toLowerCase();
|
|
731
|
+
return lower.includes('email') || lower.includes('name') || lower.endsWith('id');
|
|
732
|
+
}
|
|
710
733
|
export class MJCheckoutWidgetComponent {
|
|
711
734
|
el;
|
|
712
735
|
renderer;
|
|
@@ -714,6 +737,8 @@ export class MJCheckoutWidgetComponent {
|
|
|
714
737
|
_fallbackSessionKey = typeof crypto !== 'undefined' && crypto.randomUUID ? crypto.randomUUID() : 'ck_sess_' + Math.random().toString(36).substring(2, 15);
|
|
715
738
|
_config = signal(null, ...(ngDevMode ? [{ debugName: "_config" }] : []));
|
|
716
739
|
_lastMountedJS = null;
|
|
740
|
+
/** Hooks this widget's own `customUI.js` registered; cleared on destroy (#779). */
|
|
741
|
+
_instanceHooks = {};
|
|
717
742
|
_customStyleEl = null;
|
|
718
743
|
constructor(el, renderer) {
|
|
719
744
|
this.el = el;
|
|
@@ -736,6 +761,18 @@ export class MJCheckoutWidgetComponent {
|
|
|
736
761
|
get errorMessage() {
|
|
737
762
|
return this._errorMessage();
|
|
738
763
|
}
|
|
764
|
+
_noticeMessage = signal(null, ...(ngDevMode ? [{ debugName: "_noticeMessage" }] : []));
|
|
765
|
+
/**
|
|
766
|
+
* Information for the buyer that is not a failure, such as the total including tax before the
|
|
767
|
+
* second press of Pay (#819). Shown in the notice style, and only while no error shows.
|
|
768
|
+
*/
|
|
769
|
+
set noticeMessage(val) {
|
|
770
|
+
this._noticeMessage.set(val);
|
|
771
|
+
}
|
|
772
|
+
get noticeMessage() {
|
|
773
|
+
return this._noticeMessage();
|
|
774
|
+
}
|
|
775
|
+
displayNoticeMessage = computed(() => (this.displayErrorMessage() ? null : this._noticeMessage()), ...(ngDevMode ? [{ debugName: "displayNoticeMessage" }] : []));
|
|
739
776
|
isPaymentReady = false;
|
|
740
777
|
stripePaymentMethodId = null;
|
|
741
778
|
/** An e-mail the embedding host already knows. Fills the field only while it is empty. */
|
|
@@ -1010,6 +1047,9 @@ export class MJCheckoutWidgetComponent {
|
|
|
1010
1047
|
}
|
|
1011
1048
|
ngOnDestroy() {
|
|
1012
1049
|
this.executeLifecycleHook('onDestroy', { component: this });
|
|
1050
|
+
// A destroyed widget's hooks must not run for the next widget on the page (#779).
|
|
1051
|
+
this._instanceHooks = {};
|
|
1052
|
+
this._lastMountedJS = null;
|
|
1013
1053
|
if (this._customStyleEl && this._customStyleEl.parentNode) {
|
|
1014
1054
|
this._customStyleEl.parentNode.removeChild(this._customStyleEl);
|
|
1015
1055
|
this._customStyleEl = null;
|
|
@@ -1063,25 +1103,68 @@ export class MJCheckoutWidgetComponent {
|
|
|
1063
1103
|
const tagged = document.querySelector('script[nonce], style[nonce]');
|
|
1064
1104
|
return tagged?.nonce || tagged?.getAttribute('nonce') || '';
|
|
1065
1105
|
}
|
|
1106
|
+
/**
|
|
1107
|
+
* Runs the widget's `customUI.js`. Its hooks belong to this widget alone (#779): the script
|
|
1108
|
+
* registers them on `widgetContext.hooks`. A script written for the page-wide
|
|
1109
|
+
* `window.MJCheckoutHooks` still works: whatever it assigns there while it runs is moved to this
|
|
1110
|
+
* widget's registry and the page-wide object is put back, so two widgets never call each other's
|
|
1111
|
+
* hooks.
|
|
1112
|
+
*/
|
|
1066
1113
|
mountCustomJS(scriptContent) {
|
|
1067
1114
|
if (!scriptContent || typeof window === 'undefined')
|
|
1068
1115
|
return;
|
|
1069
1116
|
this._lastMountedJS = scriptContent;
|
|
1117
|
+
const hooks = {};
|
|
1118
|
+
this._instanceHooks = hooks;
|
|
1119
|
+
const pageHooks = window.MJCheckoutHooks;
|
|
1120
|
+
const pageHookEntries = pageHooks ? { ...pageHooks } : undefined;
|
|
1070
1121
|
try {
|
|
1071
1122
|
const runner = new Function('widgetContext', scriptContent);
|
|
1072
|
-
runner({ component: this, config: this.config });
|
|
1123
|
+
runner({ component: this, config: this.config, hooks });
|
|
1073
1124
|
}
|
|
1074
1125
|
catch (err) {
|
|
1075
1126
|
console.warn('[MJCheckoutWidget] CustomJS evaluation notice:', err);
|
|
1076
1127
|
this.internalErrorMessage.set('Notice: Custom widget scripts could not be evaluated under current security policy.');
|
|
1077
1128
|
}
|
|
1129
|
+
finally {
|
|
1130
|
+
const after = window.MJCheckoutHooks;
|
|
1131
|
+
if (after && (after !== pageHooks || !this.sameHooks(after, pageHookEntries))) {
|
|
1132
|
+
for (const [name, fn] of Object.entries(after)) {
|
|
1133
|
+
if (typeof fn === 'function' && pageHookEntries?.[name] !== fn && !(name in hooks)) {
|
|
1134
|
+
hooks[name] = fn;
|
|
1135
|
+
}
|
|
1136
|
+
}
|
|
1137
|
+
if (pageHooks) {
|
|
1138
|
+
for (const key of Object.keys(pageHooks))
|
|
1139
|
+
delete pageHooks[key];
|
|
1140
|
+
Object.assign(pageHooks, pageHookEntries);
|
|
1141
|
+
window.MJCheckoutHooks = pageHooks;
|
|
1142
|
+
}
|
|
1143
|
+
else {
|
|
1144
|
+
delete window.MJCheckoutHooks;
|
|
1145
|
+
}
|
|
1146
|
+
}
|
|
1147
|
+
}
|
|
1148
|
+
}
|
|
1149
|
+
sameHooks(a, b) {
|
|
1150
|
+
const keysA = Object.keys(a);
|
|
1151
|
+
return !!b && keysA.length === Object.keys(b).length && keysA.every((k) => a[k] === b[k]);
|
|
1152
|
+
}
|
|
1153
|
+
/** This widget's hook, else the host page's `window.MJCheckoutHooks` hook. */
|
|
1154
|
+
resolveHook(hookName) {
|
|
1155
|
+
const own = this._instanceHooks[hookName];
|
|
1156
|
+
if (typeof own === 'function')
|
|
1157
|
+
return own;
|
|
1158
|
+
const page = typeof window !== 'undefined' ? window.MJCheckoutHooks?.[hookName] : undefined;
|
|
1159
|
+
return typeof page === 'function' ? page : null;
|
|
1078
1160
|
}
|
|
1079
1161
|
executeLifecycleHook(hookName, payload) {
|
|
1080
1162
|
if (typeof window === 'undefined')
|
|
1081
1163
|
return undefined;
|
|
1082
1164
|
try {
|
|
1083
|
-
|
|
1084
|
-
|
|
1165
|
+
const hook = this.resolveHook(hookName);
|
|
1166
|
+
if (hook) {
|
|
1167
|
+
return hook(payload, { component: this, config: this.config });
|
|
1085
1168
|
}
|
|
1086
1169
|
}
|
|
1087
1170
|
catch (err) {
|
|
@@ -1214,8 +1297,9 @@ export class MJCheckoutWidgetComponent {
|
|
|
1214
1297
|
if (i === 0)
|
|
1215
1298
|
return unit;
|
|
1216
1299
|
const copied = { ...unit };
|
|
1300
|
+
const defs = this.activeFieldDefs();
|
|
1217
1301
|
for (const [key, val] of Object.entries(primary)) {
|
|
1218
|
-
if (key
|
|
1302
|
+
if (!IsPerPersonCheckoutField(key, defs)) {
|
|
1219
1303
|
copied[key] = val;
|
|
1220
1304
|
}
|
|
1221
1305
|
}
|
|
@@ -1341,59 +1425,59 @@ export class MJCheckoutWidgetComponent {
|
|
|
1341
1425
|
};
|
|
1342
1426
|
}
|
|
1343
1427
|
static ɵfac = function MJCheckoutWidgetComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || MJCheckoutWidgetComponent)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.Renderer2)); };
|
|
1344
|
-
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MJCheckoutWidgetComponent, selectors: [["mj-checkout-widget"]], inputs: { config: "config", distributionSlug: "distributionSlug", sessionKey: "sessionKey", isProcessing: "isProcessing", errorMessage: "errorMessage", isPaymentReady: "isPaymentReady", stripePaymentMethodId: "stripePaymentMethodId", prefillEmail: "prefillEmail", appliedPromotion: "appliedPromotion", promotionError: "promotionError", memberDiscount: "memberDiscount", lockEmail: "lockEmail", serverPricedTotal: "serverPricedTotal", quotedTotal: "quotedTotal", quotedTax: "quotedTax" }, outputs: { submitted: "submitted", promotionCodeApplied: "promotionCodeApplied", cancelled: "cancelled", quoteInvalidated: "quoteInvalidated", quoteRequested: "quoteRequested" }, features: [i0.ɵɵNgOnChangesFeature], decls:
|
|
1428
|
+
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MJCheckoutWidgetComponent, selectors: [["mj-checkout-widget"]], inputs: { config: "config", distributionSlug: "distributionSlug", sessionKey: "sessionKey", isProcessing: "isProcessing", errorMessage: "errorMessage", noticeMessage: "noticeMessage", isPaymentReady: "isPaymentReady", stripePaymentMethodId: "stripePaymentMethodId", prefillEmail: "prefillEmail", appliedPromotion: "appliedPromotion", promotionError: "promotionError", memberDiscount: "memberDiscount", lockEmail: "lockEmail", serverPricedTotal: "serverPricedTotal", quotedTotal: "quotedTotal", quotedTax: "quotedTax" }, outputs: { submitted: "submitted", promotionCodeApplied: "promotionCodeApplied", cancelled: "cancelled", quoteInvalidated: "quoteInvalidated", quoteRequested: "quoteRequested" }, features: [i0.ɵɵNgOnChangesFeature], decls: 51, vars: 35, consts: [[1, "mj-checkout-widget-container"], [1, "mj-widget-header"], [1, "mj-widget-title"], [1, "mj-widget-description"], ["role", "alert", 1, "mj-widget-error-banner"], ["role", "status", 1, "mj-widget-notice-banner"], [1, "mj-widget-summary-card"], [1, "mj-summary-row"], [1, "mj-summary-item-info"], [1, "mj-product-name"], [1, "mj-badge-free"], [1, "mj-summary-price"], [1, "mj-price-free"], [1, "mj-price-amount"], [1, "mj-quantity-selector-row"], [1, "mj-widget-form-section"], [1, "mj-section-title"], [1, "mj-form-grid"], [1, "mj-form-group"], [1, "mj-label"], [1, "mj-required"], ["autocomplete", "country", "required", "", 1, "mj-select", 3, "ngModelChange", "id", "ngModel"], [3, "ngValue"], ["type", "text", "autocomplete", "postal-code", "maxlength", "20", 1, "mj-input", 3, "ngModelChange", "id", "ngModel", "required"], [1, "mj-widget-actions"], ["type", "button", 1, "mj-btn-submit", 3, "click", "disabled"], ["type", "button", 1, "mj-btn-cancel", 3, "click", "disabled"], [1, "mj-error-icon"], ["for", "quantityInput", 1, "mj-label"], [1, "mj-qty-controls"], ["type", "button", 1, "mj-qty-btn", 3, "click", "disabled"], ["id", "quantityInput", "type", "number", "min", "1", 1, "mj-qty-input", 3, "ngModelChange", "ngModel", "max"], [1, "mj-form-group", 3, "full-width"], [1, "mj-input", "mj-textarea", 3, "ngModel", "placeholder", "required"], [1, "mj-select", 3, "ngModel", "required"], [1, "mj-checkbox-label"], ["type", "number", 1, "mj-input", 3, "ngModel", "placeholder", "required"], ["type", "date", 1, "mj-input", 3, "ngModel", "required"], [1, "mj-input", "mj-textarea", 3, "ngModelChange", "ngModel", "placeholder", "required"], [1, "mj-select", 3, "ngModelChange", "ngModel", "required"], ["type", "checkbox", 3, "ngModelChange", "ngModel"], ["type", "number", 1, "mj-input", 3, "ngModelChange", "ngModel", "placeholder", "required"], ["type", "date", 1, "mj-input", 3, "ngModelChange", "ngModel", "required"], [1, "mj-input", 3, "ngModelChange", "type", "ngModel", "placeholder", "readonly", "required"], [1, "mj-field-hint"], [1, "mj-multi-attendee-header"], ["type", "button", 1, "mj-btn-link", 3, "click"], [1, "mj-attendee-matrix"], [1, "mj-attendee-card"], [1, "mj-attendee-card-title"], ["autocomplete", "address-level1", "required", "", 1, "mj-select", 3, "ngModelChange", "id", "ngModel"], [1, "mj-form-group", "full-width"], ["type", "text", 1, "mj-input", 3, "id", "ngModel", "required"], [1, "mj-select", 3, "ngModelChange", "id", "ngModel", "required"], ["type", "text", "placeholder", "Please specify", "required", "", 1, "mj-input", "mj-question-other", 3, "ngModel"], ["type", "text", "placeholder", "Please specify", "required", "", 1, "mj-input", "mj-question-other", 3, "ngModelChange", "ngModel"], ["type", "text", 1, "mj-input", 3, "ngModelChange", "id", "ngModel", "required"], [1, "mj-choice-group"], [1, "mj-choice-count"], [1, "mj-choice-options"], [1, "mj-checkbox-label", 3, "is-disabled"], ["type", "checkbox", 3, "change", "checked", "disabled"], [1, "mj-widget-payment-section"], [1, "mj-stripe-container"], ["id", "stripe-card-element", 1, "mj-stripe-mount-point"], [1, "mj-stripe-badge"], [1, "mj-stripe-lock-icon"], [1, "mj-checkout-promo"], ["role", "status", 1, "mj-checkout-promo__applied", "mj-checkout-member-discount"], [1, "mj-checkout-consent"], [1, "mj-checkout-total-row"], [1, "mj-total-label"], [1, "mj-total-amount"], [1, "mj-checkout-promo__label", 3, "for"], [1, "mj-checkout-promo__row"], ["type", "text", "autocomplete", "off", "maxlength", "60", 1, "mj-input", "mj-checkout-promo__input", 3, "input", "keydown.enter", "id", "value", "disabled"], ["type", "button", 1, "mj-checkout-promo__apply", 3, "click", "disabled"], ["role", "alert", 1, "mj-checkout-promo__error"], ["role", "status", 1, "mj-checkout-promo__applied"], [1, "mj-spinner"]], template: function MJCheckoutWidgetComponent_Template(rf, ctx) { if (rf & 1) {
|
|
1345
1429
|
i0.ɵɵelementStart(0, "div", 0)(1, "header", 1)(2, "h2", 2);
|
|
1346
1430
|
i0.ɵɵtext(3);
|
|
1347
1431
|
i0.ɵɵelementEnd();
|
|
1348
1432
|
i0.ɵɵconditionalCreate(4, MJCheckoutWidgetComponent_Conditional_4_Template, 2, 1, "p", 3);
|
|
1349
1433
|
i0.ɵɵelementEnd();
|
|
1350
|
-
i0.ɵɵconditionalCreate(5, MJCheckoutWidgetComponent_Conditional_5_Template, 5, 1, "div", 4);
|
|
1351
|
-
i0.ɵɵelementStart(
|
|
1352
|
-
i0.ɵɵtext(
|
|
1434
|
+
i0.ɵɵconditionalCreate(5, MJCheckoutWidgetComponent_Conditional_5_Template, 5, 1, "div", 4)(6, MJCheckoutWidgetComponent_Conditional_6_Template, 3, 1, "div", 5);
|
|
1435
|
+
i0.ɵɵelementStart(7, "div", 6)(8, "div", 7)(9, "div", 8)(10, "span", 9);
|
|
1436
|
+
i0.ɵɵtext(11);
|
|
1353
1437
|
i0.ɵɵelementEnd();
|
|
1354
|
-
i0.ɵɵconditionalCreate(
|
|
1438
|
+
i0.ɵɵconditionalCreate(12, MJCheckoutWidgetComponent_Conditional_12_Template, 2, 0, "span", 10);
|
|
1355
1439
|
i0.ɵɵelementEnd();
|
|
1356
|
-
i0.ɵɵelementStart(
|
|
1357
|
-
i0.ɵɵconditionalCreate(
|
|
1440
|
+
i0.ɵɵelementStart(13, "div", 11);
|
|
1441
|
+
i0.ɵɵconditionalCreate(14, MJCheckoutWidgetComponent_Conditional_14_Template, 2, 0, "span", 12)(15, MJCheckoutWidgetComponent_Conditional_15_Template, 2, 2, "span", 13);
|
|
1358
1442
|
i0.ɵɵelementEnd()();
|
|
1359
|
-
i0.ɵɵconditionalCreate(
|
|
1443
|
+
i0.ɵɵconditionalCreate(16, MJCheckoutWidgetComponent_Conditional_16_Template, 9, 4, "div", 14);
|
|
1360
1444
|
i0.ɵɵelementEnd();
|
|
1361
|
-
i0.ɵɵelementStart(
|
|
1362
|
-
i0.ɵɵconditionalCreate(
|
|
1445
|
+
i0.ɵɵelementStart(17, "section", 15);
|
|
1446
|
+
i0.ɵɵconditionalCreate(18, MJCheckoutWidgetComponent_Conditional_18_Template, 5, 0)(19, MJCheckoutWidgetComponent_Conditional_19_Template, 8, 1);
|
|
1363
1447
|
i0.ɵɵelementEnd();
|
|
1364
|
-
i0.ɵɵelementStart(
|
|
1365
|
-
i0.ɵɵtext(
|
|
1448
|
+
i0.ɵɵelementStart(20, "section", 15)(21, "h3", 16);
|
|
1449
|
+
i0.ɵɵtext(22, "Billing Location");
|
|
1366
1450
|
i0.ɵɵelementEnd();
|
|
1367
|
-
i0.ɵɵelementStart(
|
|
1368
|
-
i0.ɵɵtext(
|
|
1369
|
-
i0.ɵɵelementStart(
|
|
1370
|
-
i0.ɵɵtext(
|
|
1451
|
+
i0.ɵɵelementStart(23, "div", 17)(24, "div", 18)(25, "label", 19);
|
|
1452
|
+
i0.ɵɵtext(26, " Country ");
|
|
1453
|
+
i0.ɵɵelementStart(27, "span", 20);
|
|
1454
|
+
i0.ɵɵtext(28, "*");
|
|
1371
1455
|
i0.ɵɵelementEnd()();
|
|
1372
|
-
i0.ɵɵelementStart(
|
|
1373
|
-
i0.ɵɵlistener("ngModelChange", function
|
|
1374
|
-
i0.ɵɵelementStart(
|
|
1375
|
-
i0.ɵɵtext(
|
|
1456
|
+
i0.ɵɵelementStart(29, "select", 21);
|
|
1457
|
+
i0.ɵɵlistener("ngModelChange", function MJCheckoutWidgetComponent_Template_select_ngModelChange_29_listener($event) { return ctx.onBillingCountryChange($event); });
|
|
1458
|
+
i0.ɵɵelementStart(30, "option", 22);
|
|
1459
|
+
i0.ɵɵtext(31, "Select country");
|
|
1376
1460
|
i0.ɵɵelementEnd();
|
|
1377
|
-
i0.ɵɵrepeaterCreate(
|
|
1461
|
+
i0.ɵɵrepeaterCreate(32, MJCheckoutWidgetComponent_For_33_Template, 2, 2, "option", 22, _forTrack0);
|
|
1378
1462
|
i0.ɵɵelementEnd()();
|
|
1379
|
-
i0.ɵɵconditionalCreate(
|
|
1380
|
-
i0.ɵɵelementStart(
|
|
1381
|
-
i0.ɵɵtext(
|
|
1382
|
-
i0.ɵɵconditionalCreate(
|
|
1463
|
+
i0.ɵɵconditionalCreate(34, MJCheckoutWidgetComponent_Conditional_34_Template, 10, 4, "div", 18);
|
|
1464
|
+
i0.ɵɵelementStart(35, "div", 18)(36, "label", 19);
|
|
1465
|
+
i0.ɵɵtext(37, " Postal Code ");
|
|
1466
|
+
i0.ɵɵconditionalCreate(38, MJCheckoutWidgetComponent_Conditional_38_Template, 2, 0, "span", 20);
|
|
1383
1467
|
i0.ɵɵelementEnd();
|
|
1384
|
-
i0.ɵɵelementStart(
|
|
1385
|
-
i0.ɵɵlistener("ngModelChange", function
|
|
1468
|
+
i0.ɵɵelementStart(39, "input", 23);
|
|
1469
|
+
i0.ɵɵlistener("ngModelChange", function MJCheckoutWidgetComponent_Template_input_ngModelChange_39_listener($event) { return ctx.onBillingPostalCodeChange($event); });
|
|
1386
1470
|
i0.ɵɵelementEnd()()()();
|
|
1387
|
-
i0.ɵɵconditionalCreate(
|
|
1388
|
-
i0.ɵɵrepeaterCreate(
|
|
1389
|
-
i0.ɵɵconditionalCreate(
|
|
1390
|
-
i0.ɵɵelementStart(
|
|
1391
|
-
i0.ɵɵlistener("click", function
|
|
1392
|
-
i0.ɵɵconditionalCreate(
|
|
1471
|
+
i0.ɵɵconditionalCreate(40, MJCheckoutWidgetComponent_Conditional_40_Template, 6, 0, "section", 15);
|
|
1472
|
+
i0.ɵɵrepeaterCreate(41, MJCheckoutWidgetComponent_For_42_Template, 10, 3, "section", 15, _forTrack1);
|
|
1473
|
+
i0.ɵɵconditionalCreate(43, MJCheckoutWidgetComponent_Conditional_43_Template, 19, 6);
|
|
1474
|
+
i0.ɵɵelementStart(44, "div", 24)(45, "button", 25);
|
|
1475
|
+
i0.ɵɵlistener("click", function MJCheckoutWidgetComponent_Template_button_click_45_listener() { return ctx.handleSubmit(); });
|
|
1476
|
+
i0.ɵɵconditionalCreate(46, MJCheckoutWidgetComponent_Conditional_46_Template, 3, 0)(47, MJCheckoutWidgetComponent_Conditional_47_Template, 2, 0, "span")(48, MJCheckoutWidgetComponent_Conditional_48_Template, 2, 2, "span");
|
|
1393
1477
|
i0.ɵɵelementEnd();
|
|
1394
|
-
i0.ɵɵelementStart(
|
|
1395
|
-
i0.ɵɵlistener("click", function
|
|
1396
|
-
i0.ɵɵtext(
|
|
1478
|
+
i0.ɵɵelementStart(49, "button", 26);
|
|
1479
|
+
i0.ɵɵlistener("click", function MJCheckoutWidgetComponent_Template_button_click_49_listener() { return ctx.cancelled.emit(); });
|
|
1480
|
+
i0.ɵɵtext(50, " Cancel ");
|
|
1397
1481
|
i0.ɵɵelementEnd()()();
|
|
1398
1482
|
} if (rf & 2) {
|
|
1399
1483
|
let tmp_0_0;
|
|
@@ -1408,17 +1492,17 @@ export class MJCheckoutWidgetComponent {
|
|
|
1408
1492
|
i0.ɵɵadvance();
|
|
1409
1493
|
i0.ɵɵconditional((ctx.config == null ? null : ctx.config.description) ? 4 : -1);
|
|
1410
1494
|
i0.ɵɵadvance();
|
|
1411
|
-
i0.ɵɵconditional(ctx.displayErrorMessage() ? 5 : -1);
|
|
1412
|
-
i0.ɵɵadvance(
|
|
1495
|
+
i0.ɵɵconditional(ctx.displayErrorMessage() ? 5 : ctx.displayNoticeMessage() ? 6 : -1);
|
|
1496
|
+
i0.ɵɵadvance(6);
|
|
1413
1497
|
i0.ɵɵtextInterpolate((ctx.config == null ? null : ctx.config.productName) || "Order Item");
|
|
1414
1498
|
i0.ɵɵadvance();
|
|
1415
|
-
i0.ɵɵconditional(ctx.isFree() ?
|
|
1499
|
+
i0.ɵɵconditional(ctx.isFree() ? 12 : -1);
|
|
1416
1500
|
i0.ɵɵadvance(2);
|
|
1417
|
-
i0.ɵɵconditional(ctx.isFree() ?
|
|
1501
|
+
i0.ɵɵconditional(ctx.isFree() ? 14 : 15);
|
|
1418
1502
|
i0.ɵɵadvance(2);
|
|
1419
|
-
i0.ɵɵconditional((ctx.config == null ? null : ctx.config.allowQuantity) ?
|
|
1503
|
+
i0.ɵɵconditional((ctx.config == null ? null : ctx.config.allowQuantity) ? 16 : -1);
|
|
1420
1504
|
i0.ɵɵadvance(2);
|
|
1421
|
-
i0.ɵɵconditional(ctx.isSingleUnit() ?
|
|
1505
|
+
i0.ɵɵconditional(ctx.isSingleUnit() ? 18 : 19);
|
|
1422
1506
|
i0.ɵɵadvance(7);
|
|
1423
1507
|
i0.ɵɵattribute("for", ctx.widgetInstanceId + "-billing-country");
|
|
1424
1508
|
i0.ɵɵadvance(4);
|
|
@@ -1428,30 +1512,30 @@ export class MJCheckoutWidgetComponent {
|
|
|
1428
1512
|
i0.ɵɵadvance(2);
|
|
1429
1513
|
i0.ɵɵrepeater(ctx.billingCountries);
|
|
1430
1514
|
i0.ɵɵadvance(2);
|
|
1431
|
-
i0.ɵɵconditional(ctx.billingRegions().length > 0 ?
|
|
1515
|
+
i0.ɵɵconditional(ctx.billingRegions().length > 0 ? 34 : -1);
|
|
1432
1516
|
i0.ɵɵadvance(2);
|
|
1433
1517
|
i0.ɵɵattribute("for", ctx.widgetInstanceId + "-billing-postal");
|
|
1434
1518
|
i0.ɵɵadvance(2);
|
|
1435
|
-
i0.ɵɵconditional(ctx.billingPostalRequired() ?
|
|
1519
|
+
i0.ɵɵconditional(ctx.billingPostalRequired() ? 38 : -1);
|
|
1436
1520
|
i0.ɵɵadvance();
|
|
1437
1521
|
i0.ɵɵproperty("id", ctx.widgetInstanceId + "-billing-postal")("ngModel", ctx.billingPostalCode())("required", ctx.billingPostalRequired());
|
|
1438
1522
|
i0.ɵɵadvance();
|
|
1439
|
-
i0.ɵɵconditional(ctx.questions().length > 0 ?
|
|
1523
|
+
i0.ɵɵconditional(ctx.questions().length > 0 ? 40 : -1);
|
|
1440
1524
|
i0.ɵɵadvance();
|
|
1441
1525
|
i0.ɵɵrepeater(ctx.choiceGroups());
|
|
1442
1526
|
i0.ɵɵadvance(2);
|
|
1443
|
-
i0.ɵɵconditional(!ctx.isFree() ?
|
|
1527
|
+
i0.ɵɵconditional(!ctx.isFree() ? 43 : -1);
|
|
1444
1528
|
i0.ɵɵadvance(2);
|
|
1445
1529
|
i0.ɵɵproperty("disabled", !ctx.isFormValid() || ctx.isProcessing);
|
|
1446
1530
|
i0.ɵɵadvance();
|
|
1447
|
-
i0.ɵɵconditional(ctx.isProcessing ?
|
|
1531
|
+
i0.ɵɵconditional(ctx.isProcessing ? 46 : ctx.isFree() ? 47 : 48);
|
|
1448
1532
|
i0.ɵɵadvance(3);
|
|
1449
1533
|
i0.ɵɵproperty("disabled", ctx.isProcessing);
|
|
1450
|
-
} }, dependencies: [CommonModule, FormsModule, i1.NgSelectOption, i1.ɵNgSelectMultipleOption, i1.DefaultValueAccessor, i1.NumberValueAccessor, i1.CheckboxControlValueAccessor, i1.SelectControlValueAccessor, i1.NgControlStatus, i1.RequiredValidator, i1.MaxLengthValidator, i1.MinValidator, i1.MaxValidator, i1.NgModel], styles: ["[_nghost-%COMP%] {\n display: block;\n font-family: var(--mj-font-family, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif);\n color: var(--mj-text-color, #1e293b);\n}\n\n.mj-checkout-widget-container[_ngcontent-%COMP%] {\n \n\n\n --mjo-co-border: #cbd5e1;\n --mjo-co-error: #b91c1c;\n --mjo-co-success: #15803d;\n max-width: 560px;\n margin: 0 auto;\n background: var(--mj-bg-color, #ffffff);\n border: 1px solid #e2e8f0;\n border-radius: var(--mj-border-radius, 8px);\n padding: 24px;\n box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.05), 0 2px 4px -2px rgba(0, 0, 0, 0.05);\n}\n\n.mj-widget-header[_ngcontent-%COMP%] {\n margin-bottom: 20px;\n}\n\n.mj-widget-title[_ngcontent-%COMP%] {\n margin: 0 0 6px 0;\n font-size: 1.35rem;\n font-weight: 700;\n color: var(--mj-text-color, #0f172a);\n}\n\n.mj-widget-description[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 0.9rem;\n color: #64748b;\n line-height: 1.4;\n}\n\n.mj-widget-error-banner[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n background: #fef2f2;\n border: 1px solid #f87171;\n color: #991b1b;\n padding: 10px 14px;\n border-radius: 6px;\n margin-bottom: 18px;\n font-size: 0.875rem;\n}\n\n.mj-error-icon[_ngcontent-%COMP%] {\n font-size: 1rem;\n}\n\n.mj-widget-summary-card[_ngcontent-%COMP%] {\n background: #f8fafc;\n border: 1px solid #e2e8f0;\n border-radius: 6px;\n padding: 14px 16px;\n margin-bottom: 20px;\n}\n\n.mj-summary-row[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n\n.mj-summary-price[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n}\n\n.mj-widget-form-section[_ngcontent-%COMP%] {\n margin-bottom: 20px;\n}\n\n.mj-summary-item-info[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.mj-product-name[_ngcontent-%COMP%] {\n font-weight: 600;\n font-size: 1rem;\n color: #1e293b;\n}\n\n.mj-badge-free[_ngcontent-%COMP%] {\n background: #dcfce7;\n color: #166534;\n font-size: 0.75rem;\n font-weight: 700;\n padding: 2px 6px;\n border-radius: 4px;\n}\n\n.mj-price-free[_ngcontent-%COMP%] {\n font-weight: 700;\n color: #166534;\n font-size: 1.1rem;\n}\n\n.mj-price-amount[_ngcontent-%COMP%] {\n font-weight: 700;\n color: #0f172a;\n font-size: 1.1rem;\n}\n\n.mj-quantity-selector-row[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-top: 12px;\n padding-top: 12px;\n border-top: 1px dashed #cbd5e1;\n}\n\n.mj-qty-controls[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n.mj-qty-btn[_ngcontent-%COMP%] {\n width: 28px;\n height: 28px;\n background: #ffffff;\n border: 1px solid #cbd5e1;\n border-radius: 4px;\n cursor: pointer;\n font-weight: 600;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.mj-qty-btn[_ngcontent-%COMP%]:disabled {\n opacity: 0.4;\n cursor: not-allowed;\n}\n\n.mj-qty-input[_ngcontent-%COMP%] {\n width: 44px;\n height: 28px;\n text-align: center;\n border: 1px solid #cbd5e1;\n border-radius: 4px;\n font-weight: 600;\n}\n\n.mj-section-title[_ngcontent-%COMP%] {\n font-size: 1rem;\n font-weight: 600;\n margin: 0 0 12px 0;\n color: #334155;\n}\n\n.mj-form-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 12px;\n margin-bottom: 18px;\n}\n\n.mj-form-group[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.mj-form-group.full-width[_ngcontent-%COMP%] {\n grid-column: 1 / -1;\n}\n\n.mj-label[_ngcontent-%COMP%] {\n font-size: 0.8rem;\n font-weight: 500;\n color: #475569;\n}\n\n.mj-required[_ngcontent-%COMP%] {\n color: #ef4444;\n}\n\n.mj-input[_ngcontent-%COMP%], .mj-select[_ngcontent-%COMP%] {\n padding: 8px 12px;\n font-size: 0.9rem;\n border: 1px solid #cbd5e1;\n border-radius: 4px;\n background: #ffffff;\n color: #1e293b;\n outline: none;\n transition: border-color 0.15s ease;\n width: 100%;\n box-sizing: border-box;\n}\n\n.mj-textarea[_ngcontent-%COMP%] {\n min-height: 70px;\n resize: vertical;\n font-family: inherit;\n}\n\n.mj-select[_ngcontent-%COMP%] {\n min-height: 38px;\n}\n\n.mj-checkbox-label[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 8px;\n cursor: pointer;\n font-size: 0.9rem;\n font-weight: 400;\n color: #334155;\n margin-top: 4px;\n}\n\n\n\n.mj-question-other[_ngcontent-%COMP%] {\n margin-top: 8px;\n}\n\n\n\n.mj-choice-group[_ngcontent-%COMP%] {\n border: 0;\n margin: 0;\n padding: 0;\n}\n\n.mj-choice-count[_ngcontent-%COMP%] {\n font-weight: normal;\n color: #64748b;\n}\n\n.mj-choice-options[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 2px;\n}\n\n.mj-checkbox-label.is-disabled[_ngcontent-%COMP%] {\n cursor: not-allowed;\n opacity: 0.55;\n}\n\n.mj-input[_ngcontent-%COMP%]:focus, .mj-select[_ngcontent-%COMP%]:focus {\n border-color: var(--mj-primary-color, #2563eb);\n box-shadow: 0 0 0 2px rgba(37, 99, 235, 0.15);\n}\n\n\n\n.mj-input[readonly][_ngcontent-%COMP%] {\n background: #f1f5f9;\n color: #475569;\n cursor: default;\n}\n\n.mj-field-hint[_ngcontent-%COMP%] {\n font-size: 0.8rem;\n color: #64748b;\n margin: 0.25rem 0 0;\n}\n\n.mj-multi-attendee-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 12px;\n}\n\n.mj-btn-link[_ngcontent-%COMP%] {\n background: none;\n border: none;\n color: var(--mj-primary-color, #2563eb);\n font-size: 0.8rem;\n cursor: pointer;\n text-decoration: underline;\n padding: 0;\n}\n\n.mj-attendee-matrix[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 14px;\n margin-bottom: 20px;\n}\n\n.mj-attendee-card[_ngcontent-%COMP%] {\n background: #f8fafc;\n border: 1px solid #e2e8f0;\n border-radius: 6px;\n padding: 12px 14px;\n}\n\n.mj-attendee-card-title[_ngcontent-%COMP%] {\n font-size: 0.85rem;\n font-weight: 600;\n color: #475569;\n margin-bottom: 10px;\n}\n\n\n\n.mj-widget-payment-section[_ngcontent-%COMP%] {\n margin-top: 16px;\n padding-top: 16px;\n border-top: 1px solid #e2e8f0;\n}\n\n.mj-stripe-container[_ngcontent-%COMP%] {\n background: #ffffff;\n border: 1px solid #e2e8f0;\n border-radius: 6px;\n padding: 14px;\n margin-bottom: 16px;\n}\n\n.mj-stripe-mount-point[_ngcontent-%COMP%] {\n min-height: 40px;\n}\n\n.mj-stripe-badge[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n margin-top: 10px;\n font-size: 0.75rem;\n color: #64748b;\n}\n\n.mj-stripe-lock-icon[_ngcontent-%COMP%] {\n font-size: 0.85rem;\n}\n\n.mj-checkout-total-row[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 12px 0;\n border-top: 1px solid #e2e8f0;\n margin-top: 10px;\n margin-bottom: 18px;\n}\n\n.mj-total-label[_ngcontent-%COMP%] {\n font-weight: 700;\n font-size: 1.05rem;\n color: #0f172a;\n}\n\n.mj-total-amount[_ngcontent-%COMP%] {\n font-weight: 800;\n font-size: 1.25rem;\n color: var(--mj-primary-color, #2563eb);\n}\n\n.mj-widget-actions[_ngcontent-%COMP%] {\n margin-top: 12px;\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.mj-btn-submit[_ngcontent-%COMP%] {\n width: 100%;\n padding: 12px;\n background: var(--mj-primary-color, #2563eb);\n color: #ffffff;\n font-size: 1rem;\n font-weight: 600;\n border: none;\n border-radius: var(--mj-border-radius, 8px);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n transition: opacity 0.15s ease;\n}\n\n.mj-btn-submit[_ngcontent-%COMP%]:hover:not(:disabled) {\n opacity: 0.92;\n}\n\n.mj-btn-submit[_ngcontent-%COMP%]:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.mj-btn-cancel[_ngcontent-%COMP%] {\n width: 100%;\n padding: 8px 12px;\n background: transparent;\n color: #64748b;\n font-size: 0.875rem;\n font-weight: 500;\n border: none;\n cursor: pointer;\n text-align: center;\n}\n\n.mj-btn-cancel[_ngcontent-%COMP%]:hover:not(:disabled) {\n color: #334155;\n text-decoration: underline;\n}\n\n.mj-spinner[_ngcontent-%COMP%] {\n width: 16px;\n height: 16px;\n border: 2px solid #ffffff;\n border-top-color: transparent;\n border-radius: 50%;\n animation: _ngcontent-%COMP%_mj-spin 0.8s linear infinite;\n}\n\n@keyframes _ngcontent-%COMP%_mj-spin {\n to { transform: rotate(360deg); }\n}\n\n.mj-checkout-consent[_ngcontent-%COMP%] {\n display: flex;\n gap: 0.5rem;\n align-items: flex-start;\n margin: 0.75rem 0;\n font-size: 0.875rem;\n font-weight: 400;\n line-height: 1.4;\n}\n.mj-checkout-consent[_ngcontent-%COMP%] input[_ngcontent-%COMP%] {\n margin-top: 0.2rem;\n}\n\n\n\n\n\n.mj-checkbox-label[_ngcontent-%COMP%] input[type=checkbox][_ngcontent-%COMP%], \n.mj-checkout-consent[_ngcontent-%COMP%] input[type=checkbox][_ngcontent-%COMP%] {\n width: auto;\n height: auto;\n padding: 0;\n border: 0;\n flex: 0 0 auto;\n}\n\n.mj-checkout-promo[_ngcontent-%COMP%] {\n margin: 0.75rem 0;\n}\n.mj-checkout-promo__label[_ngcontent-%COMP%] {\n display: block;\n font-size: 0.875rem;\n margin-bottom: 0.25rem;\n}\n.mj-checkout-promo__row[_ngcontent-%COMP%] {\n display: flex;\n gap: 0.5rem;\n}\n.mj-checkout-promo__input[_ngcontent-%COMP%] {\n flex: 1 1 auto;\n}\n.mj-checkout-promo__error[_ngcontent-%COMP%] {\n color: var(--mjo-co-error);\n font-size: 0.875rem;\n margin: 0.35rem 0 0;\n}\n.mj-checkout-promo__applied[_ngcontent-%COMP%] {\n color: var(--mjo-co-success);\n font-size: 0.875rem;\n margin: 0.35rem 0 0;\n}\n.mj-checkout-member-discount[_ngcontent-%COMP%] {\n margin: 0.75rem 0;\n}\n.mj-checkout-promo__apply[_ngcontent-%COMP%] {\n flex: 0 0 auto;\n padding: 8px 14px;\n background: transparent;\n color: var(--mj-primary-color, #2563eb);\n border: 1px solid var(--mjo-co-border);\n border-radius: var(--mj-border-radius, 8px);\n font-size: 0.875rem;\n font-weight: 600;\n cursor: pointer;\n}\n.mj-checkout-promo__apply[_ngcontent-%COMP%]:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}"], changeDetection: 0 });
|
|
1534
|
+
} }, dependencies: [CommonModule, FormsModule, i1.NgSelectOption, i1.ɵNgSelectMultipleOption, i1.DefaultValueAccessor, i1.NumberValueAccessor, i1.CheckboxControlValueAccessor, i1.SelectControlValueAccessor, i1.NgControlStatus, i1.RequiredValidator, i1.MaxLengthValidator, i1.MinValidator, i1.MaxValidator, i1.NgModel], styles: ["[_nghost-%COMP%] {\n display: block;\n font-family: var(--mj-font-family, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif);\n color: var(--mj-text-color, #1e293b);\n}\n\n.mj-checkout-widget-container[_ngcontent-%COMP%] {\n \n\n\n --mjo-co-border: #cbd5e1;\n --mjo-co-error: #b91c1c;\n --mjo-co-success: #15803d;\n max-width: 560px;\n margin: 0 auto;\n background: var(--mj-bg-color, #ffffff);\n border: 1px solid #e2e8f0;\n border-radius: var(--mj-border-radius, 8px);\n padding: 24px;\n box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.05), 0 2px 4px -2px rgba(0, 0, 0, 0.05);\n}\n\n.mj-widget-header[_ngcontent-%COMP%] {\n margin-bottom: 20px;\n}\n\n.mj-widget-title[_ngcontent-%COMP%] {\n margin: 0 0 6px 0;\n font-size: 1.35rem;\n font-weight: 700;\n color: var(--mj-text-color, #0f172a);\n}\n\n.mj-widget-description[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 0.9rem;\n color: #64748b;\n line-height: 1.4;\n}\n\n.mj-widget-error-banner[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n background: #fef2f2;\n border: 1px solid #f87171;\n color: #991b1b;\n padding: 10px 14px;\n border-radius: 6px;\n margin-bottom: 18px;\n font-size: 0.875rem;\n}\n\n.mj-widget-notice-banner[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n background: #eff6ff;\n border: 1px solid #93c5fd;\n color: #1e3a8a;\n padding: 10px 14px;\n border-radius: 6px;\n margin-bottom: 18px;\n font-size: 0.875rem;\n}\n\n.mj-error-icon[_ngcontent-%COMP%] {\n font-size: 1rem;\n}\n\n.mj-widget-summary-card[_ngcontent-%COMP%] {\n background: #f8fafc;\n border: 1px solid #e2e8f0;\n border-radius: 6px;\n padding: 14px 16px;\n margin-bottom: 20px;\n}\n\n.mj-summary-row[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n\n.mj-summary-price[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n}\n\n.mj-widget-form-section[_ngcontent-%COMP%] {\n margin-bottom: 20px;\n}\n\n.mj-summary-item-info[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.mj-product-name[_ngcontent-%COMP%] {\n font-weight: 600;\n font-size: 1rem;\n color: #1e293b;\n}\n\n.mj-badge-free[_ngcontent-%COMP%] {\n background: #dcfce7;\n color: #166534;\n font-size: 0.75rem;\n font-weight: 700;\n padding: 2px 6px;\n border-radius: 4px;\n}\n\n.mj-price-free[_ngcontent-%COMP%] {\n font-weight: 700;\n color: #166534;\n font-size: 1.1rem;\n}\n\n.mj-price-amount[_ngcontent-%COMP%] {\n font-weight: 700;\n color: #0f172a;\n font-size: 1.1rem;\n}\n\n.mj-quantity-selector-row[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-top: 12px;\n padding-top: 12px;\n border-top: 1px dashed #cbd5e1;\n}\n\n.mj-qty-controls[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n.mj-qty-btn[_ngcontent-%COMP%] {\n width: 28px;\n height: 28px;\n background: #ffffff;\n border: 1px solid #cbd5e1;\n border-radius: 4px;\n cursor: pointer;\n font-weight: 600;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.mj-qty-btn[_ngcontent-%COMP%]:disabled {\n opacity: 0.4;\n cursor: not-allowed;\n}\n\n.mj-qty-input[_ngcontent-%COMP%] {\n width: 44px;\n height: 28px;\n text-align: center;\n border: 1px solid #cbd5e1;\n border-radius: 4px;\n font-weight: 600;\n}\n\n.mj-section-title[_ngcontent-%COMP%] {\n font-size: 1rem;\n font-weight: 600;\n margin: 0 0 12px 0;\n color: #334155;\n}\n\n.mj-form-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 12px;\n margin-bottom: 18px;\n}\n\n.mj-form-group[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.mj-form-group.full-width[_ngcontent-%COMP%] {\n grid-column: 1 / -1;\n}\n\n.mj-label[_ngcontent-%COMP%] {\n font-size: 0.8rem;\n font-weight: 500;\n color: #475569;\n}\n\n.mj-required[_ngcontent-%COMP%] {\n color: #ef4444;\n}\n\n.mj-input[_ngcontent-%COMP%], .mj-select[_ngcontent-%COMP%] {\n padding: 8px 12px;\n font-size: 0.9rem;\n border: 1px solid #cbd5e1;\n border-radius: 4px;\n background: #ffffff;\n color: #1e293b;\n outline: none;\n transition: border-color 0.15s ease;\n width: 100%;\n box-sizing: border-box;\n}\n\n.mj-textarea[_ngcontent-%COMP%] {\n min-height: 70px;\n resize: vertical;\n font-family: inherit;\n}\n\n.mj-select[_ngcontent-%COMP%] {\n min-height: 38px;\n}\n\n.mj-checkbox-label[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 8px;\n cursor: pointer;\n font-size: 0.9rem;\n font-weight: 400;\n color: #334155;\n margin-top: 4px;\n}\n\n\n\n.mj-question-other[_ngcontent-%COMP%] {\n margin-top: 8px;\n}\n\n\n\n.mj-choice-group[_ngcontent-%COMP%] {\n border: 0;\n margin: 0;\n padding: 0;\n}\n\n.mj-choice-count[_ngcontent-%COMP%] {\n font-weight: normal;\n color: #64748b;\n}\n\n.mj-choice-options[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 2px;\n}\n\n.mj-checkbox-label.is-disabled[_ngcontent-%COMP%] {\n cursor: not-allowed;\n opacity: 0.55;\n}\n\n.mj-input[_ngcontent-%COMP%]:focus, .mj-select[_ngcontent-%COMP%]:focus {\n border-color: var(--mj-primary-color, #2563eb);\n box-shadow: 0 0 0 2px rgba(37, 99, 235, 0.15);\n}\n\n\n\n.mj-input[readonly][_ngcontent-%COMP%] {\n background: #f1f5f9;\n color: #475569;\n cursor: default;\n}\n\n.mj-field-hint[_ngcontent-%COMP%] {\n font-size: 0.8rem;\n color: #64748b;\n margin: 0.25rem 0 0;\n}\n\n.mj-multi-attendee-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 12px;\n}\n\n.mj-btn-link[_ngcontent-%COMP%] {\n background: none;\n border: none;\n color: var(--mj-primary-color, #2563eb);\n font-size: 0.8rem;\n cursor: pointer;\n text-decoration: underline;\n padding: 0;\n}\n\n.mj-attendee-matrix[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 14px;\n margin-bottom: 20px;\n}\n\n.mj-attendee-card[_ngcontent-%COMP%] {\n background: #f8fafc;\n border: 1px solid #e2e8f0;\n border-radius: 6px;\n padding: 12px 14px;\n}\n\n.mj-attendee-card-title[_ngcontent-%COMP%] {\n font-size: 0.85rem;\n font-weight: 600;\n color: #475569;\n margin-bottom: 10px;\n}\n\n\n\n.mj-widget-payment-section[_ngcontent-%COMP%] {\n margin-top: 16px;\n padding-top: 16px;\n border-top: 1px solid #e2e8f0;\n}\n\n.mj-stripe-container[_ngcontent-%COMP%] {\n background: #ffffff;\n border: 1px solid #e2e8f0;\n border-radius: 6px;\n padding: 14px;\n margin-bottom: 16px;\n}\n\n.mj-stripe-mount-point[_ngcontent-%COMP%] {\n min-height: 40px;\n}\n\n.mj-stripe-badge[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n margin-top: 10px;\n font-size: 0.75rem;\n color: #64748b;\n}\n\n.mj-stripe-lock-icon[_ngcontent-%COMP%] {\n font-size: 0.85rem;\n}\n\n.mj-checkout-total-row[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 12px 0;\n border-top: 1px solid #e2e8f0;\n margin-top: 10px;\n margin-bottom: 18px;\n}\n\n.mj-total-label[_ngcontent-%COMP%] {\n font-weight: 700;\n font-size: 1.05rem;\n color: #0f172a;\n}\n\n.mj-total-amount[_ngcontent-%COMP%] {\n font-weight: 800;\n font-size: 1.25rem;\n color: var(--mj-primary-color, #2563eb);\n}\n\n.mj-widget-actions[_ngcontent-%COMP%] {\n margin-top: 12px;\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.mj-btn-submit[_ngcontent-%COMP%] {\n width: 100%;\n padding: 12px;\n background: var(--mj-primary-color, #2563eb);\n color: #ffffff;\n font-size: 1rem;\n font-weight: 600;\n border: none;\n border-radius: var(--mj-border-radius, 8px);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n transition: opacity 0.15s ease;\n}\n\n.mj-btn-submit[_ngcontent-%COMP%]:hover:not(:disabled) {\n opacity: 0.92;\n}\n\n.mj-btn-submit[_ngcontent-%COMP%]:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.mj-btn-cancel[_ngcontent-%COMP%] {\n width: 100%;\n padding: 8px 12px;\n background: transparent;\n color: #64748b;\n font-size: 0.875rem;\n font-weight: 500;\n border: none;\n cursor: pointer;\n text-align: center;\n}\n\n.mj-btn-cancel[_ngcontent-%COMP%]:hover:not(:disabled) {\n color: #334155;\n text-decoration: underline;\n}\n\n.mj-spinner[_ngcontent-%COMP%] {\n width: 16px;\n height: 16px;\n border: 2px solid #ffffff;\n border-top-color: transparent;\n border-radius: 50%;\n animation: _ngcontent-%COMP%_mj-spin 0.8s linear infinite;\n}\n\n@keyframes _ngcontent-%COMP%_mj-spin {\n to { transform: rotate(360deg); }\n}\n\n.mj-checkout-consent[_ngcontent-%COMP%] {\n display: flex;\n gap: 0.5rem;\n align-items: flex-start;\n margin: 0.75rem 0;\n font-size: 0.875rem;\n font-weight: 400;\n line-height: 1.4;\n}\n.mj-checkout-consent[_ngcontent-%COMP%] input[_ngcontent-%COMP%] {\n margin-top: 0.2rem;\n}\n\n\n\n\n\n.mj-checkbox-label[_ngcontent-%COMP%] input[type=checkbox][_ngcontent-%COMP%], \n.mj-checkout-consent[_ngcontent-%COMP%] input[type=checkbox][_ngcontent-%COMP%] {\n width: auto;\n height: auto;\n padding: 0;\n border: 0;\n flex: 0 0 auto;\n}\n\n.mj-checkout-promo[_ngcontent-%COMP%] {\n margin: 0.75rem 0;\n}\n.mj-checkout-promo__label[_ngcontent-%COMP%] {\n display: block;\n font-size: 0.875rem;\n margin-bottom: 0.25rem;\n}\n.mj-checkout-promo__row[_ngcontent-%COMP%] {\n display: flex;\n gap: 0.5rem;\n}\n.mj-checkout-promo__input[_ngcontent-%COMP%] {\n flex: 1 1 auto;\n}\n.mj-checkout-promo__error[_ngcontent-%COMP%] {\n color: var(--mjo-co-error);\n font-size: 0.875rem;\n margin: 0.35rem 0 0;\n}\n.mj-checkout-promo__applied[_ngcontent-%COMP%] {\n color: var(--mjo-co-success);\n font-size: 0.875rem;\n margin: 0.35rem 0 0;\n}\n.mj-checkout-member-discount[_ngcontent-%COMP%] {\n margin: 0.75rem 0;\n}\n.mj-checkout-promo__apply[_ngcontent-%COMP%] {\n flex: 0 0 auto;\n padding: 8px 14px;\n background: transparent;\n color: var(--mj-primary-color, #2563eb);\n border: 1px solid var(--mjo-co-border);\n border-radius: var(--mj-border-radius, 8px);\n font-size: 0.875rem;\n font-weight: 600;\n cursor: pointer;\n}\n.mj-checkout-promo__apply[_ngcontent-%COMP%]:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}"], changeDetection: 0 });
|
|
1451
1535
|
}
|
|
1452
1536
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MJCheckoutWidgetComponent, [{
|
|
1453
1537
|
type: Component,
|
|
1454
|
-
args: [{ selector: 'mj-checkout-widget', standalone: true, imports: [CommonModule, FormsModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"mj-checkout-widget-container\"\n [style.--mj-primary-color]=\"activeTheme()?.primaryColor || '#2563eb'\"\n [style.--mj-accent-color]=\"activeTheme()?.accentColor || '#3b82f6'\"\n [style.--mj-border-radius]=\"activeTheme()?.borderRadius || '8px'\"\n [style.--mj-bg-color]=\"activeTheme()?.backgroundColor || '#ffffff'\"\n [style.--mj-text-color]=\"activeTheme()?.textColor || '#0f172a'\"\n [style.--mj-font-family]=\"activeTheme()?.fontFamily || 'inherit'\">\n\n <!-- Widget Header -->\n <header class=\"mj-widget-header\">\n <h2 class=\"mj-widget-title\">{{ config?.title || 'Checkout' }}</h2>\n @if (config?.description) {\n <p class=\"mj-widget-description\">{{ config?.description }}</p>\n }\n </header>\n\n <!-- Error Banner -->\n @if (displayErrorMessage()) {\n <div class=\"mj-widget-error-banner\" role=\"alert\">\n <span class=\"mj-error-icon\">\u26A0\uFE0F</span>\n <span>{{ displayErrorMessage() }}</span>\n </div>\n }\n\n <!-- Order Item & Pricing Summary -->\n <div class=\"mj-widget-summary-card\">\n <div class=\"mj-summary-row\">\n <div class=\"mj-summary-item-info\">\n <span class=\"mj-product-name\">{{ config?.productName || 'Order Item' }}</span>\n @if (isFree()) {\n <span class=\"mj-badge-free\">FREE</span>\n }\n </div>\n <div class=\"mj-summary-price\">\n @if (isFree()) {\n <span class=\"mj-price-free\">$0.00</span>\n } @else {\n <span class=\"mj-price-amount\">{{ currencySymbol() }}{{ (config?.unitPrice || 0).toFixed(2) }}</span>\n }\n </div>\n </div>\n\n @if (config?.allowQuantity) {\n <div class=\"mj-quantity-selector-row\">\n <label for=\"quantityInput\" class=\"mj-label\">Quantity</label>\n <div class=\"mj-qty-controls\">\n <button type=\"button\" class=\"mj-qty-btn\" (click)=\"onQuantityChange(quantity() - 1)\" [disabled]=\"quantity() <= 1\">-</button>\n <input id=\"quantityInput\" type=\"number\" class=\"mj-qty-input\" [ngModel]=\"quantity()\" (ngModelChange)=\"onQuantityChange($event)\" min=\"1\" [max]=\"config?.maxQuantity || 50\" />\n <button type=\"button\" class=\"mj-qty-btn\" (click)=\"onQuantityChange(quantity() + 1)\" [disabled]=\"quantity() >= (config?.maxQuantity || 50)\">+</button>\n </div>\n </div>\n }\n </div>\n\n <!-- Registration / Contact / Product Extension Form Section -->\n <section class=\"mj-widget-form-section\">\n @if (isSingleUnit()) {\n <!-- Single Unit / Primary Form -->\n <h3 class=\"mj-section-title\">Details</h3>\n <div class=\"mj-form-grid\">\n @for (field of activeFieldDefs(); track field.name) {\n <div class=\"mj-form-group\" [class.full-width]=\"field.type === 'textarea' || field.name === 'email' || field.name === 'Email'\">\n <label class=\"mj-label\">\n {{ field.label }}\n @if (field.required) {\n <span class=\"mj-required\">*</span>\n }\n </label>\n\n @switch (field.type) {\n @case ('textarea') {\n <textarea\n class=\"mj-input mj-textarea\"\n [ngModel]=\"units()[0]?.[field.name]\"\n (ngModelChange)=\"updateUnitField(0, field.name, $event)\"\n [placeholder]=\"field.placeholder || ''\"\n [required]=\"field.required || false\">\n </textarea>\n }\n @case ('select') {\n <select\n class=\"mj-select\"\n [ngModel]=\"units()[0]?.[field.name]\"\n (ngModelChange)=\"updateUnitField(0, field.name, $event)\"\n [required]=\"field.required || false\">\n <option [ngValue]=\"''\">Select {{ field.label }}</option>\n @for (opt of field.options; track opt.value) {\n <option [ngValue]=\"opt.value\">{{ opt.label }}</option>\n }\n </select>\n }\n @case ('boolean') {\n <label class=\"mj-checkbox-label\">\n <input\n type=\"checkbox\"\n [ngModel]=\"units()[0]?.[field.name]\"\n (ngModelChange)=\"updateUnitField(0, field.name, $event)\" />\n <span>{{ field.label }}</span>\n </label>\n }\n @case ('number') {\n <input\n type=\"number\"\n class=\"mj-input\"\n [ngModel]=\"units()[0]?.[field.name]\"\n (ngModelChange)=\"updateUnitField(0, field.name, $event)\"\n [placeholder]=\"field.placeholder || ''\"\n [required]=\"field.required || false\" />\n }\n @case ('date') {\n <input\n type=\"date\"\n class=\"mj-input\"\n [ngModel]=\"units()[0]?.[field.name]\"\n (ngModelChange)=\"updateUnitField(0, field.name, $event)\"\n [required]=\"field.required || false\" />\n }\n @default {\n <input\n [type]=\"field.name.toLowerCase().includes('email') ? 'email' : 'text'\"\n class=\"mj-input\"\n [ngModel]=\"units()[0]?.[field.name]\"\n (ngModelChange)=\"updateUnitField(0, field.name, $event)\"\n [placeholder]=\"field.placeholder || ''\"\n [readonly]=\"isLockedEmail(0, field.name)\"\n [required]=\"field.required || false\" />\n @if (isLockedEmail(0, field.name)) {\n <p class=\"mj-field-hint\">Your member discount is tied to this verified e-mail.</p>\n }\n }\n }\n </div>\n }\n </div>\n } @else {\n <!-- Multi-Unit Matrix (Repeating Fieldsets for Quantity > 1) -->\n <div class=\"mj-multi-attendee-header\">\n <h3 class=\"mj-section-title\">Item Details ({{ quantity() }})</h3>\n <button type=\"button\" class=\"mj-btn-link\" (click)=\"copyPrimaryToAll()\">Copy Primary Info to All</button>\n </div>\n\n <div class=\"mj-attendee-matrix\">\n @for (unit of units(); track $index) {\n <div class=\"mj-attendee-card\">\n <div class=\"mj-attendee-card-title\">Item {{ $index + 1 }}</div>\n <div class=\"mj-form-grid\">\n @for (field of activeFieldDefs(); track field.name) {\n <div class=\"mj-form-group\" [class.full-width]=\"field.type === 'textarea' || field.name === 'email' || field.name === 'Email'\">\n <label class=\"mj-label\">\n {{ field.label }}\n @if (field.required) {\n <span class=\"mj-required\">*</span>\n }\n </label>\n\n @switch (field.type) {\n @case ('textarea') {\n <textarea\n class=\"mj-input mj-textarea\"\n [ngModel]=\"unit[field.name]\"\n (ngModelChange)=\"updateUnitField($index, field.name, $event)\"\n [placeholder]=\"field.placeholder || ''\"\n [required]=\"field.required || false\">\n </textarea>\n }\n @case ('select') {\n <select\n class=\"mj-select\"\n [ngModel]=\"unit[field.name]\"\n (ngModelChange)=\"updateUnitField($index, field.name, $event)\"\n [required]=\"field.required || false\">\n <option [ngValue]=\"''\">Select {{ field.label }}</option>\n @for (opt of field.options; track opt.value) {\n <option [ngValue]=\"opt.value\">{{ opt.label }}</option>\n }\n </select>\n }\n @case ('boolean') {\n <label class=\"mj-checkbox-label\">\n <input\n type=\"checkbox\"\n [ngModel]=\"unit[field.name]\"\n (ngModelChange)=\"updateUnitField($index, field.name, $event)\" />\n <span>{{ field.label }}</span>\n </label>\n }\n @case ('number') {\n <input\n type=\"number\"\n class=\"mj-input\"\n [ngModel]=\"unit[field.name]\"\n (ngModelChange)=\"updateUnitField($index, field.name, $event)\"\n [placeholder]=\"field.placeholder || ''\"\n [required]=\"field.required || false\" />\n }\n @case ('date') {\n <input\n type=\"date\"\n class=\"mj-input\"\n [ngModel]=\"unit[field.name]\"\n (ngModelChange)=\"updateUnitField($index, field.name, $event)\"\n [required]=\"field.required || false\" />\n }\n @default {\n <input\n [type]=\"field.name.toLowerCase().includes('email') ? 'email' : 'text'\"\n class=\"mj-input\"\n [ngModel]=\"unit[field.name]\"\n (ngModelChange)=\"updateUnitField($index, field.name, $event)\"\n [placeholder]=\"field.placeholder || ''\"\n [readonly]=\"isLockedEmail($index, field.name)\"\n [required]=\"field.required || false\" />\n @if (isLockedEmail($index, field.name)) {\n <p class=\"mj-field-hint\">Your member discount is tied to this verified e-mail.</p>\n }\n }\n }\n </div>\n }\n </div>\n </div>\n }\n </div>\n }\n </section>\n\n <!-- Billing Location \u2014 required so the sale can be placed in a tax jurisdiction -->\n <section class=\"mj-widget-form-section\">\n <h3 class=\"mj-section-title\">Billing Location</h3>\n <div class=\"mj-form-grid\">\n <div class=\"mj-form-group\">\n <label class=\"mj-label\" [attr.for]=\"widgetInstanceId + '-billing-country'\">\n Country <span class=\"mj-required\">*</span>\n </label>\n <select\n class=\"mj-select\"\n [id]=\"widgetInstanceId + '-billing-country'\"\n autocomplete=\"country\"\n [ngModel]=\"billingCountry()\"\n (ngModelChange)=\"onBillingCountryChange($event)\"\n required>\n <option [ngValue]=\"''\">Select country</option>\n @for (c of billingCountries; track c.Code) {\n <option [ngValue]=\"c.Code\">{{ c.Name }}</option>\n }\n </select>\n </div>\n @if (billingRegions().length > 0) {\n <div class=\"mj-form-group\">\n <label class=\"mj-label\" [attr.for]=\"widgetInstanceId + '-billing-region'\">\n State / Province <span class=\"mj-required\">*</span>\n </label>\n <select\n class=\"mj-select\"\n [id]=\"widgetInstanceId + '-billing-region'\"\n autocomplete=\"address-level1\"\n [ngModel]=\"billingRegion()\"\n (ngModelChange)=\"onBillingRegionChange($event)\"\n required>\n <option [ngValue]=\"''\">Select state or province</option>\n @for (r of billingRegions(); track r.Code) {\n <option [ngValue]=\"r.Code\">{{ r.Name }}</option>\n }\n </select>\n </div>\n }\n <div class=\"mj-form-group\">\n <label class=\"mj-label\" [attr.for]=\"widgetInstanceId + '-billing-postal'\">\n Postal Code\n @if (billingPostalRequired()) {\n <span class=\"mj-required\">*</span>\n }\n </label>\n <input\n type=\"text\"\n class=\"mj-input\"\n [id]=\"widgetInstanceId + '-billing-postal'\"\n autocomplete=\"postal-code\"\n maxlength=\"20\"\n [ngModel]=\"billingPostalCode()\"\n (ngModelChange)=\"onBillingPostalCodeChange($event)\"\n [required]=\"billingPostalRequired()\" />\n </div>\n </div>\n </section>\n <!-- Questions from the widget's Configuration; answers are recorded on the order -->\n @if (questions().length > 0) {\n <section class=\"mj-widget-form-section\">\n <h3 class=\"mj-section-title\">A few questions</h3>\n <div class=\"mj-form-grid\">\n @for (question of questions(); track question.key) {\n <div class=\"mj-form-group full-width\">\n <label class=\"mj-label\" [attr.for]=\"widgetInstanceId + '-q-' + question.key\">\n {{ question.label }}\n @if (question.required) {\n <span class=\"mj-required\">*</span>\n }\n </label>\n @if (question.type === 'select') {\n <select\n class=\"mj-select\"\n [id]=\"widgetInstanceId + '-q-' + question.key\"\n [ngModel]=\"answerFor(question.key).Value ?? ''\"\n (ngModelChange)=\"updateAnswer(question.key, { Value: $event })\"\n [required]=\"question.required || false\">\n <option [ngValue]=\"''\">Select an answer</option>\n @for (opt of question.options; track optionValue(opt)) {\n <option [ngValue]=\"optionValue(opt)\">{{ optionLabel(opt) }}</option>\n }\n </select>\n @if (isOtherChosen(question)) {\n <input\n type=\"text\"\n class=\"mj-input mj-question-other\"\n [attr.aria-label]=\"question.label + ' (please specify)'\"\n placeholder=\"Please specify\"\n [attr.maxlength]=\"answerMaxLength(question)\"\n [ngModel]=\"answerFor(question.key).OtherText ?? ''\"\n (ngModelChange)=\"updateAnswer(question.key, { OtherText: $event })\"\n required />\n }\n } @else {\n <input\n type=\"text\"\n class=\"mj-input\"\n [id]=\"widgetInstanceId + '-q-' + question.key\"\n [attr.maxlength]=\"answerMaxLength(question)\"\n [ngModel]=\"answerFor(question.key).Value ?? ''\"\n (ngModelChange)=\"updateAnswer(question.key, { Value: $event })\"\n [required]=\"question.required || false\" />\n }\n </div>\n }\n </div>\n </section>\n }\n\n <!-- Choice groups from the widget's Configuration; the picks are recorded on the order line -->\n @for (group of choiceGroups(); track group.key) {\n <section class=\"mj-widget-form-section\">\n <fieldset class=\"mj-choice-group\">\n <legend class=\"mj-section-title\">\n {{ group.label }}\n <span class=\"mj-choice-count\">(choose {{ choiceCount(group) }})</span>\n @if (group.min > 0) {\n <span class=\"mj-required\">*</span>\n }\n </legend>\n <div class=\"mj-choice-options\">\n @for (opt of group.options; track choiceValue(opt)) {\n <label\n class=\"mj-checkbox-label\"\n [class.is-disabled]=\"isGroupFull(group) && !isChosen(group.key, choiceValue(opt))\">\n <input\n type=\"checkbox\"\n [checked]=\"isChosen(group.key, choiceValue(opt))\"\n [disabled]=\"isGroupFull(group) && !isChosen(group.key, choiceValue(opt))\"\n (change)=\"toggleChoice(group, choiceValue(opt))\" />\n <span>{{ choiceLabel(opt) }}</span>\n </label>\n }\n </div>\n </fieldset>\n </section>\n }\n\n <!-- Stripe Embedded Payment Section -->\n @if (!isFree()) {\n <section class=\"mj-widget-payment-section\">\n <h3 class=\"mj-section-title\">Payment</h3>\n <div class=\"mj-stripe-container\">\n <div id=\"stripe-card-element\" class=\"mj-stripe-mount-point\">\n <!-- Stripe.js mounts secure hosted Elements iframe here -->\n </div>\n <div class=\"mj-stripe-badge\">\n <span class=\"mj-stripe-lock-icon\">\uD83D\uDD12</span>\n <span>Secured by Stripe \u2022 PCI-DSS Level 1 Certified \u2022 End-to-end Encrypted</span>\n </div>\n </div>\n </section>\n\n @if (allowsPromotionCodes()) {\n <div class=\"mj-checkout-promo\">\n <label class=\"mj-checkout-promo__label\" for=\"{{ widgetInstanceId }}-promo\">Promo code</label>\n <div class=\"mj-checkout-promo__row\">\n <input id=\"{{ widgetInstanceId }}-promo\" type=\"text\" class=\"mj-input mj-checkout-promo__input\" autocomplete=\"off\" maxlength=\"60\"\n [value]=\"promotionCodeInput()\"\n (input)=\"promotionCodeInput.set($any($event.target).value)\"\n (keydown.enter)=\"applyPromotionCode()\"\n [disabled]=\"isProcessing\" />\n <button type=\"button\" class=\"mj-checkout-promo__apply\"\n [disabled]=\"isProcessing || !promotionCodeInput().trim()\"\n (click)=\"applyPromotionCode()\">Apply</button>\n </div>\n @if (promotionError) {\n <p class=\"mj-checkout-promo__error\" role=\"alert\">{{ promotionError }}</p>\n } @else if (activePromotion(); as promo) {\n <p class=\"mj-checkout-promo__applied\" role=\"status\">\n {{ promo.code }} applied: \u2212{{ currencySymbol() }}{{ promo.discount.toFixed(2) }}\n </p>\n }\n </div>\n }\n\n @if (activeMemberDiscount(); as member) {\n <p class=\"mj-checkout-promo__applied mj-checkout-member-discount\" role=\"status\">\n {{ member.code ? member.code + ' member discount' : 'Member discount' }}: \u2212{{ currencySymbol() }}{{ member.discount.toFixed(2) }}\n </p>\n }\n\n @if (autoRenewConsentText(); as consentText) {\n <label class=\"mj-checkout-consent\">\n <input type=\"checkbox\"\n [checked]=\"autoRenewConsent()\"\n (change)=\"autoRenewConsent.set($any($event.target).checked)\"\n [disabled]=\"isProcessing\" />\n <span>{{ consentText }}</span>\n </label>\n }\n\n <!-- Final Total Line -->\n @if (quotedTax !== null) {\n <div class=\"mj-checkout-total-row\">\n <span class=\"mj-total-label\">Sales Tax</span>\n <span class=\"mj-total-amount\">{{ currencySymbol() }}{{ (quotedTax ?? 0).toFixed(2) }}</span>\n </div>\n }\n <div class=\"mj-checkout-total-row\">\n <span class=\"mj-total-label\">Total Due</span>\n <span class=\"mj-total-amount\">{{ currencySymbol() }}{{ totalGross().toFixed(2) }}</span>\n </div>\n }\n\n <!-- Actions -->\n <div class=\"mj-widget-actions\">\n <button type=\"button\" class=\"mj-btn-submit\" [disabled]=\"!isFormValid() || isProcessing\" (click)=\"handleSubmit()\">\n @if (isProcessing) {\n <span class=\"mj-spinner\"></span>\n <span>Processing...</span>\n } @else if (isFree()) {\n <span>Complete Free Registration</span>\n } @else {\n <span>Pay {{ currencySymbol() }}{{ totalGross().toFixed(2) }}</span>\n }\n </button>\n\n <button type=\"button\" class=\"mj-btn-cancel\" [disabled]=\"isProcessing\" (click)=\"cancelled.emit()\">\n Cancel\n </button>\n </div>\n</div>\n", styles: [":host {\n display: block;\n font-family: var(--mj-font-family, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif);\n color: var(--mj-text-color, #1e293b);\n}\n\n.mj-checkout-widget-container {\n /* Widget-local colours with no public theme hook. The widget embeds in host pages that\n do not load MJ's tokens, so these stay literal. */\n --mjo-co-border: #cbd5e1;\n --mjo-co-error: #b91c1c;\n --mjo-co-success: #15803d;\n max-width: 560px;\n margin: 0 auto;\n background: var(--mj-bg-color, #ffffff);\n border: 1px solid #e2e8f0;\n border-radius: var(--mj-border-radius, 8px);\n padding: 24px;\n box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.05), 0 2px 4px -2px rgba(0, 0, 0, 0.05);\n}\n\n.mj-widget-header {\n margin-bottom: 20px;\n}\n\n.mj-widget-title {\n margin: 0 0 6px 0;\n font-size: 1.35rem;\n font-weight: 700;\n color: var(--mj-text-color, #0f172a);\n}\n\n.mj-widget-description {\n margin: 0;\n font-size: 0.9rem;\n color: #64748b;\n line-height: 1.4;\n}\n\n.mj-widget-error-banner {\n display: flex;\n align-items: center;\n gap: 8px;\n background: #fef2f2;\n border: 1px solid #f87171;\n color: #991b1b;\n padding: 10px 14px;\n border-radius: 6px;\n margin-bottom: 18px;\n font-size: 0.875rem;\n}\n\n.mj-error-icon {\n font-size: 1rem;\n}\n\n.mj-widget-summary-card {\n background: #f8fafc;\n border: 1px solid #e2e8f0;\n border-radius: 6px;\n padding: 14px 16px;\n margin-bottom: 20px;\n}\n\n.mj-summary-row {\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n\n.mj-summary-price {\n display: flex;\n align-items: center;\n}\n\n.mj-widget-form-section {\n margin-bottom: 20px;\n}\n\n.mj-summary-item-info {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.mj-product-name {\n font-weight: 600;\n font-size: 1rem;\n color: #1e293b;\n}\n\n.mj-badge-free {\n background: #dcfce7;\n color: #166534;\n font-size: 0.75rem;\n font-weight: 700;\n padding: 2px 6px;\n border-radius: 4px;\n}\n\n.mj-price-free {\n font-weight: 700;\n color: #166534;\n font-size: 1.1rem;\n}\n\n.mj-price-amount {\n font-weight: 700;\n color: #0f172a;\n font-size: 1.1rem;\n}\n\n.mj-quantity-selector-row {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-top: 12px;\n padding-top: 12px;\n border-top: 1px dashed #cbd5e1;\n}\n\n.mj-qty-controls {\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n.mj-qty-btn {\n width: 28px;\n height: 28px;\n background: #ffffff;\n border: 1px solid #cbd5e1;\n border-radius: 4px;\n cursor: pointer;\n font-weight: 600;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.mj-qty-btn:disabled {\n opacity: 0.4;\n cursor: not-allowed;\n}\n\n.mj-qty-input {\n width: 44px;\n height: 28px;\n text-align: center;\n border: 1px solid #cbd5e1;\n border-radius: 4px;\n font-weight: 600;\n}\n\n.mj-section-title {\n font-size: 1rem;\n font-weight: 600;\n margin: 0 0 12px 0;\n color: #334155;\n}\n\n.mj-form-grid {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 12px;\n margin-bottom: 18px;\n}\n\n.mj-form-group {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.mj-form-group.full-width {\n grid-column: 1 / -1;\n}\n\n.mj-label {\n font-size: 0.8rem;\n font-weight: 500;\n color: #475569;\n}\n\n.mj-required {\n color: #ef4444;\n}\n\n.mj-input, .mj-select {\n padding: 8px 12px;\n font-size: 0.9rem;\n border: 1px solid #cbd5e1;\n border-radius: 4px;\n background: #ffffff;\n color: #1e293b;\n outline: none;\n transition: border-color 0.15s ease;\n width: 100%;\n box-sizing: border-box;\n}\n\n.mj-textarea {\n min-height: 70px;\n resize: vertical;\n font-family: inherit;\n}\n\n.mj-select {\n min-height: 38px;\n}\n\n.mj-checkbox-label {\n display: inline-flex;\n align-items: center;\n gap: 8px;\n cursor: pointer;\n font-size: 0.9rem;\n font-weight: 400;\n color: #334155;\n margin-top: 4px;\n}\n\n/* The free-text answer that appears under a question's \"Other\" choice. */\n.mj-question-other {\n margin-top: 8px;\n}\n\n/* A choice group: its options stacked, with how many to pick beside the heading. */\n.mj-choice-group {\n border: 0;\n margin: 0;\n padding: 0;\n}\n\n.mj-choice-count {\n font-weight: normal;\n color: #64748b;\n}\n\n.mj-choice-options {\n display: flex;\n flex-direction: column;\n gap: 2px;\n}\n\n.mj-checkbox-label.is-disabled {\n cursor: not-allowed;\n opacity: 0.55;\n}\n\n.mj-input:focus, .mj-select:focus {\n border-color: var(--mj-primary-color, #2563eb);\n box-shadow: 0 0 0 2px rgba(37, 99, 235, 0.15);\n}\n\n/* The e-mail a member token was signed for (#919): shown, not editable. */\n.mj-input[readonly] {\n background: #f1f5f9;\n color: #475569;\n cursor: default;\n}\n\n.mj-field-hint {\n font-size: 0.8rem;\n color: #64748b;\n margin: 0.25rem 0 0;\n}\n\n.mj-multi-attendee-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 12px;\n}\n\n.mj-btn-link {\n background: none;\n border: none;\n color: var(--mj-primary-color, #2563eb);\n font-size: 0.8rem;\n cursor: pointer;\n text-decoration: underline;\n padding: 0;\n}\n\n.mj-attendee-matrix {\n display: flex;\n flex-direction: column;\n gap: 14px;\n margin-bottom: 20px;\n}\n\n.mj-attendee-card {\n background: #f8fafc;\n border: 1px solid #e2e8f0;\n border-radius: 6px;\n padding: 12px 14px;\n}\n\n.mj-attendee-card-title {\n font-size: 0.85rem;\n font-weight: 600;\n color: #475569;\n margin-bottom: 10px;\n}\n\n/* Stripe Payment Container */\n.mj-widget-payment-section {\n margin-top: 16px;\n padding-top: 16px;\n border-top: 1px solid #e2e8f0;\n}\n\n.mj-stripe-container {\n background: #ffffff;\n border: 1px solid #e2e8f0;\n border-radius: 6px;\n padding: 14px;\n margin-bottom: 16px;\n}\n\n.mj-stripe-mount-point {\n min-height: 40px;\n}\n\n.mj-stripe-badge {\n display: flex;\n align-items: center;\n gap: 6px;\n margin-top: 10px;\n font-size: 0.75rem;\n color: #64748b;\n}\n\n.mj-stripe-lock-icon {\n font-size: 0.85rem;\n}\n\n.mj-checkout-total-row {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 12px 0;\n border-top: 1px solid #e2e8f0;\n margin-top: 10px;\n margin-bottom: 18px;\n}\n\n.mj-total-label {\n font-weight: 700;\n font-size: 1.05rem;\n color: #0f172a;\n}\n\n.mj-total-amount {\n font-weight: 800;\n font-size: 1.25rem;\n color: var(--mj-primary-color, #2563eb);\n}\n\n.mj-widget-actions {\n margin-top: 12px;\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.mj-btn-submit {\n width: 100%;\n padding: 12px;\n background: var(--mj-primary-color, #2563eb);\n color: #ffffff;\n font-size: 1rem;\n font-weight: 600;\n border: none;\n border-radius: var(--mj-border-radius, 8px);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n transition: opacity 0.15s ease;\n}\n\n.mj-btn-submit:hover:not(:disabled) {\n opacity: 0.92;\n}\n\n.mj-btn-submit:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.mj-btn-cancel {\n width: 100%;\n padding: 8px 12px;\n background: transparent;\n color: #64748b;\n font-size: 0.875rem;\n font-weight: 500;\n border: none;\n cursor: pointer;\n text-align: center;\n}\n\n.mj-btn-cancel:hover:not(:disabled) {\n color: #334155;\n text-decoration: underline;\n}\n\n.mj-spinner {\n width: 16px;\n height: 16px;\n border: 2px solid #ffffff;\n border-top-color: transparent;\n border-radius: 50%;\n animation: mj-spin 0.8s linear infinite;\n}\n\n@keyframes mj-spin {\n to { transform: rotate(360deg); }\n}\n\n.mj-checkout-consent {\n display: flex;\n gap: 0.5rem;\n align-items: flex-start;\n margin: 0.75rem 0;\n font-size: 0.875rem;\n font-weight: 400;\n line-height: 1.4;\n}\n.mj-checkout-consent input {\n margin-top: 0.2rem;\n}\n\n/* Checkboxes keep their native size even when the host page styles every input\n (e.g. `input { width: 100% }`): this rule is scoped to the widget, so it outranks\n a plain element or class selector on the host page. */\n.mj-checkbox-label input[type=checkbox],\n.mj-checkout-consent input[type=checkbox] {\n width: auto;\n height: auto;\n padding: 0;\n border: 0;\n flex: 0 0 auto;\n}\n\n.mj-checkout-promo {\n margin: 0.75rem 0;\n}\n.mj-checkout-promo__label {\n display: block;\n font-size: 0.875rem;\n margin-bottom: 0.25rem;\n}\n.mj-checkout-promo__row {\n display: flex;\n gap: 0.5rem;\n}\n.mj-checkout-promo__input {\n flex: 1 1 auto;\n}\n.mj-checkout-promo__error {\n color: var(--mjo-co-error);\n font-size: 0.875rem;\n margin: 0.35rem 0 0;\n}\n.mj-checkout-promo__applied {\n color: var(--mjo-co-success);\n font-size: 0.875rem;\n margin: 0.35rem 0 0;\n}\n.mj-checkout-member-discount {\n margin: 0.75rem 0;\n}\n.mj-checkout-promo__apply {\n flex: 0 0 auto;\n padding: 8px 14px;\n background: transparent;\n color: var(--mj-primary-color, #2563eb);\n border: 1px solid var(--mjo-co-border);\n border-radius: var(--mj-border-radius, 8px);\n font-size: 0.875rem;\n font-weight: 600;\n cursor: pointer;\n}\n.mj-checkout-promo__apply:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n"] }]
|
|
1538
|
+
args: [{ selector: 'mj-checkout-widget', standalone: true, imports: [CommonModule, FormsModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"mj-checkout-widget-container\"\n [style.--mj-primary-color]=\"activeTheme()?.primaryColor || '#2563eb'\"\n [style.--mj-accent-color]=\"activeTheme()?.accentColor || '#3b82f6'\"\n [style.--mj-border-radius]=\"activeTheme()?.borderRadius || '8px'\"\n [style.--mj-bg-color]=\"activeTheme()?.backgroundColor || '#ffffff'\"\n [style.--mj-text-color]=\"activeTheme()?.textColor || '#0f172a'\"\n [style.--mj-font-family]=\"activeTheme()?.fontFamily || 'inherit'\">\n\n <!-- Widget Header -->\n <header class=\"mj-widget-header\">\n <h2 class=\"mj-widget-title\">{{ config?.title || 'Checkout' }}</h2>\n @if (config?.description) {\n <p class=\"mj-widget-description\">{{ config?.description }}</p>\n }\n </header>\n\n <!-- Error Banner -->\n @if (displayErrorMessage()) {\n <div class=\"mj-widget-error-banner\" role=\"alert\">\n <span class=\"mj-error-icon\">\u26A0\uFE0F</span>\n <span>{{ displayErrorMessage() }}</span>\n </div>\n } @else if (displayNoticeMessage()) {\n <div class=\"mj-widget-notice-banner\" role=\"status\">\n <span>{{ displayNoticeMessage() }}</span>\n </div>\n }\n\n <!-- Order Item & Pricing Summary -->\n <div class=\"mj-widget-summary-card\">\n <div class=\"mj-summary-row\">\n <div class=\"mj-summary-item-info\">\n <span class=\"mj-product-name\">{{ config?.productName || 'Order Item' }}</span>\n @if (isFree()) {\n <span class=\"mj-badge-free\">FREE</span>\n }\n </div>\n <div class=\"mj-summary-price\">\n @if (isFree()) {\n <span class=\"mj-price-free\">$0.00</span>\n } @else {\n <span class=\"mj-price-amount\">{{ currencySymbol() }}{{ (config?.unitPrice || 0).toFixed(2) }}</span>\n }\n </div>\n </div>\n\n @if (config?.allowQuantity) {\n <div class=\"mj-quantity-selector-row\">\n <label for=\"quantityInput\" class=\"mj-label\">Quantity</label>\n <div class=\"mj-qty-controls\">\n <button type=\"button\" class=\"mj-qty-btn\" (click)=\"onQuantityChange(quantity() - 1)\" [disabled]=\"quantity() <= 1\">-</button>\n <input id=\"quantityInput\" type=\"number\" class=\"mj-qty-input\" [ngModel]=\"quantity()\" (ngModelChange)=\"onQuantityChange($event)\" min=\"1\" [max]=\"config?.maxQuantity || 50\" />\n <button type=\"button\" class=\"mj-qty-btn\" (click)=\"onQuantityChange(quantity() + 1)\" [disabled]=\"quantity() >= (config?.maxQuantity || 50)\">+</button>\n </div>\n </div>\n }\n </div>\n\n <!-- Registration / Contact / Product Extension Form Section -->\n <section class=\"mj-widget-form-section\">\n @if (isSingleUnit()) {\n <!-- Single Unit / Primary Form -->\n <h3 class=\"mj-section-title\">Details</h3>\n <div class=\"mj-form-grid\">\n @for (field of activeFieldDefs(); track field.name) {\n <div class=\"mj-form-group\" [class.full-width]=\"field.type === 'textarea' || field.name === 'email' || field.name === 'Email'\">\n <label class=\"mj-label\">\n {{ field.label }}\n @if (field.required) {\n <span class=\"mj-required\">*</span>\n }\n </label>\n\n @switch (field.type) {\n @case ('textarea') {\n <textarea\n class=\"mj-input mj-textarea\"\n [ngModel]=\"units()[0]?.[field.name]\"\n (ngModelChange)=\"updateUnitField(0, field.name, $event)\"\n [placeholder]=\"field.placeholder || ''\"\n [required]=\"field.required || false\">\n </textarea>\n }\n @case ('select') {\n <select\n class=\"mj-select\"\n [ngModel]=\"units()[0]?.[field.name]\"\n (ngModelChange)=\"updateUnitField(0, field.name, $event)\"\n [required]=\"field.required || false\">\n <option [ngValue]=\"''\">Select {{ field.label }}</option>\n @for (opt of field.options; track opt.value) {\n <option [ngValue]=\"opt.value\">{{ opt.label }}</option>\n }\n </select>\n }\n @case ('boolean') {\n <label class=\"mj-checkbox-label\">\n <input\n type=\"checkbox\"\n [ngModel]=\"units()[0]?.[field.name]\"\n (ngModelChange)=\"updateUnitField(0, field.name, $event)\" />\n <span>{{ field.label }}</span>\n </label>\n }\n @case ('number') {\n <input\n type=\"number\"\n class=\"mj-input\"\n [ngModel]=\"units()[0]?.[field.name]\"\n (ngModelChange)=\"updateUnitField(0, field.name, $event)\"\n [placeholder]=\"field.placeholder || ''\"\n [required]=\"field.required || false\" />\n }\n @case ('date') {\n <input\n type=\"date\"\n class=\"mj-input\"\n [ngModel]=\"units()[0]?.[field.name]\"\n (ngModelChange)=\"updateUnitField(0, field.name, $event)\"\n [required]=\"field.required || false\" />\n }\n @default {\n <input\n [type]=\"field.name.toLowerCase().includes('email') ? 'email' : 'text'\"\n class=\"mj-input\"\n [ngModel]=\"units()[0]?.[field.name]\"\n (ngModelChange)=\"updateUnitField(0, field.name, $event)\"\n [placeholder]=\"field.placeholder || ''\"\n [readonly]=\"isLockedEmail(0, field.name)\"\n [required]=\"field.required || false\" />\n @if (isLockedEmail(0, field.name)) {\n <p class=\"mj-field-hint\">Your member discount is tied to this verified e-mail.</p>\n }\n }\n }\n </div>\n }\n </div>\n } @else {\n <!-- Multi-Unit Matrix (Repeating Fieldsets for Quantity > 1) -->\n <div class=\"mj-multi-attendee-header\">\n <h3 class=\"mj-section-title\">Item Details ({{ quantity() }})</h3>\n <button type=\"button\" class=\"mj-btn-link\" (click)=\"copyPrimaryToAll()\">Copy Primary Info to All</button>\n </div>\n\n <div class=\"mj-attendee-matrix\">\n @for (unit of units(); track $index) {\n <div class=\"mj-attendee-card\">\n <div class=\"mj-attendee-card-title\">Item {{ $index + 1 }}</div>\n <div class=\"mj-form-grid\">\n @for (field of activeFieldDefs(); track field.name) {\n <div class=\"mj-form-group\" [class.full-width]=\"field.type === 'textarea' || field.name === 'email' || field.name === 'Email'\">\n <label class=\"mj-label\">\n {{ field.label }}\n @if (field.required) {\n <span class=\"mj-required\">*</span>\n }\n </label>\n\n @switch (field.type) {\n @case ('textarea') {\n <textarea\n class=\"mj-input mj-textarea\"\n [ngModel]=\"unit[field.name]\"\n (ngModelChange)=\"updateUnitField($index, field.name, $event)\"\n [placeholder]=\"field.placeholder || ''\"\n [required]=\"field.required || false\">\n </textarea>\n }\n @case ('select') {\n <select\n class=\"mj-select\"\n [ngModel]=\"unit[field.name]\"\n (ngModelChange)=\"updateUnitField($index, field.name, $event)\"\n [required]=\"field.required || false\">\n <option [ngValue]=\"''\">Select {{ field.label }}</option>\n @for (opt of field.options; track opt.value) {\n <option [ngValue]=\"opt.value\">{{ opt.label }}</option>\n }\n </select>\n }\n @case ('boolean') {\n <label class=\"mj-checkbox-label\">\n <input\n type=\"checkbox\"\n [ngModel]=\"unit[field.name]\"\n (ngModelChange)=\"updateUnitField($index, field.name, $event)\" />\n <span>{{ field.label }}</span>\n </label>\n }\n @case ('number') {\n <input\n type=\"number\"\n class=\"mj-input\"\n [ngModel]=\"unit[field.name]\"\n (ngModelChange)=\"updateUnitField($index, field.name, $event)\"\n [placeholder]=\"field.placeholder || ''\"\n [required]=\"field.required || false\" />\n }\n @case ('date') {\n <input\n type=\"date\"\n class=\"mj-input\"\n [ngModel]=\"unit[field.name]\"\n (ngModelChange)=\"updateUnitField($index, field.name, $event)\"\n [required]=\"field.required || false\" />\n }\n @default {\n <input\n [type]=\"field.name.toLowerCase().includes('email') ? 'email' : 'text'\"\n class=\"mj-input\"\n [ngModel]=\"unit[field.name]\"\n (ngModelChange)=\"updateUnitField($index, field.name, $event)\"\n [placeholder]=\"field.placeholder || ''\"\n [readonly]=\"isLockedEmail($index, field.name)\"\n [required]=\"field.required || false\" />\n @if (isLockedEmail($index, field.name)) {\n <p class=\"mj-field-hint\">Your member discount is tied to this verified e-mail.</p>\n }\n }\n }\n </div>\n }\n </div>\n </div>\n }\n </div>\n }\n </section>\n\n <!-- Billing Location \u2014 required so the sale can be placed in a tax jurisdiction -->\n <section class=\"mj-widget-form-section\">\n <h3 class=\"mj-section-title\">Billing Location</h3>\n <div class=\"mj-form-grid\">\n <div class=\"mj-form-group\">\n <label class=\"mj-label\" [attr.for]=\"widgetInstanceId + '-billing-country'\">\n Country <span class=\"mj-required\">*</span>\n </label>\n <select\n class=\"mj-select\"\n [id]=\"widgetInstanceId + '-billing-country'\"\n autocomplete=\"country\"\n [ngModel]=\"billingCountry()\"\n (ngModelChange)=\"onBillingCountryChange($event)\"\n required>\n <option [ngValue]=\"''\">Select country</option>\n @for (c of billingCountries; track c.Code) {\n <option [ngValue]=\"c.Code\">{{ c.Name }}</option>\n }\n </select>\n </div>\n @if (billingRegions().length > 0) {\n <div class=\"mj-form-group\">\n <label class=\"mj-label\" [attr.for]=\"widgetInstanceId + '-billing-region'\">\n State / Province <span class=\"mj-required\">*</span>\n </label>\n <select\n class=\"mj-select\"\n [id]=\"widgetInstanceId + '-billing-region'\"\n autocomplete=\"address-level1\"\n [ngModel]=\"billingRegion()\"\n (ngModelChange)=\"onBillingRegionChange($event)\"\n required>\n <option [ngValue]=\"''\">Select state or province</option>\n @for (r of billingRegions(); track r.Code) {\n <option [ngValue]=\"r.Code\">{{ r.Name }}</option>\n }\n </select>\n </div>\n }\n <div class=\"mj-form-group\">\n <label class=\"mj-label\" [attr.for]=\"widgetInstanceId + '-billing-postal'\">\n Postal Code\n @if (billingPostalRequired()) {\n <span class=\"mj-required\">*</span>\n }\n </label>\n <input\n type=\"text\"\n class=\"mj-input\"\n [id]=\"widgetInstanceId + '-billing-postal'\"\n autocomplete=\"postal-code\"\n maxlength=\"20\"\n [ngModel]=\"billingPostalCode()\"\n (ngModelChange)=\"onBillingPostalCodeChange($event)\"\n [required]=\"billingPostalRequired()\" />\n </div>\n </div>\n </section>\n <!-- Questions from the widget's Configuration; answers are recorded on the order -->\n @if (questions().length > 0) {\n <section class=\"mj-widget-form-section\">\n <h3 class=\"mj-section-title\">A few questions</h3>\n <div class=\"mj-form-grid\">\n @for (question of questions(); track question.key) {\n <div class=\"mj-form-group full-width\">\n <label class=\"mj-label\" [attr.for]=\"widgetInstanceId + '-q-' + question.key\">\n {{ question.label }}\n @if (question.required) {\n <span class=\"mj-required\">*</span>\n }\n </label>\n @if (question.type === 'select') {\n <select\n class=\"mj-select\"\n [id]=\"widgetInstanceId + '-q-' + question.key\"\n [ngModel]=\"answerFor(question.key).Value ?? ''\"\n (ngModelChange)=\"updateAnswer(question.key, { Value: $event })\"\n [required]=\"question.required || false\">\n <option [ngValue]=\"''\">Select an answer</option>\n @for (opt of question.options; track optionValue(opt)) {\n <option [ngValue]=\"optionValue(opt)\">{{ optionLabel(opt) }}</option>\n }\n </select>\n @if (isOtherChosen(question)) {\n <input\n type=\"text\"\n class=\"mj-input mj-question-other\"\n [attr.aria-label]=\"question.label + ' (please specify)'\"\n placeholder=\"Please specify\"\n [attr.maxlength]=\"answerMaxLength(question)\"\n [ngModel]=\"answerFor(question.key).OtherText ?? ''\"\n (ngModelChange)=\"updateAnswer(question.key, { OtherText: $event })\"\n required />\n }\n } @else {\n <input\n type=\"text\"\n class=\"mj-input\"\n [id]=\"widgetInstanceId + '-q-' + question.key\"\n [attr.maxlength]=\"answerMaxLength(question)\"\n [ngModel]=\"answerFor(question.key).Value ?? ''\"\n (ngModelChange)=\"updateAnswer(question.key, { Value: $event })\"\n [required]=\"question.required || false\" />\n }\n </div>\n }\n </div>\n </section>\n }\n\n <!-- Choice groups from the widget's Configuration; the picks are recorded on the order line -->\n @for (group of choiceGroups(); track group.key) {\n <section class=\"mj-widget-form-section\">\n <fieldset class=\"mj-choice-group\">\n <legend class=\"mj-section-title\">\n {{ group.label }}\n <span class=\"mj-choice-count\">(choose {{ choiceCount(group) }})</span>\n @if (group.min > 0) {\n <span class=\"mj-required\">*</span>\n }\n </legend>\n <div class=\"mj-choice-options\">\n @for (opt of group.options; track choiceValue(opt)) {\n <label\n class=\"mj-checkbox-label\"\n [class.is-disabled]=\"isGroupFull(group) && !isChosen(group.key, choiceValue(opt))\">\n <input\n type=\"checkbox\"\n [checked]=\"isChosen(group.key, choiceValue(opt))\"\n [disabled]=\"isGroupFull(group) && !isChosen(group.key, choiceValue(opt))\"\n (change)=\"toggleChoice(group, choiceValue(opt))\" />\n <span>{{ choiceLabel(opt) }}</span>\n </label>\n }\n </div>\n </fieldset>\n </section>\n }\n\n <!-- Stripe Embedded Payment Section -->\n @if (!isFree()) {\n <section class=\"mj-widget-payment-section\">\n <h3 class=\"mj-section-title\">Payment</h3>\n <div class=\"mj-stripe-container\">\n <div id=\"stripe-card-element\" class=\"mj-stripe-mount-point\">\n <!-- Stripe.js mounts secure hosted Elements iframe here -->\n </div>\n <div class=\"mj-stripe-badge\">\n <span class=\"mj-stripe-lock-icon\">\uD83D\uDD12</span>\n <span>Secured by Stripe \u2022 PCI-DSS Level 1 Certified \u2022 End-to-end Encrypted</span>\n </div>\n </div>\n </section>\n\n @if (allowsPromotionCodes()) {\n <div class=\"mj-checkout-promo\">\n <label class=\"mj-checkout-promo__label\" for=\"{{ widgetInstanceId }}-promo\">Promo code</label>\n <div class=\"mj-checkout-promo__row\">\n <input id=\"{{ widgetInstanceId }}-promo\" type=\"text\" class=\"mj-input mj-checkout-promo__input\" autocomplete=\"off\" maxlength=\"60\"\n [value]=\"promotionCodeInput()\"\n (input)=\"promotionCodeInput.set($any($event.target).value)\"\n (keydown.enter)=\"applyPromotionCode()\"\n [disabled]=\"isProcessing\" />\n <button type=\"button\" class=\"mj-checkout-promo__apply\"\n [disabled]=\"isProcessing || !promotionCodeInput().trim()\"\n (click)=\"applyPromotionCode()\">Apply</button>\n </div>\n @if (promotionError) {\n <p class=\"mj-checkout-promo__error\" role=\"alert\">{{ promotionError }}</p>\n } @else if (activePromotion(); as promo) {\n <p class=\"mj-checkout-promo__applied\" role=\"status\">\n {{ promo.code }} applied: \u2212{{ currencySymbol() }}{{ promo.discount.toFixed(2) }}\n </p>\n }\n </div>\n }\n\n @if (activeMemberDiscount(); as member) {\n <p class=\"mj-checkout-promo__applied mj-checkout-member-discount\" role=\"status\">\n {{ member.code ? member.code + ' member discount' : 'Member discount' }}: \u2212{{ currencySymbol() }}{{ member.discount.toFixed(2) }}\n </p>\n }\n\n @if (autoRenewConsentText(); as consentText) {\n <label class=\"mj-checkout-consent\">\n <input type=\"checkbox\"\n [checked]=\"autoRenewConsent()\"\n (change)=\"autoRenewConsent.set($any($event.target).checked)\"\n [disabled]=\"isProcessing\" />\n <span>{{ consentText }}</span>\n </label>\n }\n\n <!-- Final Total Line -->\n @if (quotedTax !== null) {\n <div class=\"mj-checkout-total-row\">\n <span class=\"mj-total-label\">Sales Tax</span>\n <span class=\"mj-total-amount\">{{ currencySymbol() }}{{ (quotedTax ?? 0).toFixed(2) }}</span>\n </div>\n }\n <div class=\"mj-checkout-total-row\">\n <span class=\"mj-total-label\">Total Due</span>\n <span class=\"mj-total-amount\">{{ currencySymbol() }}{{ totalGross().toFixed(2) }}</span>\n </div>\n }\n\n <!-- Actions -->\n <div class=\"mj-widget-actions\">\n <button type=\"button\" class=\"mj-btn-submit\" [disabled]=\"!isFormValid() || isProcessing\" (click)=\"handleSubmit()\">\n @if (isProcessing) {\n <span class=\"mj-spinner\"></span>\n <span>Processing...</span>\n } @else if (isFree()) {\n <span>Complete Free Registration</span>\n } @else {\n <span>Pay {{ currencySymbol() }}{{ totalGross().toFixed(2) }}</span>\n }\n </button>\n\n <button type=\"button\" class=\"mj-btn-cancel\" [disabled]=\"isProcessing\" (click)=\"cancelled.emit()\">\n Cancel\n </button>\n </div>\n</div>\n", styles: [":host {\n display: block;\n font-family: var(--mj-font-family, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif);\n color: var(--mj-text-color, #1e293b);\n}\n\n.mj-checkout-widget-container {\n /* Widget-local colours with no public theme hook. The widget embeds in host pages that\n do not load MJ's tokens, so these stay literal. */\n --mjo-co-border: #cbd5e1;\n --mjo-co-error: #b91c1c;\n --mjo-co-success: #15803d;\n max-width: 560px;\n margin: 0 auto;\n background: var(--mj-bg-color, #ffffff);\n border: 1px solid #e2e8f0;\n border-radius: var(--mj-border-radius, 8px);\n padding: 24px;\n box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.05), 0 2px 4px -2px rgba(0, 0, 0, 0.05);\n}\n\n.mj-widget-header {\n margin-bottom: 20px;\n}\n\n.mj-widget-title {\n margin: 0 0 6px 0;\n font-size: 1.35rem;\n font-weight: 700;\n color: var(--mj-text-color, #0f172a);\n}\n\n.mj-widget-description {\n margin: 0;\n font-size: 0.9rem;\n color: #64748b;\n line-height: 1.4;\n}\n\n.mj-widget-error-banner {\n display: flex;\n align-items: center;\n gap: 8px;\n background: #fef2f2;\n border: 1px solid #f87171;\n color: #991b1b;\n padding: 10px 14px;\n border-radius: 6px;\n margin-bottom: 18px;\n font-size: 0.875rem;\n}\n\n.mj-widget-notice-banner {\n display: flex;\n align-items: center;\n gap: 8px;\n background: #eff6ff;\n border: 1px solid #93c5fd;\n color: #1e3a8a;\n padding: 10px 14px;\n border-radius: 6px;\n margin-bottom: 18px;\n font-size: 0.875rem;\n}\n\n.mj-error-icon {\n font-size: 1rem;\n}\n\n.mj-widget-summary-card {\n background: #f8fafc;\n border: 1px solid #e2e8f0;\n border-radius: 6px;\n padding: 14px 16px;\n margin-bottom: 20px;\n}\n\n.mj-summary-row {\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n\n.mj-summary-price {\n display: flex;\n align-items: center;\n}\n\n.mj-widget-form-section {\n margin-bottom: 20px;\n}\n\n.mj-summary-item-info {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.mj-product-name {\n font-weight: 600;\n font-size: 1rem;\n color: #1e293b;\n}\n\n.mj-badge-free {\n background: #dcfce7;\n color: #166534;\n font-size: 0.75rem;\n font-weight: 700;\n padding: 2px 6px;\n border-radius: 4px;\n}\n\n.mj-price-free {\n font-weight: 700;\n color: #166534;\n font-size: 1.1rem;\n}\n\n.mj-price-amount {\n font-weight: 700;\n color: #0f172a;\n font-size: 1.1rem;\n}\n\n.mj-quantity-selector-row {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-top: 12px;\n padding-top: 12px;\n border-top: 1px dashed #cbd5e1;\n}\n\n.mj-qty-controls {\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n.mj-qty-btn {\n width: 28px;\n height: 28px;\n background: #ffffff;\n border: 1px solid #cbd5e1;\n border-radius: 4px;\n cursor: pointer;\n font-weight: 600;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.mj-qty-btn:disabled {\n opacity: 0.4;\n cursor: not-allowed;\n}\n\n.mj-qty-input {\n width: 44px;\n height: 28px;\n text-align: center;\n border: 1px solid #cbd5e1;\n border-radius: 4px;\n font-weight: 600;\n}\n\n.mj-section-title {\n font-size: 1rem;\n font-weight: 600;\n margin: 0 0 12px 0;\n color: #334155;\n}\n\n.mj-form-grid {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 12px;\n margin-bottom: 18px;\n}\n\n.mj-form-group {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.mj-form-group.full-width {\n grid-column: 1 / -1;\n}\n\n.mj-label {\n font-size: 0.8rem;\n font-weight: 500;\n color: #475569;\n}\n\n.mj-required {\n color: #ef4444;\n}\n\n.mj-input, .mj-select {\n padding: 8px 12px;\n font-size: 0.9rem;\n border: 1px solid #cbd5e1;\n border-radius: 4px;\n background: #ffffff;\n color: #1e293b;\n outline: none;\n transition: border-color 0.15s ease;\n width: 100%;\n box-sizing: border-box;\n}\n\n.mj-textarea {\n min-height: 70px;\n resize: vertical;\n font-family: inherit;\n}\n\n.mj-select {\n min-height: 38px;\n}\n\n.mj-checkbox-label {\n display: inline-flex;\n align-items: center;\n gap: 8px;\n cursor: pointer;\n font-size: 0.9rem;\n font-weight: 400;\n color: #334155;\n margin-top: 4px;\n}\n\n/* The free-text answer that appears under a question's \"Other\" choice. */\n.mj-question-other {\n margin-top: 8px;\n}\n\n/* A choice group: its options stacked, with how many to pick beside the heading. */\n.mj-choice-group {\n border: 0;\n margin: 0;\n padding: 0;\n}\n\n.mj-choice-count {\n font-weight: normal;\n color: #64748b;\n}\n\n.mj-choice-options {\n display: flex;\n flex-direction: column;\n gap: 2px;\n}\n\n.mj-checkbox-label.is-disabled {\n cursor: not-allowed;\n opacity: 0.55;\n}\n\n.mj-input:focus, .mj-select:focus {\n border-color: var(--mj-primary-color, #2563eb);\n box-shadow: 0 0 0 2px rgba(37, 99, 235, 0.15);\n}\n\n/* The e-mail a member token was signed for (#919): shown, not editable. */\n.mj-input[readonly] {\n background: #f1f5f9;\n color: #475569;\n cursor: default;\n}\n\n.mj-field-hint {\n font-size: 0.8rem;\n color: #64748b;\n margin: 0.25rem 0 0;\n}\n\n.mj-multi-attendee-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 12px;\n}\n\n.mj-btn-link {\n background: none;\n border: none;\n color: var(--mj-primary-color, #2563eb);\n font-size: 0.8rem;\n cursor: pointer;\n text-decoration: underline;\n padding: 0;\n}\n\n.mj-attendee-matrix {\n display: flex;\n flex-direction: column;\n gap: 14px;\n margin-bottom: 20px;\n}\n\n.mj-attendee-card {\n background: #f8fafc;\n border: 1px solid #e2e8f0;\n border-radius: 6px;\n padding: 12px 14px;\n}\n\n.mj-attendee-card-title {\n font-size: 0.85rem;\n font-weight: 600;\n color: #475569;\n margin-bottom: 10px;\n}\n\n/* Stripe Payment Container */\n.mj-widget-payment-section {\n margin-top: 16px;\n padding-top: 16px;\n border-top: 1px solid #e2e8f0;\n}\n\n.mj-stripe-container {\n background: #ffffff;\n border: 1px solid #e2e8f0;\n border-radius: 6px;\n padding: 14px;\n margin-bottom: 16px;\n}\n\n.mj-stripe-mount-point {\n min-height: 40px;\n}\n\n.mj-stripe-badge {\n display: flex;\n align-items: center;\n gap: 6px;\n margin-top: 10px;\n font-size: 0.75rem;\n color: #64748b;\n}\n\n.mj-stripe-lock-icon {\n font-size: 0.85rem;\n}\n\n.mj-checkout-total-row {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 12px 0;\n border-top: 1px solid #e2e8f0;\n margin-top: 10px;\n margin-bottom: 18px;\n}\n\n.mj-total-label {\n font-weight: 700;\n font-size: 1.05rem;\n color: #0f172a;\n}\n\n.mj-total-amount {\n font-weight: 800;\n font-size: 1.25rem;\n color: var(--mj-primary-color, #2563eb);\n}\n\n.mj-widget-actions {\n margin-top: 12px;\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.mj-btn-submit {\n width: 100%;\n padding: 12px;\n background: var(--mj-primary-color, #2563eb);\n color: #ffffff;\n font-size: 1rem;\n font-weight: 600;\n border: none;\n border-radius: var(--mj-border-radius, 8px);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n transition: opacity 0.15s ease;\n}\n\n.mj-btn-submit:hover:not(:disabled) {\n opacity: 0.92;\n}\n\n.mj-btn-submit:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.mj-btn-cancel {\n width: 100%;\n padding: 8px 12px;\n background: transparent;\n color: #64748b;\n font-size: 0.875rem;\n font-weight: 500;\n border: none;\n cursor: pointer;\n text-align: center;\n}\n\n.mj-btn-cancel:hover:not(:disabled) {\n color: #334155;\n text-decoration: underline;\n}\n\n.mj-spinner {\n width: 16px;\n height: 16px;\n border: 2px solid #ffffff;\n border-top-color: transparent;\n border-radius: 50%;\n animation: mj-spin 0.8s linear infinite;\n}\n\n@keyframes mj-spin {\n to { transform: rotate(360deg); }\n}\n\n.mj-checkout-consent {\n display: flex;\n gap: 0.5rem;\n align-items: flex-start;\n margin: 0.75rem 0;\n font-size: 0.875rem;\n font-weight: 400;\n line-height: 1.4;\n}\n.mj-checkout-consent input {\n margin-top: 0.2rem;\n}\n\n/* Checkboxes keep their native size even when the host page styles every input\n (e.g. `input { width: 100% }`): this rule is scoped to the widget, so it outranks\n a plain element or class selector on the host page. */\n.mj-checkbox-label input[type=checkbox],\n.mj-checkout-consent input[type=checkbox] {\n width: auto;\n height: auto;\n padding: 0;\n border: 0;\n flex: 0 0 auto;\n}\n\n.mj-checkout-promo {\n margin: 0.75rem 0;\n}\n.mj-checkout-promo__label {\n display: block;\n font-size: 0.875rem;\n margin-bottom: 0.25rem;\n}\n.mj-checkout-promo__row {\n display: flex;\n gap: 0.5rem;\n}\n.mj-checkout-promo__input {\n flex: 1 1 auto;\n}\n.mj-checkout-promo__error {\n color: var(--mjo-co-error);\n font-size: 0.875rem;\n margin: 0.35rem 0 0;\n}\n.mj-checkout-promo__applied {\n color: var(--mjo-co-success);\n font-size: 0.875rem;\n margin: 0.35rem 0 0;\n}\n.mj-checkout-member-discount {\n margin: 0.75rem 0;\n}\n.mj-checkout-promo__apply {\n flex: 0 0 auto;\n padding: 8px 14px;\n background: transparent;\n color: var(--mj-primary-color, #2563eb);\n border: 1px solid var(--mjo-co-border);\n border-radius: var(--mj-border-radius, 8px);\n font-size: 0.875rem;\n font-weight: 600;\n cursor: pointer;\n}\n.mj-checkout-promo__apply:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n"] }]
|
|
1455
1539
|
}], () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }], { config: [{
|
|
1456
1540
|
type: Input
|
|
1457
1541
|
}], distributionSlug: [{
|
|
@@ -1462,6 +1546,8 @@ export class MJCheckoutWidgetComponent {
|
|
|
1462
1546
|
type: Input
|
|
1463
1547
|
}], errorMessage: [{
|
|
1464
1548
|
type: Input
|
|
1549
|
+
}], noticeMessage: [{
|
|
1550
|
+
type: Input
|
|
1465
1551
|
}], isPaymentReady: [{
|
|
1466
1552
|
type: Input
|
|
1467
1553
|
}], stripePaymentMethodId: [{
|
|
@@ -1493,5 +1579,5 @@ export class MJCheckoutWidgetComponent {
|
|
|
1493
1579
|
}], quoteRequested: [{
|
|
1494
1580
|
type: Output
|
|
1495
1581
|
}] }); })();
|
|
1496
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(MJCheckoutWidgetComponent, { className: "MJCheckoutWidgetComponent", filePath: "lib/checkout-widget/checkout-widget.component.ts", lineNumber:
|
|
1582
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(MJCheckoutWidgetComponent, { className: "MJCheckoutWidgetComponent", filePath: "lib/checkout-widget/checkout-widget.component.ts", lineNumber: 206 }); })();
|
|
1497
1583
|
//# sourceMappingURL=checkout-widget.component.js.map
|