@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.
Files changed (88) hide show
  1. package/dist/checkout-element/main.js +368 -246
  2. package/dist/lib/checkout-widget/checkout-account.d.ts +10 -0
  3. package/dist/lib/checkout-widget/checkout-account.d.ts.map +1 -1
  4. package/dist/lib/checkout-widget/checkout-account.js +12 -0
  5. package/dist/lib/checkout-widget/checkout-account.js.map +1 -1
  6. package/dist/lib/checkout-widget/checkout-events.d.ts +15 -1
  7. package/dist/lib/checkout-widget/checkout-events.d.ts.map +1 -1
  8. package/dist/lib/checkout-widget/checkout-events.js +3 -1
  9. package/dist/lib/checkout-widget/checkout-events.js.map +1 -1
  10. package/dist/lib/checkout-widget/checkout-public-host.component.d.ts +6 -0
  11. package/dist/lib/checkout-widget/checkout-public-host.component.d.ts.map +1 -1
  12. package/dist/lib/checkout-widget/checkout-public-host.component.js +50 -21
  13. package/dist/lib/checkout-widget/checkout-public-host.component.js.map +1 -1
  14. package/dist/lib/checkout-widget/checkout-widget.component.d.ts +38 -2
  15. package/dist/lib/checkout-widget/checkout-widget.component.d.ts.map +1 -1
  16. package/dist/lib/checkout-widget/checkout-widget.component.js +313 -227
  17. package/dist/lib/checkout-widget/checkout-widget.component.js.map +1 -1
  18. package/dist/lib/custom/OrderHeader/order-header-form.component.d.ts.map +1 -1
  19. package/dist/lib/custom/OrderHeader/order-header-form.component.js +2 -1
  20. package/dist/lib/custom/OrderHeader/order-header-form.component.js.map +1 -1
  21. package/dist/lib/custom/OrderHeader/order-lines-editor.component.d.ts +14 -2
  22. package/dist/lib/custom/OrderHeader/order-lines-editor.component.d.ts.map +1 -1
  23. package/dist/lib/custom/OrderHeader/order-lines-editor.component.js +44 -6
  24. package/dist/lib/custom/OrderHeader/order-lines-editor.component.js.map +1 -1
  25. package/dist/lib/custom/OrderHeader/picker-scroll.d.ts +12 -0
  26. package/dist/lib/custom/OrderHeader/picker-scroll.d.ts.map +1 -0
  27. package/dist/lib/custom/OrderHeader/picker-scroll.js +15 -0
  28. package/dist/lib/custom/OrderHeader/picker-scroll.js.map +1 -0
  29. package/dist/lib/custom/PaymentHeader/payment-header-form.component.d.ts +11 -0
  30. package/dist/lib/custom/PaymentHeader/payment-header-form.component.d.ts.map +1 -1
  31. package/dist/lib/custom/PaymentHeader/payment-header-form.component.js +363 -297
  32. package/dist/lib/custom/PaymentHeader/payment-header-form.component.js.map +1 -1
  33. package/dist/lib/data/orders-grid-state.d.ts +2 -1
  34. package/dist/lib/data/orders-grid-state.d.ts.map +1 -1
  35. package/dist/lib/data/orders-grid-state.js +2 -1
  36. package/dist/lib/data/orders-grid-state.js.map +1 -1
  37. package/dist/lib/data/orders-queries.d.ts +17 -4
  38. package/dist/lib/data/orders-queries.d.ts.map +1 -1
  39. package/dist/lib/data/orders-queries.js +30 -6
  40. package/dist/lib/data/orders-queries.js.map +1 -1
  41. package/dist/lib/form-panels/document-overviews.panels.js +1 -1
  42. package/dist/lib/form-panels/document-overviews.panels.js.map +1 -1
  43. package/dist/lib/form-panels/external-invoices.panel.js +3 -3
  44. package/dist/lib/form-panels/external-invoices.panel.js.map +1 -1
  45. package/dist/lib/form-panels/organization-orders.panel.d.ts +8 -1
  46. package/dist/lib/form-panels/organization-orders.panel.d.ts.map +1 -1
  47. package/dist/lib/form-panels/organization-orders.panel.js +29 -5
  48. package/dist/lib/form-panels/organization-orders.panel.js.map +1 -1
  49. package/dist/lib/form-panels/person-orders.panel.d.ts +8 -1
  50. package/dist/lib/form-panels/person-orders.panel.d.ts.map +1 -1
  51. package/dist/lib/form-panels/person-orders.panel.js +29 -5
  52. package/dist/lib/form-panels/person-orders.panel.js.map +1 -1
  53. package/dist/lib/generated/Entities/mjBizAppsOrdersOrderHeader/mjbizappsordersorderheader.form.component.js +2 -2
  54. package/dist/lib/generated/Entities/mjBizAppsOrdersOrderHeader/mjbizappsordersorderheader.form.component.js.map +1 -1
  55. package/dist/lib/pages/orders/order-document.page.d.ts +13 -2
  56. package/dist/lib/pages/orders/order-document.page.d.ts.map +1 -1
  57. package/dist/lib/pages/orders/order-document.page.js +37 -6
  58. package/dist/lib/pages/orders/order-document.page.js.map +1 -1
  59. package/dist/lib/pages/orders/return.page.d.ts +9 -3
  60. package/dist/lib/pages/orders/return.page.d.ts.map +1 -1
  61. package/dist/lib/pages/orders/return.page.js +106 -83
  62. package/dist/lib/pages/orders/return.page.js.map +1 -1
  63. package/dist/lib/pages/payments/payments-dashboard.page.d.ts +11 -2
  64. package/dist/lib/pages/payments/payments-dashboard.page.d.ts.map +1 -1
  65. package/dist/lib/pages/payments/payments-dashboard.page.js +14 -12
  66. package/dist/lib/pages/payments/payments-dashboard.page.js.map +1 -1
  67. package/dist/lib/pages/payments/payments-list.page.d.ts +12 -3
  68. package/dist/lib/pages/payments/payments-list.page.d.ts.map +1 -1
  69. package/dist/lib/pages/payments/payments-list.page.js +15 -13
  70. package/dist/lib/pages/payments/payments-list.page.js.map +1 -1
  71. package/dist/lib/pages/receivables/billing.page.js +11 -11
  72. package/dist/lib/pages/receivables/billing.page.js.map +1 -1
  73. package/dist/lib/pages/receivables/external-invoicing-queue.page.js +1 -1
  74. package/dist/lib/pages/receivables/external-invoicing-queue.page.js.map +1 -1
  75. package/dist/lib/pages/receivables/progress.page.js +5 -5
  76. package/dist/lib/pages/receivables/subscriptions.page.d.ts +14 -3
  77. package/dist/lib/pages/receivables/subscriptions.page.d.ts.map +1 -1
  78. package/dist/lib/pages/receivables/subscriptions.page.js +17 -13
  79. package/dist/lib/pages/receivables/subscriptions.page.js.map +1 -1
  80. package/dist/lib/sections/section-nav.model.js +1 -1
  81. package/dist/lib/sections/section-nav.model.js.map +1 -1
  82. package/dist/lib/sections/section-shell.component.js +2 -2
  83. package/dist/lib/services/pricing-scheduler.service.d.ts +15 -1
  84. package/dist/lib/services/pricing-scheduler.service.d.ts.map +1 -1
  85. package/dist/lib/services/pricing-scheduler.service.js +31 -2
  86. package/dist/lib/services/pricing-scheduler.service.js.map +1 -1
  87. package/dist/lib/styles/orders-kit.css +21 -15
  88. 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", 26);
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 MJCheckoutWidgetComponent_Conditional_11_Template(rf, ctx) { if (rf & 1) {
51
- i0.ɵɵelementStart(0, "span", 9);
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 MJCheckoutWidgetComponent_Conditional_13_Template(rf, ctx) { if (rf & 1) {
56
- i0.ɵɵelementStart(0, "span", 11);
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 MJCheckoutWidgetComponent_Conditional_14_Template(rf, ctx) { if (rf & 1) {
61
- i0.ɵɵelementStart(0, "span", 12);
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 MJCheckoutWidgetComponent_Conditional_15_Template(rf, ctx) { if (rf & 1) {
78
+ function MJCheckoutWidgetComponent_Conditional_16_Template(rf, ctx) { if (rf & 1) {
70
79
  const _r2 = i0.ɵɵgetCurrentView();
71
- i0.ɵɵelementStart(0, "div", 13)(1, "label", 27);
80
+ i0.ɵɵelementStart(0, "div", 14)(1, "label", 28);
72
81
  i0.ɵɵtext(2, "Quantity");
73
82
  i0.ɵɵelementEnd();
74
- i0.ɵɵelementStart(3, "div", 28)(4, "button", 29);
75
- i0.ɵɵlistener("click", function MJCheckoutWidgetComponent_Conditional_15_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r2); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.onQuantityChange(ctx_r0.quantity() - 1)); });
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", 30);
79
- i0.ɵɵlistener("ngModelChange", function MJCheckoutWidgetComponent_Conditional_15_Template_input_ngModelChange_6_listener($event) { i0.ɵɵrestoreView(_r2); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.onQuantityChange($event)); });
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", 29);
82
- i0.ɵɵlistener("click", function MJCheckoutWidgetComponent_Conditional_15_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r2); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.onQuantityChange(ctx_r0.quantity() + 1)); });
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 MJCheckoutWidgetComponent_Conditional_17_For_4_Conditional_3_Template(rf, ctx) { if (rf & 1) {
95
- i0.ɵɵelementStart(0, "span", 19);
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 MJCheckoutWidgetComponent_Conditional_17_For_4_Case_4_Template(rf, ctx) { if (rf & 1) {
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", 37);
102
- i0.ɵɵlistener("ngModelChange", function MJCheckoutWidgetComponent_Conditional_17_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)); });
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 MJCheckoutWidgetComponent_Conditional_17_For_4_Case_5_For_4_Template(rf, ctx) { if (rf & 1) {
112
- i0.ɵɵelementStart(0, "option", 21);
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 MJCheckoutWidgetComponent_Conditional_17_For_4_Case_5_Template(rf, ctx) { if (rf & 1) {
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", 38);
124
- i0.ɵɵlistener("ngModelChange", function MJCheckoutWidgetComponent_Conditional_17_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)); });
125
- i0.ɵɵelementStart(1, "option", 21);
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, MJCheckoutWidgetComponent_Conditional_17_For_4_Case_5_For_4_Template, 2, 2, "option", 21, _forTrack3);
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 MJCheckoutWidgetComponent_Conditional_17_For_4_Case_6_Template(rf, ctx) { if (rf & 1) {
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", 34)(1, "input", 39);
145
- i0.ɵɵlistener("ngModelChange", function MJCheckoutWidgetComponent_Conditional_17_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)); });
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 MJCheckoutWidgetComponent_Conditional_17_For_4_Case_7_Template(rf, ctx) { if (rf & 1) {
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", 40);
162
- i0.ɵɵlistener("ngModelChange", function MJCheckoutWidgetComponent_Conditional_17_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)); });
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 MJCheckoutWidgetComponent_Conditional_17_For_4_Case_8_Template(rf, ctx) { if (rf & 1) {
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", 41);
173
- i0.ɵɵlistener("ngModelChange", function MJCheckoutWidgetComponent_Conditional_17_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)); });
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 MJCheckoutWidgetComponent_Conditional_17_For_4_Case_9_Conditional_1_Template(rf, ctx) { if (rf & 1) {
182
- i0.ɵɵelementStart(0, "p", 43);
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 MJCheckoutWidgetComponent_Conditional_17_For_4_Case_9_Template(rf, ctx) { if (rf & 1) {
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", 42);
189
- i0.ɵɵlistener("ngModelChange", function MJCheckoutWidgetComponent_Conditional_17_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)); });
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, MJCheckoutWidgetComponent_Conditional_17_For_4_Case_9_Conditional_1_Template, 2, 0, "p", 43);
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 MJCheckoutWidgetComponent_Conditional_17_For_4_Template(rf, ctx) { if (rf & 1) {
201
- i0.ɵɵelementStart(0, "div", 17)(1, "label", 18);
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, MJCheckoutWidgetComponent_Conditional_17_For_4_Conditional_3_Template, 2, 0, "span", 19);
212
+ i0.ɵɵconditionalCreate(3, MJCheckoutWidgetComponent_Conditional_18_For_4_Conditional_3_Template, 2, 0, "span", 20);
204
213
  i0.ɵɵelementEnd();
205
- i0.ɵɵconditionalCreate(4, MJCheckoutWidgetComponent_Conditional_17_For_4_Case_4_Template, 2, 3, "textarea", 32)(5, MJCheckoutWidgetComponent_Conditional_17_For_4_Case_5_Template, 5, 4, "select", 33)(6, MJCheckoutWidgetComponent_Conditional_17_For_4_Case_6_Template, 4, 2, "label", 34)(7, MJCheckoutWidgetComponent_Conditional_17_For_4_Case_7_Template, 1, 3, "input", 35)(8, MJCheckoutWidgetComponent_Conditional_17_For_4_Case_8_Template, 1, 2, "input", 36)(9, MJCheckoutWidgetComponent_Conditional_17_For_4_Case_9_Template, 2, 6);
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 MJCheckoutWidgetComponent_Conditional_17_Template(rf, ctx) { if (rf & 1) {
219
- i0.ɵɵelementStart(0, "h3", 15);
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", 16);
223
- i0.ɵɵrepeaterCreate(3, MJCheckoutWidgetComponent_Conditional_17_For_4_Template, 10, 5, "div", 31, _forTrack2);
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 MJCheckoutWidgetComponent_Conditional_18_For_7_For_5_Conditional_3_Template(rf, ctx) { if (rf & 1) {
231
- i0.ɵɵelementStart(0, "span", 19);
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 MJCheckoutWidgetComponent_Conditional_18_For_7_For_5_Case_4_Template(rf, ctx) { if (rf & 1) {
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", 37);
238
- i0.ɵɵlistener("ngModelChange", function MJCheckoutWidgetComponent_Conditional_18_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)); });
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 MJCheckoutWidgetComponent_Conditional_18_For_7_For_5_Case_5_For_4_Template(rf, ctx) { if (rf & 1) {
247
- i0.ɵɵelementStart(0, "option", 21);
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 MJCheckoutWidgetComponent_Conditional_18_For_7_For_5_Case_5_Template(rf, ctx) { if (rf & 1) {
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", 38);
259
- i0.ɵɵlistener("ngModelChange", function MJCheckoutWidgetComponent_Conditional_18_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)); });
260
- i0.ɵɵelementStart(1, "option", 21);
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, MJCheckoutWidgetComponent_Conditional_18_For_7_For_5_Case_5_For_4_Template, 2, 2, "option", 21, _forTrack3);
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 MJCheckoutWidgetComponent_Conditional_18_For_7_For_5_Case_6_Template(rf, ctx) { if (rf & 1) {
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", 34)(1, "input", 39);
279
- i0.ɵɵlistener("ngModelChange", function MJCheckoutWidgetComponent_Conditional_18_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)); });
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 MJCheckoutWidgetComponent_Conditional_18_For_7_For_5_Case_7_Template(rf, ctx) { if (rf & 1) {
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", 40);
295
- i0.ɵɵlistener("ngModelChange", function MJCheckoutWidgetComponent_Conditional_18_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)); });
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 MJCheckoutWidgetComponent_Conditional_18_For_7_For_5_Case_8_Template(rf, ctx) { if (rf & 1) {
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", 41);
305
- i0.ɵɵlistener("ngModelChange", function MJCheckoutWidgetComponent_Conditional_18_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)); });
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 MJCheckoutWidgetComponent_Conditional_18_For_7_For_5_Case_9_Conditional_1_Template(rf, ctx) { if (rf & 1) {
313
- i0.ɵɵelementStart(0, "p", 43);
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 MJCheckoutWidgetComponent_Conditional_18_For_7_For_5_Case_9_Template(rf, ctx) { if (rf & 1) {
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", 42);
320
- i0.ɵɵlistener("ngModelChange", function MJCheckoutWidgetComponent_Conditional_18_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)); });
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, MJCheckoutWidgetComponent_Conditional_18_For_7_For_5_Case_9_Conditional_1_Template, 2, 0, "p", 43);
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 MJCheckoutWidgetComponent_Conditional_18_For_7_For_5_Template(rf, ctx) { if (rf & 1) {
334
- i0.ɵɵelementStart(0, "div", 17)(1, "label", 18);
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, MJCheckoutWidgetComponent_Conditional_18_For_7_For_5_Conditional_3_Template, 2, 0, "span", 19);
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, MJCheckoutWidgetComponent_Conditional_18_For_7_For_5_Case_4_Template, 2, 3, "textarea", 32)(5, MJCheckoutWidgetComponent_Conditional_18_For_7_For_5_Case_5_Template, 5, 4, "select", 33)(6, MJCheckoutWidgetComponent_Conditional_18_For_7_For_5_Case_6_Template, 4, 2, "label", 34)(7, MJCheckoutWidgetComponent_Conditional_18_For_7_For_5_Case_7_Template, 1, 3, "input", 35)(8, MJCheckoutWidgetComponent_Conditional_18_For_7_For_5_Case_8_Template, 1, 2, "input", 36)(9, MJCheckoutWidgetComponent_Conditional_18_For_7_For_5_Case_9_Template, 2, 6);
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 MJCheckoutWidgetComponent_Conditional_18_For_7_Template(rf, ctx) { if (rf & 1) {
352
- i0.ɵɵelementStart(0, "div", 47)(1, "div", 48);
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", 16);
356
- i0.ɵɵrepeaterCreate(4, MJCheckoutWidgetComponent_Conditional_18_For_7_For_5_Template, 10, 5, "div", 31, _forTrack2);
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 MJCheckoutWidgetComponent_Conditional_18_Template(rf, ctx) { if (rf & 1) {
375
+ function MJCheckoutWidgetComponent_Conditional_19_Template(rf, ctx) { if (rf & 1) {
367
376
  const _r11 = i0.ɵɵgetCurrentView();
368
- i0.ɵɵelementStart(0, "div", 44)(1, "h3", 15);
377
+ i0.ɵɵelementStart(0, "div", 45)(1, "h3", 16);
369
378
  i0.ɵɵtext(2);
370
379
  i0.ɵɵelementEnd();
371
- i0.ɵɵelementStart(3, "button", 45);
372
- i0.ɵɵlistener("click", function MJCheckoutWidgetComponent_Conditional_18_Template_button_click_3_listener() { i0.ɵɵrestoreView(_r11); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.copyPrimaryToAll()); });
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", 46);
376
- i0.ɵɵrepeaterCreate(6, MJCheckoutWidgetComponent_Conditional_18_For_7_Template, 6, 1, "div", 47, i0.ɵɵrepeaterTrackByIndex);
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 MJCheckoutWidgetComponent_For_32_Template(rf, ctx) { if (rf & 1) {
386
- i0.ɵɵelementStart(0, "option", 21);
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 MJCheckoutWidgetComponent_Conditional_33_For_9_Template(rf, ctx) { if (rf & 1) {
396
- i0.ɵɵelementStart(0, "option", 21);
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 MJCheckoutWidgetComponent_Conditional_33_Template(rf, ctx) { if (rf & 1) {
414
+ function MJCheckoutWidgetComponent_Conditional_34_Template(rf, ctx) { if (rf & 1) {
406
415
  const _r25 = i0.ɵɵgetCurrentView();
407
- i0.ɵɵelementStart(0, "div", 17)(1, "label", 18);
416
+ i0.ɵɵelementStart(0, "div", 18)(1, "label", 19);
408
417
  i0.ɵɵtext(2, " State / Province ");
409
- i0.ɵɵelementStart(3, "span", 19);
418
+ i0.ɵɵelementStart(3, "span", 20);
410
419
  i0.ɵɵtext(4, "*");
411
420
  i0.ɵɵelementEnd()();
412
- i0.ɵɵelementStart(5, "select", 49);
413
- i0.ɵɵlistener("ngModelChange", function MJCheckoutWidgetComponent_Conditional_33_Template_select_ngModelChange_5_listener($event) { i0.ɵɵrestoreView(_r25); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.onBillingRegionChange($event)); });
414
- i0.ɵɵelementStart(6, "option", 21);
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, MJCheckoutWidgetComponent_Conditional_33_For_9_Template, 2, 2, "option", 21, _forTrack0);
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 MJCheckoutWidgetComponent_Conditional_37_Template(rf, ctx) { if (rf & 1) {
431
- i0.ɵɵelementStart(0, "span", 19);
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 MJCheckoutWidgetComponent_Conditional_39_For_5_Conditional_3_Template(rf, ctx) { if (rf & 1) {
436
- i0.ɵɵelementStart(0, "span", 19);
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 MJCheckoutWidgetComponent_Conditional_39_For_5_Conditional_4_For_4_Template(rf, ctx) { if (rf & 1) {
441
- i0.ɵɵelementStart(0, "option", 21);
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 MJCheckoutWidgetComponent_Conditional_39_For_5_Conditional_4_Conditional_5_Template(rf, ctx) { if (rf & 1) {
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", 54);
454
- i0.ɵɵlistener("ngModelChange", function MJCheckoutWidgetComponent_Conditional_39_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 })); });
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 MJCheckoutWidgetComponent_Conditional_39_For_5_Conditional_4_Template(rf, ctx) { if (rf & 1) {
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", 52);
465
- i0.ɵɵlistener("ngModelChange", function MJCheckoutWidgetComponent_Conditional_39_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 })); });
466
- i0.ɵɵelementStart(1, "option", 21);
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, MJCheckoutWidgetComponent_Conditional_39_For_5_Conditional_4_For_4_Template, 2, 2, "option", 21, _forTrack4, true);
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, MJCheckoutWidgetComponent_Conditional_39_For_5_Conditional_4_Conditional_5_Template, 1, 3, "input", 53);
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 MJCheckoutWidgetComponent_Conditional_39_For_5_Conditional_5_Template(rf, ctx) { if (rf & 1) {
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", 55);
486
- i0.ɵɵlistener("ngModelChange", function MJCheckoutWidgetComponent_Conditional_39_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 })); });
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 MJCheckoutWidgetComponent_Conditional_39_For_5_Template(rf, ctx) { if (rf & 1) {
495
- i0.ɵɵelementStart(0, "div", 50)(1, "label", 18);
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, MJCheckoutWidgetComponent_Conditional_39_For_5_Conditional_3_Template, 2, 0, "span", 19);
506
+ i0.ɵɵconditionalCreate(3, MJCheckoutWidgetComponent_Conditional_40_For_5_Conditional_3_Template, 2, 0, "span", 20);
498
507
  i0.ɵɵelementEnd();
499
- i0.ɵɵconditionalCreate(4, MJCheckoutWidgetComponent_Conditional_39_For_5_Conditional_4_Template, 6, 5)(5, MJCheckoutWidgetComponent_Conditional_39_For_5_Conditional_5_Template, 1, 4, "input", 51);
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 MJCheckoutWidgetComponent_Conditional_39_Template(rf, ctx) { if (rf & 1) {
514
- i0.ɵɵelementStart(0, "section", 14)(1, "h3", 15);
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", 16);
518
- i0.ɵɵrepeaterCreate(4, MJCheckoutWidgetComponent_Conditional_39_For_5_Template, 6, 4, "div", 50, _forTrack1);
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 MJCheckoutWidgetComponent_For_41_Conditional_6_Template(rf, ctx) { if (rf & 1) {
526
- i0.ɵɵelementStart(0, "span", 19);
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 MJCheckoutWidgetComponent_For_41_For_9_Template(rf, ctx) { if (rf & 1) {
539
+ function MJCheckoutWidgetComponent_For_42_For_9_Template(rf, ctx) { if (rf & 1) {
531
540
  const _r32 = i0.ɵɵgetCurrentView();
532
- i0.ɵɵelementStart(0, "label", 34)(1, "input", 60);
533
- i0.ɵɵlistener("change", function MJCheckoutWidgetComponent_For_41_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))); });
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 MJCheckoutWidgetComponent_For_41_Template(rf, ctx) { if (rf & 1) {
549
- i0.ɵɵelementStart(0, "section", 14)(1, "fieldset", 56)(2, "legend", 15);
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", 57);
560
+ i0.ɵɵelementStart(4, "span", 58);
552
561
  i0.ɵɵtext(5);
553
562
  i0.ɵɵelementEnd();
554
- i0.ɵɵconditionalCreate(6, MJCheckoutWidgetComponent_For_41_Conditional_6_Template, 2, 0, "span", 19);
563
+ i0.ɵɵconditionalCreate(6, MJCheckoutWidgetComponent_For_42_Conditional_6_Template, 2, 0, "span", 20);
555
564
  i0.ɵɵelementEnd();
556
- i0.ɵɵelementStart(7, "div", 58);
557
- i0.ɵɵrepeaterCreate(8, MJCheckoutWidgetComponent_For_41_For_9_Template, 4, 5, "label", 59, _forTrack5, true);
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 MJCheckoutWidgetComponent_Conditional_42_Conditional_10_Conditional_7_Template(rf, ctx) { if (rf & 1) {
572
- i0.ɵɵelementStart(0, "p", 76);
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 MJCheckoutWidgetComponent_Conditional_42_Conditional_10_Conditional_8_Template(rf, ctx) { if (rf & 1) {
581
- i0.ɵɵelementStart(0, "p", 77);
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 MJCheckoutWidgetComponent_Conditional_42_Conditional_10_Template(rf, ctx) { if (rf & 1) {
599
+ function MJCheckoutWidgetComponent_Conditional_43_Conditional_10_Template(rf, ctx) { if (rf & 1) {
591
600
  const _r35 = i0.ɵɵgetCurrentView();
592
- i0.ɵɵelementStart(0, "div", 66)(1, "label", 72);
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", 73)(4, "input", 74);
596
- i0.ɵɵlistener("input", function MJCheckoutWidgetComponent_Conditional_42_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_42_Conditional_10_Template_input_keydown_enter_4_listener() { i0.ɵɵrestoreView(_r35); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.applyPromotionCode()); });
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", 75);
599
- i0.ɵɵlistener("click", function MJCheckoutWidgetComponent_Conditional_42_Conditional_10_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r35); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.applyPromotionCode()); });
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, MJCheckoutWidgetComponent_Conditional_42_Conditional_10_Conditional_7_Template, 2, 1, "p", 76)(8, MJCheckoutWidgetComponent_Conditional_42_Conditional_10_Conditional_8_Template, 2, 3, "p", 77);
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 MJCheckoutWidgetComponent_Conditional_42_Conditional_11_Template(rf, ctx) { if (rf & 1) {
617
- i0.ɵɵelementStart(0, "p", 67);
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 MJCheckoutWidgetComponent_Conditional_42_Conditional_12_Template(rf, ctx) { if (rf & 1) {
635
+ function MJCheckoutWidgetComponent_Conditional_43_Conditional_12_Template(rf, ctx) { if (rf & 1) {
627
636
  const _r38 = i0.ɵɵgetCurrentView();
628
- i0.ɵɵelementStart(0, "label", 68)(1, "input", 60);
629
- i0.ɵɵlistener("change", function MJCheckoutWidgetComponent_Conditional_42_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)); });
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 MJCheckoutWidgetComponent_Conditional_42_Conditional_13_Template(rf, ctx) { if (rf & 1) {
642
- i0.ɵɵelementStart(0, "div", 69)(1, "span", 70);
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", 71);
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 MJCheckoutWidgetComponent_Conditional_42_Template(rf, ctx) { if (rf & 1) {
654
- i0.ɵɵelementStart(0, "section", 61)(1, "h3", 15);
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", 62);
658
- i0.ɵɵelement(4, "div", 63);
659
- i0.ɵɵelementStart(5, "div", 64)(6, "span", 65);
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, MJCheckoutWidgetComponent_Conditional_42_Conditional_10_Template, 9, 8, "div", 66);
666
- i0.ɵɵconditionalCreate(11, MJCheckoutWidgetComponent_Conditional_42_Conditional_11_Template, 2, 3, "p", 67);
667
- i0.ɵɵconditionalCreate(12, MJCheckoutWidgetComponent_Conditional_42_Conditional_12_Template, 4, 3, "label", 68);
668
- i0.ɵɵconditionalCreate(13, MJCheckoutWidgetComponent_Conditional_42_Conditional_13_Template, 5, 2, "div", 69);
669
- i0.ɵɵelementStart(14, "div", 69)(15, "span", 70);
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", 71);
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 MJCheckoutWidgetComponent_Conditional_45_Template(rf, ctx) { if (rf & 1) {
691
- i0.ɵɵelement(0, "span", 78);
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 MJCheckoutWidgetComponent_Conditional_46_Template(rf, ctx) { if (rf & 1) {
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 MJCheckoutWidgetComponent_Conditional_47_Template(rf, ctx) { if (rf & 1) {
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
- if (window.MJCheckoutHooks && typeof window.MJCheckoutHooks[hookName] === 'function') {
1084
- return window.MJCheckoutHooks[hookName](payload, { component: this, config: this.config });
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 !== 'firstName' && key !== 'lastName' && key !== 'email' && key !== 'FirstName' && key !== 'LastName' && key !== 'Email') {
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: 50, 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"], [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) {
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(6, "div", 5)(7, "div", 6)(8, "div", 7)(9, "span", 8);
1352
- i0.ɵɵtext(10);
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(11, MJCheckoutWidgetComponent_Conditional_11_Template, 2, 0, "span", 9);
1438
+ i0.ɵɵconditionalCreate(12, MJCheckoutWidgetComponent_Conditional_12_Template, 2, 0, "span", 10);
1355
1439
  i0.ɵɵelementEnd();
1356
- i0.ɵɵelementStart(12, "div", 10);
1357
- i0.ɵɵconditionalCreate(13, MJCheckoutWidgetComponent_Conditional_13_Template, 2, 0, "span", 11)(14, MJCheckoutWidgetComponent_Conditional_14_Template, 2, 2, "span", 12);
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(15, MJCheckoutWidgetComponent_Conditional_15_Template, 9, 4, "div", 13);
1443
+ i0.ɵɵconditionalCreate(16, MJCheckoutWidgetComponent_Conditional_16_Template, 9, 4, "div", 14);
1360
1444
  i0.ɵɵelementEnd();
1361
- i0.ɵɵelementStart(16, "section", 14);
1362
- i0.ɵɵconditionalCreate(17, MJCheckoutWidgetComponent_Conditional_17_Template, 5, 0)(18, MJCheckoutWidgetComponent_Conditional_18_Template, 8, 1);
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(19, "section", 14)(20, "h3", 15);
1365
- i0.ɵɵtext(21, "Billing Location");
1448
+ i0.ɵɵelementStart(20, "section", 15)(21, "h3", 16);
1449
+ i0.ɵɵtext(22, "Billing Location");
1366
1450
  i0.ɵɵelementEnd();
1367
- i0.ɵɵelementStart(22, "div", 16)(23, "div", 17)(24, "label", 18);
1368
- i0.ɵɵtext(25, " Country ");
1369
- i0.ɵɵelementStart(26, "span", 19);
1370
- i0.ɵɵtext(27, "*");
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(28, "select", 20);
1373
- i0.ɵɵlistener("ngModelChange", function MJCheckoutWidgetComponent_Template_select_ngModelChange_28_listener($event) { return ctx.onBillingCountryChange($event); });
1374
- i0.ɵɵelementStart(29, "option", 21);
1375
- i0.ɵɵtext(30, "Select country");
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(31, MJCheckoutWidgetComponent_For_32_Template, 2, 2, "option", 21, _forTrack0);
1461
+ i0.ɵɵrepeaterCreate(32, MJCheckoutWidgetComponent_For_33_Template, 2, 2, "option", 22, _forTrack0);
1378
1462
  i0.ɵɵelementEnd()();
1379
- i0.ɵɵconditionalCreate(33, MJCheckoutWidgetComponent_Conditional_33_Template, 10, 4, "div", 17);
1380
- i0.ɵɵelementStart(34, "div", 17)(35, "label", 18);
1381
- i0.ɵɵtext(36, " Postal Code ");
1382
- i0.ɵɵconditionalCreate(37, MJCheckoutWidgetComponent_Conditional_37_Template, 2, 0, "span", 19);
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(38, "input", 22);
1385
- i0.ɵɵlistener("ngModelChange", function MJCheckoutWidgetComponent_Template_input_ngModelChange_38_listener($event) { return ctx.onBillingPostalCodeChange($event); });
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(39, MJCheckoutWidgetComponent_Conditional_39_Template, 6, 0, "section", 14);
1388
- i0.ɵɵrepeaterCreate(40, MJCheckoutWidgetComponent_For_41_Template, 10, 3, "section", 14, _forTrack1);
1389
- i0.ɵɵconditionalCreate(42, MJCheckoutWidgetComponent_Conditional_42_Template, 19, 6);
1390
- i0.ɵɵelementStart(43, "div", 23)(44, "button", 24);
1391
- i0.ɵɵlistener("click", function MJCheckoutWidgetComponent_Template_button_click_44_listener() { return ctx.handleSubmit(); });
1392
- i0.ɵɵconditionalCreate(45, MJCheckoutWidgetComponent_Conditional_45_Template, 3, 0)(46, MJCheckoutWidgetComponent_Conditional_46_Template, 2, 0, "span")(47, MJCheckoutWidgetComponent_Conditional_47_Template, 2, 2, "span");
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(48, "button", 25);
1395
- i0.ɵɵlistener("click", function MJCheckoutWidgetComponent_Template_button_click_48_listener() { return ctx.cancelled.emit(); });
1396
- i0.ɵɵtext(49, " Cancel ");
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(5);
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() ? 11 : -1);
1499
+ i0.ɵɵconditional(ctx.isFree() ? 12 : -1);
1416
1500
  i0.ɵɵadvance(2);
1417
- i0.ɵɵconditional(ctx.isFree() ? 13 : 14);
1501
+ i0.ɵɵconditional(ctx.isFree() ? 14 : 15);
1418
1502
  i0.ɵɵadvance(2);
1419
- i0.ɵɵconditional((ctx.config == null ? null : ctx.config.allowQuantity) ? 15 : -1);
1503
+ i0.ɵɵconditional((ctx.config == null ? null : ctx.config.allowQuantity) ? 16 : -1);
1420
1504
  i0.ɵɵadvance(2);
1421
- i0.ɵɵconditional(ctx.isSingleUnit() ? 17 : 18);
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 ? 33 : -1);
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() ? 37 : -1);
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 ? 39 : -1);
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() ? 42 : -1);
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 ? 45 : ctx.isFree() ? 46 : 47);
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: 181 }); })();
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