@mj-biz-apps/orders-ng 5.29.0 → 5.31.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 (258) hide show
  1. package/README.md +43 -13
  2. package/dist/checkout-element/main.js +164 -40
  3. package/dist/lib/checkout-widget/checkout-public-host.component.d.ts +7 -0
  4. package/dist/lib/checkout-widget/checkout-public-host.component.d.ts.map +1 -1
  5. package/dist/lib/checkout-widget/checkout-public-host.component.js +62 -38
  6. package/dist/lib/checkout-widget/checkout-public-host.component.js.map +1 -1
  7. package/dist/lib/checkout-widget/checkout-turnstile.d.ts +62 -0
  8. package/dist/lib/checkout-widget/checkout-turnstile.d.ts.map +1 -0
  9. package/dist/lib/checkout-widget/checkout-turnstile.js +121 -0
  10. package/dist/lib/checkout-widget/checkout-turnstile.js.map +1 -0
  11. package/dist/lib/custom/EventOrderLine/line-event-summary.js +3 -3
  12. package/dist/lib/custom/EventOrderLine/line-event-summary.js.map +1 -1
  13. package/dist/lib/custom/OrderHeader/order-header-form.component.d.ts +11 -1
  14. package/dist/lib/custom/OrderHeader/order-header-form.component.d.ts.map +1 -1
  15. package/dist/lib/custom/OrderHeader/order-header-form.component.js +291 -244
  16. package/dist/lib/custom/OrderHeader/order-header-form.component.js.map +1 -1
  17. package/dist/lib/custom/OrderHeader/order-lines-editor.component.d.ts +5 -0
  18. package/dist/lib/custom/OrderHeader/order-lines-editor.component.d.ts.map +1 -1
  19. package/dist/lib/custom/OrderHeader/order-lines-editor.component.js +13 -7
  20. package/dist/lib/custom/OrderHeader/order-lines-editor.component.js.map +1 -1
  21. package/dist/lib/custom/Product/product-save-guard-form.component.d.ts +1 -2
  22. package/dist/lib/custom/Product/product-save-guard-form.component.d.ts.map +1 -1
  23. package/dist/lib/custom/Product/product-save-guard-form.component.js +70 -68
  24. package/dist/lib/custom/Product/product-save-guard-form.component.js.map +1 -1
  25. package/dist/lib/custom/Product/widgets/product-gl-links.component.d.ts +8 -2
  26. package/dist/lib/custom/Product/widgets/product-gl-links.component.d.ts.map +1 -1
  27. package/dist/lib/custom/Product/widgets/product-gl-links.component.js +9 -3
  28. package/dist/lib/custom/Product/widgets/product-gl-links.component.js.map +1 -1
  29. package/dist/lib/custom/Product/widgets/product-pricing-widget.component.d.ts +3 -0
  30. package/dist/lib/custom/Product/widgets/product-pricing-widget.component.d.ts.map +1 -1
  31. package/dist/lib/custom/Product/widgets/product-pricing-widget.component.js +9 -8
  32. package/dist/lib/custom/Product/widgets/product-pricing-widget.component.js.map +1 -1
  33. package/dist/lib/custom/custom-forms.module.d.ts +23 -28
  34. package/dist/lib/custom/custom-forms.module.d.ts.map +1 -1
  35. package/dist/lib/custom/custom-forms.module.js +2 -32
  36. package/dist/lib/custom/custom-forms.module.js.map +1 -1
  37. package/dist/lib/data/orders-queries.d.ts +5 -6
  38. package/dist/lib/data/orders-queries.d.ts.map +1 -1
  39. package/dist/lib/data/orders-queries.js +13 -26
  40. package/dist/lib/data/orders-queries.js.map +1 -1
  41. package/dist/lib/form-panels/catalog-overviews.panels.js +3 -3
  42. package/dist/lib/form-panels/catalog-overviews.panels.js.map +1 -1
  43. package/dist/lib/form-panels/commercial-overviews.panels.js +2 -2
  44. package/dist/lib/form-panels/commercial-overviews.panels.js.map +1 -1
  45. package/dist/lib/form-panels/document-form.helpers.d.ts +9 -0
  46. package/dist/lib/form-panels/document-form.helpers.d.ts.map +1 -1
  47. package/dist/lib/form-panels/document-form.helpers.js +21 -6
  48. package/dist/lib/form-panels/document-form.helpers.js.map +1 -1
  49. package/dist/lib/form-panels/document-overviews.panels.js +5 -5
  50. package/dist/lib/form-panels/document-overviews.panels.js.map +1 -1
  51. package/dist/lib/form-panels/external-invoices.panel.d.ts +1 -0
  52. package/dist/lib/form-panels/external-invoices.panel.d.ts.map +1 -1
  53. package/dist/lib/form-panels/external-invoices.panel.js +3 -2
  54. package/dist/lib/form-panels/external-invoices.panel.js.map +1 -1
  55. package/dist/lib/form-panels/order-access-overrides.panel.d.ts +27 -6
  56. package/dist/lib/form-panels/order-access-overrides.panel.d.ts.map +1 -1
  57. package/dist/lib/form-panels/order-access-overrides.panel.js +129 -23
  58. package/dist/lib/form-panels/order-access-overrides.panel.js.map +1 -1
  59. package/dist/lib/form-panels/party-order-stats.js +2 -2
  60. package/dist/lib/form-panels/party-order-stats.js.map +1 -1
  61. package/dist/lib/form-panels/promotion-header.panel.js +2 -2
  62. package/dist/lib/form-panels/promotion-header.panel.js.map +1 -1
  63. package/dist/lib/generated/Entities/mjBizAppsOrdersCheckoutSession/mjbizappsorderscheckoutsession.form.component.js +8 -10
  64. package/dist/lib/generated/Entities/mjBizAppsOrdersCheckoutSession/mjbizappsorderscheckoutsession.form.component.js.map +1 -1
  65. package/dist/lib/generated/Entities/mjBizAppsOrdersCheckoutSessionStep/mjbizappsorderscheckoutsessionstep.form.component.d.ts.map +1 -1
  66. package/dist/lib/generated/Entities/mjBizAppsOrdersCheckoutSessionStep/mjbizappsorderscheckoutsessionstep.form.component.js +22 -7
  67. package/dist/lib/generated/Entities/mjBizAppsOrdersCheckoutSessionStep/mjbizappsorderscheckoutsessionstep.form.component.js.map +1 -1
  68. package/dist/lib/generated/Entities/mjBizAppsOrdersDimensionDefault/mjbizappsordersdimensiondefault.form.component.d.ts.map +1 -1
  69. package/dist/lib/generated/Entities/mjBizAppsOrdersDimensionDefault/mjbizappsordersdimensiondefault.form.component.js +22 -7
  70. package/dist/lib/generated/Entities/mjBizAppsOrdersDimensionDefault/mjbizappsordersdimensiondefault.form.component.js.map +1 -1
  71. package/dist/lib/generated/Entities/mjBizAppsOrdersEntitlementAccessOverride/mjbizappsordersentitlementaccessoverride.form.component.d.ts.map +1 -1
  72. package/dist/lib/generated/Entities/mjBizAppsOrdersEntitlementAccessOverride/mjbizappsordersentitlementaccessoverride.form.component.js +28 -7
  73. package/dist/lib/generated/Entities/mjBizAppsOrdersEntitlementAccessOverride/mjbizappsordersentitlementaccessoverride.form.component.js.map +1 -1
  74. package/dist/lib/generated/Entities/mjBizAppsOrdersEntitlementGrant/mjbizappsordersentitlementgrant.form.component.js +9 -11
  75. package/dist/lib/generated/Entities/mjBizAppsOrdersEntitlementGrant/mjbizappsordersentitlementgrant.form.component.js.map +1 -1
  76. package/dist/lib/generated/Entities/mjBizAppsOrdersEventOrderLine/mjbizappsorderseventorderline.form.component.js +11 -13
  77. package/dist/lib/generated/Entities/mjBizAppsOrdersEventOrderLine/mjbizappsorderseventorderline.form.component.js.map +1 -1
  78. package/dist/lib/generated/Entities/mjBizAppsOrdersEventProduct/mjbizappsorderseventproduct.form.component.d.ts.map +1 -1
  79. package/dist/lib/generated/Entities/mjBizAppsOrdersEventProduct/mjbizappsorderseventproduct.form.component.js +10 -16
  80. package/dist/lib/generated/Entities/mjBizAppsOrdersEventProduct/mjbizappsorderseventproduct.form.component.js.map +1 -1
  81. package/dist/lib/generated/Entities/mjBizAppsOrdersExternalCustomer/mjbizappsordersexternalcustomer.form.component.d.ts.map +1 -1
  82. package/dist/lib/generated/Entities/mjBizAppsOrdersExternalCustomer/mjbizappsordersexternalcustomer.form.component.js +16 -7
  83. package/dist/lib/generated/Entities/mjBizAppsOrdersExternalCustomer/mjbizappsordersexternalcustomer.form.component.js.map +1 -1
  84. package/dist/lib/generated/Entities/mjBizAppsOrdersExternalInvoice/mjbizappsordersexternalinvoice.form.component.d.ts.map +1 -1
  85. package/dist/lib/generated/Entities/mjBizAppsOrdersExternalInvoice/mjbizappsordersexternalinvoice.form.component.js +28 -7
  86. package/dist/lib/generated/Entities/mjBizAppsOrdersExternalInvoice/mjbizappsordersexternalinvoice.form.component.js.map +1 -1
  87. package/dist/lib/generated/Entities/mjBizAppsOrdersExternalPayment/mjbizappsordersexternalpayment.form.component.d.ts.map +1 -1
  88. package/dist/lib/generated/Entities/mjBizAppsOrdersExternalPayment/mjbizappsordersexternalpayment.form.component.js +28 -7
  89. package/dist/lib/generated/Entities/mjBizAppsOrdersExternalPayment/mjbizappsordersexternalpayment.form.component.js.map +1 -1
  90. package/dist/lib/generated/Entities/mjBizAppsOrdersOrderCheckoutAnswer/mjbizappsordersordercheckoutanswer.form.component.d.ts.map +1 -1
  91. package/dist/lib/generated/Entities/mjBizAppsOrdersOrderCheckoutAnswer/mjbizappsordersordercheckoutanswer.form.component.js +16 -7
  92. package/dist/lib/generated/Entities/mjBizAppsOrdersOrderCheckoutAnswer/mjbizappsordersordercheckoutanswer.form.component.js.map +1 -1
  93. package/dist/lib/generated/Entities/mjBizAppsOrdersOrderCompanyPolicy/mjbizappsordersordercompanypolicy.form.component.d.ts.map +1 -1
  94. package/dist/lib/generated/Entities/mjBizAppsOrdersOrderCompanyPolicy/mjbizappsordersordercompanypolicy.form.component.js +8 -14
  95. package/dist/lib/generated/Entities/mjBizAppsOrdersOrderCompanyPolicy/mjbizappsordersordercompanypolicy.form.component.js.map +1 -1
  96. package/dist/lib/generated/Entities/mjBizAppsOrdersOrderConcession/mjbizappsordersorderconcession.form.component.d.ts.map +1 -1
  97. package/dist/lib/generated/Entities/mjBizAppsOrdersOrderConcession/mjbizappsordersorderconcession.form.component.js +28 -7
  98. package/dist/lib/generated/Entities/mjBizAppsOrdersOrderConcession/mjbizappsordersorderconcession.form.component.js.map +1 -1
  99. package/dist/lib/generated/Entities/mjBizAppsOrdersOrderHeaderPaymentSchedule/mjbizappsordersorderheaderpaymentschedule.form.component.d.ts.map +1 -1
  100. package/dist/lib/generated/Entities/mjBizAppsOrdersOrderHeaderPaymentSchedule/mjbizappsordersorderheaderpaymentschedule.form.component.js +39 -18
  101. package/dist/lib/generated/Entities/mjBizAppsOrdersOrderHeaderPaymentSchedule/mjbizappsordersorderheaderpaymentschedule.form.component.js.map +1 -1
  102. package/dist/lib/generated/Entities/mjBizAppsOrdersOrderLine/mjbizappsordersorderline.form.component.js +20 -22
  103. package/dist/lib/generated/Entities/mjBizAppsOrdersOrderLine/mjbizappsordersorderline.form.component.js.map +1 -1
  104. package/dist/lib/generated/Entities/mjBizAppsOrdersOrderLineChoice/mjbizappsordersorderlinechoice.form.component.d.ts.map +1 -1
  105. package/dist/lib/generated/Entities/mjBizAppsOrdersOrderLineChoice/mjbizappsordersorderlinechoice.form.component.js +16 -7
  106. package/dist/lib/generated/Entities/mjBizAppsOrdersOrderLineChoice/mjbizappsordersorderlinechoice.form.component.js.map +1 -1
  107. package/dist/lib/generated/Entities/mjBizAppsOrdersOrderLineProgressMeasurement/mjbizappsordersorderlineprogressmeasurement.form.component.d.ts.map +1 -1
  108. package/dist/lib/generated/Entities/mjBizAppsOrdersOrderLineProgressMeasurement/mjbizappsordersorderlineprogressmeasurement.form.component.js +28 -13
  109. package/dist/lib/generated/Entities/mjBizAppsOrdersOrderLineProgressMeasurement/mjbizappsordersorderlineprogressmeasurement.form.component.js.map +1 -1
  110. package/dist/lib/generated/Entities/mjBizAppsOrdersOutboundDelivery/mjbizappsordersoutbounddelivery.form.component.d.ts.map +1 -1
  111. package/dist/lib/generated/Entities/mjBizAppsOrdersOutboundDelivery/mjbizappsordersoutbounddelivery.form.component.js +22 -7
  112. package/dist/lib/generated/Entities/mjBizAppsOrdersOutboundDelivery/mjbizappsordersoutbounddelivery.form.component.js.map +1 -1
  113. package/dist/lib/generated/Entities/mjBizAppsOrdersOutboundEvent/mjbizappsordersoutboundevent.form.component.d.ts.map +1 -1
  114. package/dist/lib/generated/Entities/mjBizAppsOrdersOutboundEvent/mjbizappsordersoutboundevent.form.component.js +22 -13
  115. package/dist/lib/generated/Entities/mjBizAppsOrdersOutboundEvent/mjbizappsordersoutboundevent.form.component.js.map +1 -1
  116. package/dist/lib/generated/Entities/mjBizAppsOrdersPaymentHeader/mjbizappsorderspaymentheader.form.component.js +8 -10
  117. package/dist/lib/generated/Entities/mjBizAppsOrdersPaymentHeader/mjbizappsorderspaymentheader.form.component.js.map +1 -1
  118. package/dist/lib/generated/Entities/mjBizAppsOrdersPaymentIntent/mjbizappsorderspaymentintent.form.component.d.ts.map +1 -1
  119. package/dist/lib/generated/Entities/mjBizAppsOrdersPaymentIntent/mjbizappsorderspaymentintent.form.component.js +24 -6
  120. package/dist/lib/generated/Entities/mjBizAppsOrdersPaymentIntent/mjbizappsorderspaymentintent.form.component.js.map +1 -1
  121. package/dist/lib/generated/Entities/mjBizAppsOrdersPaymentLine/mjbizappsorderspaymentline.form.component.js +10 -12
  122. package/dist/lib/generated/Entities/mjBizAppsOrdersPaymentLine/mjbizappsorderspaymentline.form.component.js.map +1 -1
  123. package/dist/lib/generated/Entities/mjBizAppsOrdersPaymentProvider/mjbizappsorderspaymentprovider.form.component.d.ts.map +1 -1
  124. package/dist/lib/generated/Entities/mjBizAppsOrdersPaymentProvider/mjbizappsorderspaymentprovider.form.component.js +35 -19
  125. package/dist/lib/generated/Entities/mjBizAppsOrdersPaymentProvider/mjbizappsorderspaymentprovider.form.component.js.map +1 -1
  126. package/dist/lib/generated/Entities/mjBizAppsOrdersPaymentProviderSyncState/mjbizappsorderspaymentprovidersyncstate.form.component.d.ts.map +1 -1
  127. package/dist/lib/generated/Entities/mjBizAppsOrdersPaymentProviderSyncState/mjbizappsorderspaymentprovidersyncstate.form.component.js +16 -7
  128. package/dist/lib/generated/Entities/mjBizAppsOrdersPaymentProviderSyncState/mjbizappsorderspaymentprovidersyncstate.form.component.js.map +1 -1
  129. package/dist/lib/generated/Entities/mjBizAppsOrdersPaymentWebhookDelivery/mjbizappsorderspaymentwebhookdelivery.form.component.d.ts +10 -0
  130. package/dist/lib/generated/Entities/mjBizAppsOrdersPaymentWebhookDelivery/mjbizappsorderspaymentwebhookdelivery.form.component.d.ts.map +1 -0
  131. package/dist/lib/generated/Entities/mjBizAppsOrdersPaymentWebhookDelivery/mjbizappsorderspaymentwebhookdelivery.form.component.js +108 -0
  132. package/dist/lib/generated/Entities/mjBizAppsOrdersPaymentWebhookDelivery/mjbizappsorderspaymentwebhookdelivery.form.component.js.map +1 -0
  133. package/dist/lib/generated/Entities/mjBizAppsOrdersProduct/mjbizappsordersproduct.form.component.d.ts.map +1 -1
  134. package/dist/lib/generated/Entities/mjBizAppsOrdersProduct/mjbizappsordersproduct.form.component.js +69 -65
  135. package/dist/lib/generated/Entities/mjBizAppsOrdersProduct/mjbizappsordersproduct.form.component.js.map +1 -1
  136. package/dist/lib/generated/Entities/mjBizAppsOrdersProductCategory/mjbizappsordersproductcategory.form.component.d.ts.map +1 -1
  137. package/dist/lib/generated/Entities/mjBizAppsOrdersProductCategory/mjbizappsordersproductcategory.form.component.js +35 -41
  138. package/dist/lib/generated/Entities/mjBizAppsOrdersProductCategory/mjbizappsordersproductcategory.form.component.js.map +1 -1
  139. package/dist/lib/generated/Entities/mjBizAppsOrdersProductEntitlement/mjbizappsordersproductentitlement.form.component.d.ts.map +1 -1
  140. package/dist/lib/generated/Entities/mjBizAppsOrdersProductEntitlement/mjbizappsordersproductentitlement.form.component.js +17 -23
  141. package/dist/lib/generated/Entities/mjBizAppsOrdersProductEntitlement/mjbizappsordersproductentitlement.form.component.js.map +1 -1
  142. package/dist/lib/generated/Entities/mjBizAppsOrdersProductPrice/mjbizappsordersproductprice.form.component.js +18 -20
  143. package/dist/lib/generated/Entities/mjBizAppsOrdersProductPrice/mjbizappsordersproductprice.form.component.js.map +1 -1
  144. package/dist/lib/generated/Entities/mjBizAppsOrdersProductType/mjbizappsordersproducttype.form.component.d.ts.map +1 -1
  145. package/dist/lib/generated/Entities/mjBizAppsOrdersProductType/mjbizappsordersproducttype.form.component.js +14 -20
  146. package/dist/lib/generated/Entities/mjBizAppsOrdersProductType/mjbizappsordersproducttype.form.component.js.map +1 -1
  147. package/dist/lib/generated/Entities/mjBizAppsOrdersRevenueRecognitionType/mjbizappsordersrevenuerecognitiontype.form.component.d.ts.map +1 -1
  148. package/dist/lib/generated/Entities/mjBizAppsOrdersRevenueRecognitionType/mjbizappsordersrevenuerecognitiontype.form.component.js +26 -32
  149. package/dist/lib/generated/Entities/mjBizAppsOrdersRevenueRecognitionType/mjbizappsordersrevenuerecognitiontype.form.component.js.map +1 -1
  150. package/dist/lib/generated/Entities/mjBizAppsOrdersSalesAuthority/mjbizappsorderssalesauthority.form.component.d.ts.map +1 -1
  151. package/dist/lib/generated/Entities/mjBizAppsOrdersSalesAuthority/mjbizappsorderssalesauthority.form.component.js +19 -25
  152. package/dist/lib/generated/Entities/mjBizAppsOrdersSalesAuthority/mjbizappsorderssalesauthority.form.component.js.map +1 -1
  153. package/dist/lib/generated/Entities/mjBizAppsOrdersSubscription/mjbizappsorderssubscription.form.component.js +11 -14
  154. package/dist/lib/generated/Entities/mjBizAppsOrdersSubscription/mjbizappsorderssubscription.form.component.js.map +1 -1
  155. package/dist/lib/generated/Entities/mjBizAppsOrdersSubscriptionFamily/mjbizappsorderssubscriptionfamily.form.component.d.ts.map +1 -1
  156. package/dist/lib/generated/Entities/mjBizAppsOrdersSubscriptionFamily/mjbizappsorderssubscriptionfamily.form.component.js +22 -13
  157. package/dist/lib/generated/Entities/mjBizAppsOrdersSubscriptionFamily/mjbizappsorderssubscriptionfamily.form.component.js.map +1 -1
  158. package/dist/lib/generated/generated-forms.module.d.ts +7 -6
  159. package/dist/lib/generated/generated-forms.module.d.ts.map +1 -1
  160. package/dist/lib/generated/generated-forms.module.js +3 -0
  161. package/dist/lib/generated/generated-forms.module.js.map +1 -1
  162. package/dist/lib/pages/catalog/pricing.page.d.ts.map +1 -1
  163. package/dist/lib/pages/catalog/pricing.page.js +5 -3
  164. package/dist/lib/pages/catalog/pricing.page.js.map +1 -1
  165. package/dist/lib/pages/catalog/products.page.d.ts +1 -0
  166. package/dist/lib/pages/catalog/products.page.d.ts.map +1 -1
  167. package/dist/lib/pages/catalog/products.page.js +8 -7
  168. package/dist/lib/pages/catalog/products.page.js.map +1 -1
  169. package/dist/lib/pages/orders/order-document.page.d.ts.map +1 -1
  170. package/dist/lib/pages/orders/order-document.page.js +2 -2
  171. package/dist/lib/pages/orders/order-document.page.js.map +1 -1
  172. package/dist/lib/pages/orders/orders-dashboard.page.d.ts.map +1 -1
  173. package/dist/lib/pages/orders/orders-dashboard.page.js +13 -11
  174. package/dist/lib/pages/orders/orders-dashboard.page.js.map +1 -1
  175. package/dist/lib/pages/payments/account-credit.page.d.ts +1 -0
  176. package/dist/lib/pages/payments/account-credit.page.d.ts.map +1 -1
  177. package/dist/lib/pages/payments/account-credit.page.js +5 -2
  178. package/dist/lib/pages/payments/account-credit.page.js.map +1 -1
  179. package/dist/lib/pages/receivables/customer-ar.page.d.ts +2 -1
  180. package/dist/lib/pages/receivables/customer-ar.page.d.ts.map +1 -1
  181. package/dist/lib/pages/receivables/customer-ar.page.js +6 -4
  182. package/dist/lib/pages/receivables/customer-ar.page.js.map +1 -1
  183. package/dist/lib/pages/receivables/external-invoicing-queue.page.d.ts +20 -2
  184. package/dist/lib/pages/receivables/external-invoicing-queue.page.d.ts.map +1 -1
  185. package/dist/lib/pages/receivables/external-invoicing-queue.page.js +84 -15
  186. package/dist/lib/pages/receivables/external-invoicing-queue.page.js.map +1 -1
  187. package/dist/lib/pages/receivables/overdue.page.d.ts.map +1 -1
  188. package/dist/lib/pages/receivables/overdue.page.js +3 -3
  189. package/dist/lib/pages/receivables/overdue.page.js.map +1 -1
  190. package/dist/lib/pages/receivables/subscriptions.page.d.ts +9 -11
  191. package/dist/lib/pages/receivables/subscriptions.page.d.ts.map +1 -1
  192. package/dist/lib/pages/receivables/subscriptions.page.js +14 -18
  193. package/dist/lib/pages/receivables/subscriptions.page.js.map +1 -1
  194. package/dist/lib/panels/allocation-grid.component.d.ts +2 -0
  195. package/dist/lib/panels/allocation-grid.component.d.ts.map +1 -1
  196. package/dist/lib/panels/allocation-grid.component.js +10 -3
  197. package/dist/lib/panels/allocation-grid.component.js.map +1 -1
  198. package/dist/lib/panels/allocation-math.d.ts +8 -0
  199. package/dist/lib/panels/allocation-math.d.ts.map +1 -1
  200. package/dist/lib/panels/allocation-math.js +11 -0
  201. package/dist/lib/panels/allocation-math.js.map +1 -1
  202. package/dist/lib/panels/legal-entity-hint.d.ts +9 -0
  203. package/dist/lib/panels/legal-entity-hint.d.ts.map +1 -0
  204. package/dist/lib/panels/legal-entity-hint.js +19 -0
  205. package/dist/lib/panels/legal-entity-hint.js.map +1 -0
  206. package/dist/lib/panels/money-format.d.ts +43 -15
  207. package/dist/lib/panels/money-format.d.ts.map +1 -1
  208. package/dist/lib/panels/money-format.js +85 -40
  209. package/dist/lib/panels/money-format.js.map +1 -1
  210. package/dist/lib/panels/party-orders-overview.component.d.ts.map +1 -1
  211. package/dist/lib/panels/party-orders-overview.component.js +16 -18
  212. package/dist/lib/panels/party-orders-overview.component.js.map +1 -1
  213. package/dist/lib/panels/status-stepper.component.d.ts +1 -1
  214. package/dist/public-api.d.ts +0 -5
  215. package/dist/public-api.d.ts.map +1 -1
  216. package/dist/public-api.js +0 -5
  217. package/dist/public-api.js.map +1 -1
  218. package/package.json +39 -24
  219. package/dist/lib/custom/PriceList/price-list-form.component.d.ts +0 -46
  220. package/dist/lib/custom/PriceList/price-list-form.component.d.ts.map +0 -1
  221. package/dist/lib/custom/PriceList/price-list-form.component.js +0 -363
  222. package/dist/lib/custom/PriceList/price-list-form.component.js.map +0 -1
  223. package/dist/lib/custom/Product/product-form.component.d.ts +0 -79
  224. package/dist/lib/custom/Product/product-form.component.d.ts.map +0 -1
  225. package/dist/lib/custom/Product/product-form.component.js +0 -651
  226. package/dist/lib/custom/Product/product-form.component.js.map +0 -1
  227. package/dist/lib/custom/Promotion/promotion-form.component.d.ts +0 -33
  228. package/dist/lib/custom/Promotion/promotion-form.component.d.ts.map +0 -1
  229. package/dist/lib/custom/Promotion/promotion-form.component.js +0 -350
  230. package/dist/lib/custom/Promotion/promotion-form.component.js.map +0 -1
  231. package/dist/lib/custom/Subscription/subscription-form.component.d.ts +0 -96
  232. package/dist/lib/custom/Subscription/subscription-form.component.d.ts.map +0 -1
  233. package/dist/lib/custom/Subscription/subscription-form.component.js +0 -885
  234. package/dist/lib/custom/Subscription/subscription-form.component.js.map +0 -1
  235. package/dist/lib/custom/SubscriptionTerm/subscription-term-form.component.d.ts +0 -60
  236. package/dist/lib/custom/SubscriptionTerm/subscription-term-form.component.d.ts.map +0 -1
  237. package/dist/lib/custom/SubscriptionTerm/subscription-term-form.component.js +0 -567
  238. package/dist/lib/custom/SubscriptionTerm/subscription-term-form.component.js.map +0 -1
  239. package/dist/lib/transfer-pending/workspace-tabs/workspace-card.component.d.ts +0 -55
  240. package/dist/lib/transfer-pending/workspace-tabs/workspace-card.component.d.ts.map +0 -1
  241. package/dist/lib/transfer-pending/workspace-tabs/workspace-card.component.js +0 -243
  242. package/dist/lib/transfer-pending/workspace-tabs/workspace-card.component.js.map +0 -1
  243. package/dist/lib/transfer-pending/workspace-tabs/workspace-tab-store.d.ts +0 -47
  244. package/dist/lib/transfer-pending/workspace-tabs/workspace-tab-store.d.ts.map +0 -1
  245. package/dist/lib/transfer-pending/workspace-tabs/workspace-tab-store.js +0 -112
  246. package/dist/lib/transfer-pending/workspace-tabs/workspace-tab-store.js.map +0 -1
  247. package/dist/lib/transfer-pending/workspace-tabs/workspace-tab-strip.component.d.ts +0 -36
  248. package/dist/lib/transfer-pending/workspace-tabs/workspace-tab-strip.component.d.ts.map +0 -1
  249. package/dist/lib/transfer-pending/workspace-tabs/workspace-tab-strip.component.js +0 -179
  250. package/dist/lib/transfer-pending/workspace-tabs/workspace-tab-strip.component.js.map +0 -1
  251. package/dist/lib/transfer-pending/workspace-tabs/workspace-tabs.types.d.ts +0 -36
  252. package/dist/lib/transfer-pending/workspace-tabs/workspace-tabs.types.d.ts.map +0 -1
  253. package/dist/lib/transfer-pending/workspace-tabs/workspace-tabs.types.js +0 -9
  254. package/dist/lib/transfer-pending/workspace-tabs/workspace-tabs.types.js.map +0 -1
  255. package/dist/lib/transfer-pending/workspace-tabs/workspace-tip.directive.d.ts +0 -35
  256. package/dist/lib/transfer-pending/workspace-tabs/workspace-tip.directive.d.ts.map +0 -1
  257. package/dist/lib/transfer-pending/workspace-tabs/workspace-tip.directive.js +0 -124
  258. package/dist/lib/transfer-pending/workspace-tabs/workspace-tip.directive.js.map +0 -1
package/README.md CHANGED
@@ -1,18 +1,44 @@
1
1
  # `@mj-biz-apps/orders-ng`
2
2
 
3
- **Angular components for BizApps Orders** — generated entity forms plus any hand-authored UI.
3
+ **Angular components for BizApps Orders** — the Orders application in MJ Explorer, its entity forms,
4
+ and the public checkout widget.
4
5
 
5
- ## Status: generated forms only
6
+ The rules for UI work here are in [`docs/ui-architecture.md`](../../docs/ui-architecture.md), and
7
+ they are binding: components bind to entities and remote operations directly, with no data-access
8
+ service layer.
6
9
 
7
- `src/lib/generated/` contains a CodeGen form component per entity, driven by the same metadata that
8
- produces the entity classes — including field descriptions lifted from the migration's extended
9
- properties. Do not edit them; see the Entities package README for the regeneration cycle.
10
+ ## Layout of `src/lib/`
10
11
 
11
- No bespoke components ship yet. The back-end engine came first by explicit sequencing: pricing,
12
- promotions, charges, tax, subscriptions, payments and the ledger are built and covered by 177
13
- integration checks, and the UX pass follows.
12
+ | Folder | What it holds |
13
+ |---|---|
14
+ | `generated/` | A CodeGen form per entity, driven by the same metadata that produces the entity classes, including field descriptions lifted from the migration's extended properties. Do not edit; see the Entities package README for the regeneration cycle. |
15
+ | `custom/` | Hand-written form components, one folder per entity. Four replace the generated form: `OrderHeader`, `PaymentHeader` and `EventOrderLine`, plus `Product` through `product-save-guard-form.component.ts`, each with `@RegisterClass` at an explicit priority; `custom-forms.module.ts` loads after the generated module. `Product/widgets/` holds the Product widgets the form panels mount. |
16
+ | `form-panels/` | Panels contributed to forms by entity (`@RegisterClassEx(BaseFormPanel, …)`), including the orders sections on bizapps-common's Person and Organization forms. |
17
+ | `sections/` | The four Explorer tabs (Orders, Payments, Receivables, Catalog) and the shell that gives each its left rail. Each registers under the `DriverClass` the Orders application's nav items name. |
18
+ | `pages/` | The screens inside those tabs, one folder per tab. |
19
+ | `panels/` | The shared panel library the screens are built from: worklist table, stat tile, money strip, status stepper, decomposition ladder and others. |
20
+ | `services/` | `MJOPricingScheduler`, which prices a draft as the user types, and save-error formatting. |
21
+ | `data/` | Entity names, the reads the list and detail screens make (`orders-queries.ts`), and grid view and column state. |
22
+ | `checkout-widget/` | The checkout widget and the public host page behind `GET /checkout/:slug`. |
23
+ | `styles/orders-kit.css` | This app's own component CSS, for classes MJ does not ship. The mockups import the same file. |
14
24
 
15
- ## When you do build UI here
25
+ `src/public-api.ts` loads the forms, form panels and sections so their decorators fire, and exports
26
+ the rest. `LoadBizAppsOrdersClient()` is the `startupExport` that `mj-app.json` names for MJExplorer.
27
+
28
+ ## Build
29
+
30
+ `pnpm run build` in this package, or the root build, runs:
31
+
32
+ 1. `ngc`, then `tsc-alias -f`, compiling into `dist/`.
33
+ 2. `build:styles` — copies `src/lib/styles/orders-kit.css` into `dist/lib/styles/`, because `ngc`
34
+ compiles TypeScript only. Exported as `@mj-biz-apps/orders-ng/styles/orders-kit.css`.
35
+ 3. `build:checkout-element` — `scripts/build-checkout-element.mjs` bundles the
36
+ `<mj-orders-checkout>` Angular Element into `dist/checkout-element/main.js` with esbuild and the
37
+ Angular linker, so the payment page needs no JIT and no `unsafe-eval`. Exported as
38
+ `@mj-biz-apps/orders-ng/checkout-element`; the checkout edge serves it at
39
+ `GET /checkout/element/main.js` for the `GET /checkout/:slug` page.
40
+
41
+ ## When you build UI here
16
42
 
17
43
  Three things this app's rules make non-optional:
18
44
 
@@ -28,8 +54,12 @@ that shows only the number is hiding the answer to the question the user is abou
28
54
  charges, tax, each with a running total and a link to what produced it. Any "why is this £847.32?"
29
55
  affordance should read that rather than recompute.
30
56
 
31
- ## Preview before you commit
57
+ ## Price through the engine, never beside it
32
58
 
33
- `Orders.PreviewPrice` runs the **real** pricing pipeline without writing. Use it for quotes and
34
- "what would this customer pay" screens rather than estimating client-side — a preview that diverges
35
- from the invoice is worse than no preview, because people trust it.
59
+ `OrderPricingService` is the pricing walk `Save()` runs, and it lives in
60
+ `@mj-biz-apps/orders-entities`, so a screen can run it too. `MJOPricingScheduler` prices a draft in
61
+ the browser when it can, and sends the whole order to `Orders.PriceOrder` when a pricing plugin or a
62
+ promotion code is involved; neither path writes anything. `Orders.PreviewPrice` answers for one
63
+ product — its unit price and how it resolved — not for what an order comes to. Do not estimate
64
+ client-side with arithmetic of your own: a preview that diverges from the invoice is worse than no
65
+ preview, because people trust it.
@@ -36953,8 +36953,8 @@ function CheckAnswersAgainstQuestions(questions, answers) {
36953
36953
  if (q.otherOptionKey !== void 0 && value === q.otherOptionKey) {
36954
36954
  if (!otherText)
36955
36955
  return refuse(`Please say more about your answer to "${q.label}".`);
36956
- if (otherText.length > MAX_CHECKOUT_ANSWER_LENGTH) {
36957
- return refuse(`The answer to "${q.label}" is too long (at most ${MAX_CHECKOUT_ANSWER_LENGTH} characters).`);
36956
+ if (otherText.length > CheckoutAnswerMaxLength(q)) {
36957
+ return refuse(`The answer to "${q.label}" is too long (at most ${CheckoutAnswerMaxLength(q)} characters).`);
36958
36958
  }
36959
36959
  recordedOther = otherText;
36960
36960
  }
@@ -39670,6 +39670,106 @@ function memberDiscountNotice(draft, alreadyShown) {
39670
39670
  return typedCodePriced ? `${message} Submit again to continue.` : `${message} Submit again to continue at the standard rate.`;
39671
39671
  }
39672
39672
 
39673
+ // dist/lib/checkout-widget/checkout-turnstile.js
39674
+ var TURNSTILE_SCRIPT_URL = "https://challenges.cloudflare.com/turnstile/v0/api.js?render=explicit";
39675
+ function TurnstileChallengeSiteKey(reply) {
39676
+ if (!reply || reply._httpStatus !== 403 || reply.TurnstileRequired !== true) {
39677
+ return null;
39678
+ }
39679
+ return typeof reply.TurnstileSiteKey === "string" && reply.TurnstileSiteKey ? reply.TurnstileSiteKey : null;
39680
+ }
39681
+ async function PostWithTurnstile(post, path, body, getToken, state) {
39682
+ const first = state.siteKey ? { ...body, turnstileToken: await getToken(state.siteKey) } : body;
39683
+ const reply = await post(path, first);
39684
+ const siteKey = TurnstileChallengeSiteKey(reply);
39685
+ if (!siteKey) {
39686
+ return reply;
39687
+ }
39688
+ state.siteKey = siteKey;
39689
+ return post(path, { ...body, turnstileToken: await getToken(siteKey) });
39690
+ }
39691
+ var TurnstileError = class extends Error {
39692
+ };
39693
+ var turnstileScript = null;
39694
+ function loadTurnstile() {
39695
+ if (window.turnstile) {
39696
+ return Promise.resolve(window.turnstile);
39697
+ }
39698
+ if (!turnstileScript) {
39699
+ turnstileScript = new Promise((resolve, reject) => {
39700
+ const s = document.createElement("script");
39701
+ s.src = TURNSTILE_SCRIPT_URL;
39702
+ s.onload = () => window.turnstile ? resolve(window.turnstile) : reject(new TurnstileError("Human verification did not load."));
39703
+ s.onerror = () => {
39704
+ turnstileScript = null;
39705
+ reject(new TurnstileError("Could not load human verification. Check your connection and try again."));
39706
+ };
39707
+ document.head.appendChild(s);
39708
+ });
39709
+ }
39710
+ return turnstileScript;
39711
+ }
39712
+ var TurnstileWidget = class {
39713
+ container;
39714
+ widgetId = null;
39715
+ siteKey = "";
39716
+ pending = null;
39717
+ constructor(container) {
39718
+ this.container = container;
39719
+ }
39720
+ async Token(siteKey) {
39721
+ const api = await loadTurnstile();
39722
+ const host = this.container();
39723
+ if (!host) {
39724
+ throw new TurnstileError("Could not show human verification.");
39725
+ }
39726
+ return new Promise((resolve, reject) => {
39727
+ this.pending?.reject(new TurnstileError("Human verification was restarted."));
39728
+ this.pending = { resolve, reject };
39729
+ if (this.widgetId !== null && this.siteKey === siteKey) {
39730
+ api.reset(this.widgetId);
39731
+ } else {
39732
+ if (this.widgetId !== null) {
39733
+ api.remove(this.widgetId);
39734
+ }
39735
+ this.siteKey = siteKey;
39736
+ this.widgetId = api.render(host, {
39737
+ sitekey: siteKey,
39738
+ execution: "execute",
39739
+ appearance: "interaction-only",
39740
+ callback: (token) => this.settle(token),
39741
+ "error-callback": () => {
39742
+ this.fail(new TurnstileError("Human verification failed. Please try again."));
39743
+ return true;
39744
+ }
39745
+ }) ?? null;
39746
+ }
39747
+ if (this.widgetId === null) {
39748
+ this.fail(new TurnstileError("Could not show human verification."));
39749
+ return;
39750
+ }
39751
+ api.execute(this.widgetId);
39752
+ });
39753
+ }
39754
+ Destroy() {
39755
+ if (this.widgetId !== null) {
39756
+ window.turnstile?.remove(this.widgetId);
39757
+ this.widgetId = null;
39758
+ }
39759
+ this.pending = null;
39760
+ }
39761
+ settle(token) {
39762
+ const pending = this.pending;
39763
+ this.pending = null;
39764
+ pending?.resolve(token);
39765
+ }
39766
+ fail(err) {
39767
+ const pending = this.pending;
39768
+ this.pending = null;
39769
+ pending?.reject(err);
39770
+ }
39771
+ };
39772
+
39673
39773
  // dist/lib/checkout-widget/checkout-public-host.component.js
39674
39774
  var _c0 = (a0) => [a0];
39675
39775
  function CheckoutPublicHostComponent_Conditional_1_Template(rf, ctx) {
@@ -39686,7 +39786,7 @@ function CheckoutPublicHostComponent_Conditional_1_Template(rf, ctx) {
39686
39786
  }
39687
39787
  function CheckoutPublicHostComponent_Conditional_2_Conditional_7_Template(rf, ctx) {
39688
39788
  if (rf & 1) {
39689
- \u0275\u0275elementStart(0, "p", 7);
39789
+ \u0275\u0275elementStart(0, "p", 8);
39690
39790
  \u0275\u0275text(1);
39691
39791
  \u0275\u0275elementEnd();
39692
39792
  }
@@ -39698,7 +39798,7 @@ function CheckoutPublicHostComponent_Conditional_2_Conditional_7_Template(rf, ct
39698
39798
  }
39699
39799
  function CheckoutPublicHostComponent_Conditional_2_Conditional_8_Template(rf, ctx) {
39700
39800
  if (rf & 1) {
39701
- \u0275\u0275elementStart(0, "p", 11);
39801
+ \u0275\u0275elementStart(0, "p", 12);
39702
39802
  \u0275\u0275text(1);
39703
39803
  \u0275\u0275elementEnd();
39704
39804
  }
@@ -39711,14 +39811,14 @@ function CheckoutPublicHostComponent_Conditional_2_Conditional_8_Template(rf, ct
39711
39811
  }
39712
39812
  function CheckoutPublicHostComponent_Conditional_2_Conditional_9_Template(rf, ctx) {
39713
39813
  if (rf & 1) {
39714
- \u0275\u0275elementStart(0, "p", 9);
39814
+ \u0275\u0275elementStart(0, "p", 10);
39715
39815
  \u0275\u0275text(1, "Setting up your account\u2026");
39716
39816
  \u0275\u0275elementEnd();
39717
39817
  }
39718
39818
  }
39719
39819
  function CheckoutPublicHostComponent_Conditional_2_Conditional_10_Conditional_3_Template(rf, ctx) {
39720
39820
  if (rf & 1) {
39721
- \u0275\u0275elementStart(0, "p", 14);
39821
+ \u0275\u0275elementStart(0, "p", 15);
39722
39822
  \u0275\u0275text(1);
39723
39823
  \u0275\u0275elementEnd();
39724
39824
  }
@@ -39730,7 +39830,7 @@ function CheckoutPublicHostComponent_Conditional_2_Conditional_10_Conditional_3_
39730
39830
  }
39731
39831
  function CheckoutPublicHostComponent_Conditional_2_Conditional_10_Conditional_10_Template(rf, ctx) {
39732
39832
  if (rf & 1) {
39733
- \u0275\u0275elementStart(0, "p", 19);
39833
+ \u0275\u0275elementStart(0, "p", 20);
39734
39834
  \u0275\u0275text(1);
39735
39835
  \u0275\u0275elementEnd();
39736
39836
  }
@@ -39743,42 +39843,42 @@ function CheckoutPublicHostComponent_Conditional_2_Conditional_10_Conditional_10
39743
39843
  function CheckoutPublicHostComponent_Conditional_2_Conditional_10_Template(rf, ctx) {
39744
39844
  if (rf & 1) {
39745
39845
  const _r2 = \u0275\u0275getCurrentView();
39746
- \u0275\u0275elementStart(0, "form", 12);
39846
+ \u0275\u0275elementStart(0, "form", 13);
39747
39847
  \u0275\u0275listener("submit", function CheckoutPublicHostComponent_Conditional_2_Conditional_10_Template_form_submit_0_listener($event) {
39748
39848
  \u0275\u0275restoreView(_r2);
39749
39849
  const ctx_r0 = \u0275\u0275nextContext(2);
39750
39850
  $event.preventDefault();
39751
39851
  return \u0275\u0275resetView(ctx_r0.submitPassword());
39752
39852
  });
39753
- \u0275\u0275elementStart(1, "h2", 13);
39853
+ \u0275\u0275elementStart(1, "h2", 14);
39754
39854
  \u0275\u0275text(2, "Set a password for your account");
39755
39855
  \u0275\u0275elementEnd();
39756
- \u0275\u0275conditionalCreate(3, CheckoutPublicHostComponent_Conditional_2_Conditional_10_Conditional_3_Template, 2, 1, "p", 14);
39757
- \u0275\u0275elementStart(4, "label", 15);
39856
+ \u0275\u0275conditionalCreate(3, CheckoutPublicHostComponent_Conditional_2_Conditional_10_Conditional_3_Template, 2, 1, "p", 15);
39857
+ \u0275\u0275elementStart(4, "label", 16);
39758
39858
  \u0275\u0275text(5, "Password");
39759
39859
  \u0275\u0275elementEnd();
39760
- \u0275\u0275elementStart(6, "input", 16);
39860
+ \u0275\u0275elementStart(6, "input", 17);
39761
39861
  \u0275\u0275listener("input", function CheckoutPublicHostComponent_Conditional_2_Conditional_10_Template_input_input_6_listener($event) {
39762
39862
  \u0275\u0275restoreView(_r2);
39763
39863
  const ctx_r0 = \u0275\u0275nextContext(2);
39764
39864
  return \u0275\u0275resetView(ctx_r0.password = $event.target.value);
39765
39865
  });
39766
39866
  \u0275\u0275elementEnd();
39767
- \u0275\u0275elementStart(7, "label", 17);
39867
+ \u0275\u0275elementStart(7, "label", 18);
39768
39868
  \u0275\u0275text(8, "Confirm password");
39769
39869
  \u0275\u0275elementEnd();
39770
- \u0275\u0275elementStart(9, "input", 18);
39870
+ \u0275\u0275elementStart(9, "input", 19);
39771
39871
  \u0275\u0275listener("input", function CheckoutPublicHostComponent_Conditional_2_Conditional_10_Template_input_input_9_listener($event) {
39772
39872
  \u0275\u0275restoreView(_r2);
39773
39873
  const ctx_r0 = \u0275\u0275nextContext(2);
39774
39874
  return \u0275\u0275resetView(ctx_r0.passwordConfirmation = $event.target.value);
39775
39875
  });
39776
39876
  \u0275\u0275elementEnd();
39777
- \u0275\u0275conditionalCreate(10, CheckoutPublicHostComponent_Conditional_2_Conditional_10_Conditional_10_Template, 2, 1, "p", 19);
39778
- \u0275\u0275elementStart(11, "button", 20);
39877
+ \u0275\u0275conditionalCreate(10, CheckoutPublicHostComponent_Conditional_2_Conditional_10_Conditional_10_Template, 2, 1, "p", 20);
39878
+ \u0275\u0275elementStart(11, "button", 21);
39779
39879
  \u0275\u0275text(12);
39780
39880
  \u0275\u0275elementEnd();
39781
- \u0275\u0275elementStart(13, "button", 21);
39881
+ \u0275\u0275elementStart(13, "button", 22);
39782
39882
  \u0275\u0275listener("click", function CheckoutPublicHostComponent_Conditional_2_Conditional_10_Template_button_click_13_listener() {
39783
39883
  \u0275\u0275restoreView(_r2);
39784
39884
  const ctx_r0 = \u0275\u0275nextContext(2);
@@ -39808,7 +39908,7 @@ function CheckoutPublicHostComponent_Conditional_2_Conditional_10_Template(rf, c
39808
39908
  function CheckoutPublicHostComponent_Conditional_2_Conditional_11_Conditional_2_Conditional_3_Template(rf, ctx) {
39809
39909
  if (rf & 1) {
39810
39910
  const _r4 = \u0275\u0275getCurrentView();
39811
- \u0275\u0275elementStart(0, "button", 25);
39911
+ \u0275\u0275elementStart(0, "button", 26);
39812
39912
  \u0275\u0275listener("click", function CheckoutPublicHostComponent_Conditional_2_Conditional_11_Conditional_2_Conditional_3_Template_button_click_0_listener() {
39813
39913
  \u0275\u0275restoreView(_r4);
39814
39914
  const ctx_r0 = \u0275\u0275nextContext(4);
@@ -39821,7 +39921,7 @@ function CheckoutPublicHostComponent_Conditional_2_Conditional_11_Conditional_2_
39821
39921
  function CheckoutPublicHostComponent_Conditional_2_Conditional_11_Conditional_2_Template(rf, ctx) {
39822
39922
  if (rf & 1) {
39823
39923
  const _r3 = \u0275\u0275getCurrentView();
39824
- \u0275\u0275elementStart(0, "div", 22)(1, "button", 23);
39924
+ \u0275\u0275elementStart(0, "div", 23)(1, "button", 24);
39825
39925
  \u0275\u0275listener("click", function CheckoutPublicHostComponent_Conditional_2_Conditional_11_Conditional_2_Template_button_click_1_listener() {
39826
39926
  \u0275\u0275restoreView(_r3);
39827
39927
  const ctx_r0 = \u0275\u0275nextContext(3);
@@ -39829,7 +39929,7 @@ function CheckoutPublicHostComponent_Conditional_2_Conditional_11_Conditional_2_
39829
39929
  });
39830
39930
  \u0275\u0275text(2, "Try again");
39831
39931
  \u0275\u0275elementEnd();
39832
- \u0275\u0275conditionalCreate(3, CheckoutPublicHostComponent_Conditional_2_Conditional_11_Conditional_2_Conditional_3_Template, 2, 0, "button", 24);
39932
+ \u0275\u0275conditionalCreate(3, CheckoutPublicHostComponent_Conditional_2_Conditional_11_Conditional_2_Conditional_3_Template, 2, 0, "button", 25);
39833
39933
  \u0275\u0275elementEnd();
39834
39934
  }
39835
39935
  if (rf & 2) {
@@ -39840,10 +39940,10 @@ function CheckoutPublicHostComponent_Conditional_2_Conditional_11_Conditional_2_
39840
39940
  }
39841
39941
  function CheckoutPublicHostComponent_Conditional_2_Conditional_11_Template(rf, ctx) {
39842
39942
  if (rf & 1) {
39843
- \u0275\u0275elementStart(0, "p", 9);
39943
+ \u0275\u0275elementStart(0, "p", 10);
39844
39944
  \u0275\u0275text(1);
39845
39945
  \u0275\u0275elementEnd();
39846
- \u0275\u0275conditionalCreate(2, CheckoutPublicHostComponent_Conditional_2_Conditional_11_Conditional_2_Template, 4, 1, "div", 22);
39946
+ \u0275\u0275conditionalCreate(2, CheckoutPublicHostComponent_Conditional_2_Conditional_11_Conditional_2_Template, 4, 1, "div", 23);
39847
39947
  }
39848
39948
  if (rf & 2) {
39849
39949
  const ctx_r0 = \u0275\u0275nextContext(2);
@@ -39855,18 +39955,18 @@ function CheckoutPublicHostComponent_Conditional_2_Conditional_11_Template(rf, c
39855
39955
  }
39856
39956
  function CheckoutPublicHostComponent_Conditional_2_Template(rf, ctx) {
39857
39957
  if (rf & 1) {
39858
- \u0275\u0275elementStart(0, "div", 2)(1, "div", 4);
39958
+ \u0275\u0275elementStart(0, "div", 2)(1, "div", 5);
39859
39959
  \u0275\u0275text(2, "\u2713");
39860
39960
  \u0275\u0275elementEnd();
39861
- \u0275\u0275elementStart(3, "h1", 5);
39961
+ \u0275\u0275elementStart(3, "h1", 6);
39862
39962
  \u0275\u0275text(4, "You're all set");
39863
39963
  \u0275\u0275elementEnd();
39864
- \u0275\u0275elementStart(5, "p", 6);
39964
+ \u0275\u0275elementStart(5, "p", 7);
39865
39965
  \u0275\u0275text(6);
39866
39966
  \u0275\u0275elementEnd();
39867
- \u0275\u0275conditionalCreate(7, CheckoutPublicHostComponent_Conditional_2_Conditional_7_Template, 2, 1, "p", 7);
39868
- \u0275\u0275conditionalCreate(8, CheckoutPublicHostComponent_Conditional_2_Conditional_8_Template, 2, 3, "p", 8);
39869
- \u0275\u0275conditionalCreate(9, CheckoutPublicHostComponent_Conditional_2_Conditional_9_Template, 2, 0, "p", 9)(10, CheckoutPublicHostComponent_Conditional_2_Conditional_10_Template, 15, 7, "form", 10)(11, CheckoutPublicHostComponent_Conditional_2_Conditional_11_Template, 3, 2);
39967
+ \u0275\u0275conditionalCreate(7, CheckoutPublicHostComponent_Conditional_2_Conditional_7_Template, 2, 1, "p", 8);
39968
+ \u0275\u0275conditionalCreate(8, CheckoutPublicHostComponent_Conditional_2_Conditional_8_Template, 2, 3, "p", 9);
39969
+ \u0275\u0275conditionalCreate(9, CheckoutPublicHostComponent_Conditional_2_Conditional_9_Template, 2, 0, "p", 10)(10, CheckoutPublicHostComponent_Conditional_2_Conditional_10_Template, 15, 7, "form", 11)(11, CheckoutPublicHostComponent_Conditional_2_Conditional_11_Template, 3, 2);
39870
39970
  \u0275\u0275elementEnd();
39871
39971
  }
39872
39972
  if (rf & 2) {
@@ -39891,7 +39991,7 @@ function CheckoutPublicHostComponent_Conditional_3_Template(rf, ctx) {
39891
39991
  function CheckoutPublicHostComponent_Conditional_4_For_1_Template(rf, ctx) {
39892
39992
  if (rf & 1) {
39893
39993
  const _r5 = \u0275\u0275getCurrentView();
39894
- \u0275\u0275elementStart(0, "mj-checkout-widget", 27);
39994
+ \u0275\u0275elementStart(0, "mj-checkout-widget", 28);
39895
39995
  \u0275\u0275listener("promotionCodeApplied", function CheckoutPublicHostComponent_Conditional_4_For_1_Template_mj_checkout_widget_promotionCodeApplied_0_listener($event) {
39896
39996
  \u0275\u0275restoreView(_r5);
39897
39997
  const ctx_r0 = \u0275\u0275nextContext(2);
@@ -39918,7 +40018,7 @@ function CheckoutPublicHostComponent_Conditional_4_For_1_Template(rf, ctx) {
39918
40018
  }
39919
40019
  function CheckoutPublicHostComponent_Conditional_4_Template(rf, ctx) {
39920
40020
  if (rf & 1) {
39921
- \u0275\u0275repeaterCreate(0, CheckoutPublicHostComponent_Conditional_4_For_1_Template, 1, 13, "mj-checkout-widget", 26, \u0275\u0275repeaterTrackByIdentity);
40021
+ \u0275\u0275repeaterCreate(0, CheckoutPublicHostComponent_Conditional_4_For_1_Template, 1, 13, "mj-checkout-widget", 27, \u0275\u0275repeaterTrackByIdentity);
39922
40022
  }
39923
40023
  if (rf & 2) {
39924
40024
  const ctx_r0 = \u0275\u0275nextContext();
@@ -39984,6 +40084,9 @@ var CheckoutPublicHostComponent = class _CheckoutPublicHostComponent {
39984
40084
  return AccessMessage(this.accessState, this.config?.accessMessages);
39985
40085
  }
39986
40086
  stripe = null;
40087
+ /** Turnstile for a widget that sets `requireTurnstile` (#592); idle until the edge asks for it. */
40088
+ turnstile = new TurnstileWidget(() => this.turnstileContainer());
40089
+ turnstileState = { siteKey: null };
39987
40090
  card = null;
39988
40091
  cardMounted = false;
39989
40092
  destroyed = false;
@@ -40016,7 +40119,7 @@ var CheckoutPublicHostComponent = class _CheckoutPublicHostComponent {
40016
40119
  }
40017
40120
  this.setState("LOADING");
40018
40121
  try {
40019
- const init = await this.post("/initialize", {
40122
+ const init = await this.postGated("/initialize", {
40020
40123
  slug: this.slug,
40021
40124
  clientSessionKey: this.sessionKey
40022
40125
  });
@@ -40038,8 +40141,8 @@ var CheckoutPublicHostComponent = class _CheckoutPublicHostComponent {
40038
40141
  }
40039
40142
  this.config = cfg;
40040
40143
  this.setState("CHECKOUT");
40041
- } catch {
40042
- this.loadError = "Checkout is temporarily unavailable. Please try again.";
40144
+ } catch (err) {
40145
+ this.loadError = err instanceof TurnstileError ? err.message : "Checkout is temporarily unavailable. Please try again.";
40043
40146
  } finally {
40044
40147
  if (this.loadError)
40045
40148
  this.reportError(this.loadError);
@@ -40061,6 +40164,7 @@ var CheckoutPublicHostComponent = class _CheckoutPublicHostComponent {
40061
40164
  }
40062
40165
  ngOnDestroy() {
40063
40166
  this.destroyed = true;
40167
+ this.turnstile.Destroy();
40064
40168
  this.hostEl?.nativeElement?.removeEventListener?.(CHECKOUT_RESET_REQUEST_EVENT, this.onResetRequested);
40065
40169
  try {
40066
40170
  this.card?.unmount?.();
@@ -40317,7 +40421,7 @@ var CheckoutPublicHostComponent = class _CheckoutPublicHostComponent {
40317
40421
  }
40318
40422
  async finish() {
40319
40423
  this.rememberCompleting(this.sessionId);
40320
- const done = await this.post("/complete", {
40424
+ const done = await this.postGated("/complete", {
40321
40425
  sessionId: this.sessionId,
40322
40426
  clientSessionKey: this.sessionKey
40323
40427
  });
@@ -40333,8 +40437,7 @@ var CheckoutPublicHostComponent = class _CheckoutPublicHostComponent {
40333
40437
  productId: this.config?.productId,
40334
40438
  totalGross: done.TotalGross,
40335
40439
  currency: this.config?.currency,
40336
- // The applied promotion code, once the checkout takes one.
40337
- coupon: null
40440
+ coupon: this.appliedPromotion?.code ?? null
40338
40441
  }));
40339
40442
  this.cdr.detectChanges();
40340
40443
  const access = this.trackAccess();
@@ -40658,23 +40761,43 @@ var CheckoutPublicHostComponent = class _CheckoutPublicHostComponent {
40658
40761
  json._httpStatus = res.status;
40659
40762
  return json;
40660
40763
  }
40764
+ /** `/initialize` and `/complete`: sends a Turnstile token when the widget requires one. */
40765
+ postGated(path, body) {
40766
+ return PostWithTurnstile((p, b) => this.post(p, b), path, body, (siteKey) => this.turnstile.Token(siteKey), this.turnstileState);
40767
+ }
40768
+ /** Where Turnstile renders: outside the template's state branches, so it survives every redraw. */
40769
+ turnstileContainer() {
40770
+ const el = this.hostEl?.nativeElement;
40771
+ if (!el) {
40772
+ return null;
40773
+ }
40774
+ const existing = el.querySelector(".mj-checkout-public__turnstile");
40775
+ if (existing) {
40776
+ return existing;
40777
+ }
40778
+ const created = document.createElement("div");
40779
+ created.className = "mj-checkout-public__turnstile";
40780
+ el.appendChild(created);
40781
+ return created;
40782
+ }
40661
40783
  str(value, fallback = "") {
40662
40784
  return typeof value === "string" && value ? value : fallback;
40663
40785
  }
40664
40786
  static \u0275fac = function CheckoutPublicHostComponent_Factory(__ngFactoryType__) {
40665
40787
  return new (__ngFactoryType__ || _CheckoutPublicHostComponent)();
40666
40788
  };
40667
- static \u0275cmp = /* @__PURE__ */ \u0275\u0275defineComponent({ type: _CheckoutPublicHostComponent, selectors: [["mj-orders-checkout"]], inputs: { slug: "slug", apiRoot: "apiRoot", memberToken: "memberToken" }, outputs: { alreadySubscribed: "checkout-already-subscribed" }, decls: 5, vars: 1, consts: [[1, "mj-checkout-public"], ["role", "alert", 1, "mj-widget-error-banner"], ["role", "status", 1, "mj-checkout-success"], ["role", "status", 1, "mj-checkout-public__status"], ["aria-hidden", "true", 1, "mj-checkout-success__icon"], [1, "mj-checkout-success__title"], [1, "mj-checkout-success__msg"], [1, "mj-checkout-success__order"], ["role", "status", 1, "mj-checkout-success__access", 3, "is-failed"], ["role", "status", 1, "mj-checkout-account__msg"], [1, "mj-checkout-account"], ["role", "status", 1, "mj-checkout-success__access"], [1, "mj-checkout-account", 3, "submit"], [1, "mj-checkout-account__title"], [1, "mj-checkout-account__note"], ["for", "mj-checkout-password", 1, "mj-checkout-account__label"], ["id", "mj-checkout-password", "type", "password", "autocomplete", "new-password", 1, "mj-checkout-account__input", 3, "input", "value"], ["for", "mj-checkout-password-confirm", 1, "mj-checkout-account__label"], ["id", "mj-checkout-password-confirm", "type", "password", "autocomplete", "new-password", 1, "mj-checkout-account__input", 3, "input", "value"], ["role", "alert", 1, "mj-checkout-account__error"], ["type", "submit", 1, "mj-checkout-account__submit", 3, "disabled"], ["type", "button", 1, "mj-checkout-account__skip", 3, "click", "disabled"], [1, "mj-checkout-account", "mj-checkout-account--actions"], ["type", "button", 1, "mj-checkout-account__submit", 3, "click"], ["type", "button", 1, "mj-checkout-account__skip"], ["type", "button", 1, "mj-checkout-account__skip", 3, "click"], [3, "config", "distributionSlug", "sessionKey", "isProcessing", "isPaymentReady", "stripePaymentMethodId", "prefillEmail", "errorMessage", "appliedPromotion", "serverPricedTotal", "promotionError", "quotedTotal", "quotedTax"], [3, "promotionCodeApplied", "submitted", "cancelled", "quoteInvalidated", "config", "distributionSlug", "sessionKey", "isProcessing", "isPaymentReady", "stripePaymentMethodId", "prefillEmail", "errorMessage", "appliedPromotion", "serverPricedTotal", "promotionError", "quotedTotal", "quotedTax"]], template: function CheckoutPublicHostComponent_Template(rf, ctx) {
40789
+ static \u0275cmp = /* @__PURE__ */ \u0275\u0275defineComponent({ type: _CheckoutPublicHostComponent, selectors: [["mj-orders-checkout"]], inputs: { slug: "slug", apiRoot: "apiRoot", memberToken: "memberToken" }, outputs: { alreadySubscribed: "checkout-already-subscribed" }, decls: 6, vars: 1, consts: [[1, "mj-checkout-public"], ["role", "alert", 1, "mj-widget-error-banner"], ["role", "status", 1, "mj-checkout-success"], ["role", "status", 1, "mj-checkout-public__status"], [1, "mj-checkout-public__turnstile"], ["aria-hidden", "true", 1, "mj-checkout-success__icon"], [1, "mj-checkout-success__title"], [1, "mj-checkout-success__msg"], [1, "mj-checkout-success__order"], ["role", "status", 1, "mj-checkout-success__access", 3, "is-failed"], ["role", "status", 1, "mj-checkout-account__msg"], [1, "mj-checkout-account"], ["role", "status", 1, "mj-checkout-success__access"], [1, "mj-checkout-account", 3, "submit"], [1, "mj-checkout-account__title"], [1, "mj-checkout-account__note"], ["for", "mj-checkout-password", 1, "mj-checkout-account__label"], ["id", "mj-checkout-password", "type", "password", "autocomplete", "new-password", 1, "mj-checkout-account__input", 3, "input", "value"], ["for", "mj-checkout-password-confirm", 1, "mj-checkout-account__label"], ["id", "mj-checkout-password-confirm", "type", "password", "autocomplete", "new-password", 1, "mj-checkout-account__input", 3, "input", "value"], ["role", "alert", 1, "mj-checkout-account__error"], ["type", "submit", 1, "mj-checkout-account__submit", 3, "disabled"], ["type", "button", 1, "mj-checkout-account__skip", 3, "click", "disabled"], [1, "mj-checkout-account", "mj-checkout-account--actions"], ["type", "button", 1, "mj-checkout-account__submit", 3, "click"], ["type", "button", 1, "mj-checkout-account__skip"], ["type", "button", 1, "mj-checkout-account__skip", 3, "click"], [3, "config", "distributionSlug", "sessionKey", "isProcessing", "isPaymentReady", "stripePaymentMethodId", "prefillEmail", "errorMessage", "appliedPromotion", "serverPricedTotal", "promotionError", "quotedTotal", "quotedTax"], [3, "promotionCodeApplied", "submitted", "cancelled", "quoteInvalidated", "config", "distributionSlug", "sessionKey", "isProcessing", "isPaymentReady", "stripePaymentMethodId", "prefillEmail", "errorMessage", "appliedPromotion", "serverPricedTotal", "promotionError", "quotedTotal", "quotedTax"]], template: function CheckoutPublicHostComponent_Template(rf, ctx) {
40668
40790
  if (rf & 1) {
40669
40791
  \u0275\u0275elementStart(0, "div", 0);
40670
40792
  \u0275\u0275conditionalCreate(1, CheckoutPublicHostComponent_Conditional_1_Template, 2, 1, "div", 1)(2, CheckoutPublicHostComponent_Conditional_2_Template, 12, 4, "div", 2)(3, CheckoutPublicHostComponent_Conditional_3_Template, 2, 0, "p", 3)(4, CheckoutPublicHostComponent_Conditional_4_Template, 2, 2);
40793
+ \u0275\u0275element(5, "div", 4);
40671
40794
  \u0275\u0275elementEnd();
40672
40795
  }
40673
40796
  if (rf & 2) {
40674
40797
  \u0275\u0275advance();
40675
40798
  \u0275\u0275conditional(ctx.loadError ? 1 : ctx.successMessage ? 2 : !ctx.config ? 3 : 4);
40676
40799
  }
40677
- }, dependencies: [CommonModule, MJCheckoutWidgetComponent], styles: ["[_nghost-%COMP%] {\n display: block;\n}\n\n.mj-checkout-public[_ngcontent-%COMP%] {\n max-width: 580px;\n margin: 0 auto;\n}\n\n.mj-checkout-public__status[_ngcontent-%COMP%] {\n text-align: center;\n color: #64748b;\n font-size: 0.95rem;\n padding: 2rem 0;\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 font-size: 0.875rem;\n}\n\n.mj-checkout-success[_ngcontent-%COMP%] {\n text-align: center;\n background: #ffffff;\n border: 1px solid #e2e8f0;\n border-radius: 10px;\n padding: 2rem 1.5rem;\n box-shadow: 0 10px 25px -5px rgba(0, 0, 0, 0.05);\n}\n\n.mj-checkout-success__icon[_ngcontent-%COMP%] {\n width: 3rem;\n height: 3rem;\n margin: 0 auto 1rem;\n border-radius: 50%;\n background: #dcfce7;\n color: #16a34a;\n font-size: 1.5rem;\n font-weight: 700;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.mj-checkout-success__title[_ngcontent-%COMP%] {\n margin: 0 0 0.5rem;\n font-size: 1.5rem;\n font-weight: 800;\n color: #0f172a;\n}\n\n.mj-checkout-success__msg[_ngcontent-%COMP%], \n.mj-checkout-success__order[_ngcontent-%COMP%] {\n margin: 0;\n color: #64748b;\n font-size: 0.95rem;\n line-height: 1.5;\n}\n\n.mj-checkout-success__order[_ngcontent-%COMP%] {\n margin-top: 0.75rem;\n font-weight: 600;\n color: #334155;\n}\n\n\n\n.mj-checkout-success__access[_ngcontent-%COMP%] {\n margin: 0.75rem 0 0;\n color: #334155;\n font-size: 0.95rem;\n}\n\n.mj-checkout-success__access.is-failed[_ngcontent-%COMP%] {\n color: #991b1b;\n}\n\n\n\n.mj-checkout-account[_ngcontent-%COMP%] {\n margin: 1.5rem auto 0;\n max-width: 320px;\n text-align: left;\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n.mj-checkout-account__title[_ngcontent-%COMP%] {\n margin: 0 0 0.5rem;\n font-size: 1.05rem;\n font-weight: 700;\n color: #0f172a;\n text-align: center;\n}\n\n.mj-checkout-account__label[_ngcontent-%COMP%] {\n font-size: 0.85rem;\n font-weight: 600;\n color: #334155;\n}\n\n.mj-checkout-account__input[_ngcontent-%COMP%] {\n padding: 8px 10px;\n border: 1px solid #cbd5e1;\n border-radius: 6px;\n font-size: 0.95rem;\n font-family: inherit;\n}\n\n.mj-checkout-account__input[_ngcontent-%COMP%]:focus {\n outline: none;\n border-color: var(--mj-primary-color, #2563eb);\n box-shadow: 0 0 0 2px rgba(37, 99, 235, 0.15);\n}\n\n.mj-checkout-account__error[_ngcontent-%COMP%] {\n margin: 4px 0 0;\n color: #991b1b;\n font-size: 0.85rem;\n}\n\n.mj-checkout-account__submit[_ngcontent-%COMP%] {\n margin-top: 10px;\n padding: 10px;\n border: 0;\n border-radius: 6px;\n background: var(--mj-primary-color, #2563eb);\n color: #ffffff;\n font-weight: 600;\n cursor: pointer;\n}\n\n.mj-checkout-account__skip[_ngcontent-%COMP%] {\n padding: 6px;\n border: 0;\n background: none;\n color: #64748b;\n font-size: 0.85rem;\n cursor: pointer;\n}\n\n.mj-checkout-account__submit[_ngcontent-%COMP%]:disabled, \n.mj-checkout-account__skip[_ngcontent-%COMP%]:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n}\n\n.mj-checkout-account__msg[_ngcontent-%COMP%] {\n margin: 1rem 0 0;\n color: #334155;\n font-size: 0.95rem;\n line-height: 1.5;\n}\n\n.mj-checkout-account__note[_ngcontent-%COMP%] {\n margin: 0 0 0.5rem;\n color: #475569;\n font-size: 0.85rem;\n line-height: 1.45;\n text-align: center;\n}\n\n.mj-checkout-account--actions[_ngcontent-%COMP%] {\n margin-top: 0.75rem;\n}"] });
40800
+ }, dependencies: [CommonModule, MJCheckoutWidgetComponent], styles: ["[_nghost-%COMP%] {\n display: block;\n}\n\n.mj-checkout-public[_ngcontent-%COMP%] {\n max-width: 580px;\n margin: 0 auto;\n}\n\n.mj-checkout-public__status[_ngcontent-%COMP%] {\n text-align: center;\n color: #64748b;\n font-size: 0.95rem;\n padding: 2rem 0;\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 font-size: 0.875rem;\n}\n\n.mj-checkout-success[_ngcontent-%COMP%] {\n text-align: center;\n background: #ffffff;\n border: 1px solid #e2e8f0;\n border-radius: 10px;\n padding: 2rem 1.5rem;\n box-shadow: 0 10px 25px -5px rgba(0, 0, 0, 0.05);\n}\n\n.mj-checkout-success__icon[_ngcontent-%COMP%] {\n width: 3rem;\n height: 3rem;\n margin: 0 auto 1rem;\n border-radius: 50%;\n background: #dcfce7;\n color: #16a34a;\n font-size: 1.5rem;\n font-weight: 700;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.mj-checkout-success__title[_ngcontent-%COMP%] {\n margin: 0 0 0.5rem;\n font-size: 1.5rem;\n font-weight: 800;\n color: #0f172a;\n}\n\n.mj-checkout-success__msg[_ngcontent-%COMP%], \n.mj-checkout-success__order[_ngcontent-%COMP%] {\n margin: 0;\n color: #64748b;\n font-size: 0.95rem;\n line-height: 1.5;\n}\n\n.mj-checkout-success__order[_ngcontent-%COMP%] {\n margin-top: 0.75rem;\n font-weight: 600;\n color: #334155;\n}\n\n\n\n.mj-checkout-success__access[_ngcontent-%COMP%] {\n margin: 0.75rem 0 0;\n color: #334155;\n font-size: 0.95rem;\n}\n\n.mj-checkout-success__access.is-failed[_ngcontent-%COMP%] {\n color: #991b1b;\n}\n\n\n\n.mj-checkout-account[_ngcontent-%COMP%] {\n margin: 1.5rem auto 0;\n max-width: 320px;\n text-align: left;\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n.mj-checkout-account__title[_ngcontent-%COMP%] {\n margin: 0 0 0.5rem;\n font-size: 1.05rem;\n font-weight: 700;\n color: #0f172a;\n text-align: center;\n}\n\n.mj-checkout-account__label[_ngcontent-%COMP%] {\n font-size: 0.85rem;\n font-weight: 600;\n color: #334155;\n}\n\n.mj-checkout-account__input[_ngcontent-%COMP%] {\n padding: 8px 10px;\n border: 1px solid #cbd5e1;\n border-radius: 6px;\n font-size: 0.95rem;\n font-family: inherit;\n}\n\n.mj-checkout-account__input[_ngcontent-%COMP%]:focus {\n outline: none;\n border-color: var(--mj-primary-color, #2563eb);\n box-shadow: 0 0 0 2px rgba(37, 99, 235, 0.15);\n}\n\n.mj-checkout-account__error[_ngcontent-%COMP%] {\n margin: 4px 0 0;\n color: #991b1b;\n font-size: 0.85rem;\n}\n\n.mj-checkout-account__submit[_ngcontent-%COMP%] {\n margin-top: 10px;\n padding: 10px;\n border: 0;\n border-radius: 6px;\n background: var(--mj-primary-color, #2563eb);\n color: #ffffff;\n font-weight: 600;\n cursor: pointer;\n}\n\n.mj-checkout-account__skip[_ngcontent-%COMP%] {\n padding: 6px;\n border: 0;\n background: none;\n color: #64748b;\n font-size: 0.85rem;\n cursor: pointer;\n}\n\n.mj-checkout-account__submit[_ngcontent-%COMP%]:disabled, \n.mj-checkout-account__skip[_ngcontent-%COMP%]:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n}\n\n.mj-checkout-account__msg[_ngcontent-%COMP%] {\n margin: 1rem 0 0;\n color: #334155;\n font-size: 0.95rem;\n line-height: 1.5;\n}\n\n.mj-checkout-account__note[_ngcontent-%COMP%] {\n margin: 0 0 0.5rem;\n color: #475569;\n font-size: 0.85rem;\n line-height: 1.45;\n text-align: center;\n}\n\n.mj-checkout-account--actions[_ngcontent-%COMP%] {\n margin-top: 0.75rem;\n}\n\n\n\n.mj-checkout-public__turnstile[_ngcontent-%COMP%] {\n display: flex;\n justify-content: center;\n margin-top: 0.75rem;\n}"] });
40678
40801
  };
40679
40802
  (() => {
40680
40803
  (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(CheckoutPublicHostComponent, [{
@@ -40764,8 +40887,9 @@ var CheckoutPublicHostComponent = class _CheckoutPublicHostComponent {
40764
40887
  </mj-checkout-widget>
40765
40888
  }
40766
40889
  }
40890
+ <div class="mj-checkout-public__turnstile"></div>
40767
40891
  </div>
40768
- `, styles: [":host {\n display: block;\n}\n\n.mj-checkout-public {\n max-width: 580px;\n margin: 0 auto;\n}\n\n.mj-checkout-public__status {\n text-align: center;\n color: #64748b;\n font-size: 0.95rem;\n padding: 2rem 0;\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 font-size: 0.875rem;\n}\n\n.mj-checkout-success {\n text-align: center;\n background: #ffffff;\n border: 1px solid #e2e8f0;\n border-radius: 10px;\n padding: 2rem 1.5rem;\n box-shadow: 0 10px 25px -5px rgba(0, 0, 0, 0.05);\n}\n\n.mj-checkout-success__icon {\n width: 3rem;\n height: 3rem;\n margin: 0 auto 1rem;\n border-radius: 50%;\n background: #dcfce7;\n color: #16a34a;\n font-size: 1.5rem;\n font-weight: 700;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.mj-checkout-success__title {\n margin: 0 0 0.5rem;\n font-size: 1.5rem;\n font-weight: 800;\n color: #0f172a;\n}\n\n.mj-checkout-success__msg,\n.mj-checkout-success__order {\n margin: 0;\n color: #64748b;\n font-size: 0.95rem;\n line-height: 1.5;\n}\n\n.mj-checkout-success__order {\n margin-top: 0.75rem;\n font-weight: 600;\n color: #334155;\n}\n\n/* Whether the buyer's access is ready yet (#325). */\n.mj-checkout-success__access {\n margin: 0.75rem 0 0;\n color: #334155;\n font-size: 0.95rem;\n}\n\n.mj-checkout-success__access.is-failed {\n color: #991b1b;\n}\n\n/* Post-payment account step: set a password for the account the host created (#292). */\n.mj-checkout-account {\n margin: 1.5rem auto 0;\n max-width: 320px;\n text-align: left;\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n.mj-checkout-account__title {\n margin: 0 0 0.5rem;\n font-size: 1.05rem;\n font-weight: 700;\n color: #0f172a;\n text-align: center;\n}\n\n.mj-checkout-account__label {\n font-size: 0.85rem;\n font-weight: 600;\n color: #334155;\n}\n\n.mj-checkout-account__input {\n padding: 8px 10px;\n border: 1px solid #cbd5e1;\n border-radius: 6px;\n font-size: 0.95rem;\n font-family: inherit;\n}\n\n.mj-checkout-account__input:focus {\n outline: none;\n border-color: var(--mj-primary-color, #2563eb);\n box-shadow: 0 0 0 2px rgba(37, 99, 235, 0.15);\n}\n\n.mj-checkout-account__error {\n margin: 4px 0 0;\n color: #991b1b;\n font-size: 0.85rem;\n}\n\n.mj-checkout-account__submit {\n margin-top: 10px;\n padding: 10px;\n border: 0;\n border-radius: 6px;\n background: var(--mj-primary-color, #2563eb);\n color: #ffffff;\n font-weight: 600;\n cursor: pointer;\n}\n\n.mj-checkout-account__skip {\n padding: 6px;\n border: 0;\n background: none;\n color: #64748b;\n font-size: 0.85rem;\n cursor: pointer;\n}\n\n.mj-checkout-account__submit:disabled,\n.mj-checkout-account__skip:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n}\n\n.mj-checkout-account__msg {\n margin: 1rem 0 0;\n color: #334155;\n font-size: 0.95rem;\n line-height: 1.5;\n}\n\n.mj-checkout-account__note {\n margin: 0 0 0.5rem;\n color: #475569;\n font-size: 0.85rem;\n line-height: 1.45;\n text-align: center;\n}\n\n.mj-checkout-account--actions {\n margin-top: 0.75rem;\n}\n"] }]
40892
+ `, styles: [":host {\n display: block;\n}\n\n.mj-checkout-public {\n max-width: 580px;\n margin: 0 auto;\n}\n\n.mj-checkout-public__status {\n text-align: center;\n color: #64748b;\n font-size: 0.95rem;\n padding: 2rem 0;\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 font-size: 0.875rem;\n}\n\n.mj-checkout-success {\n text-align: center;\n background: #ffffff;\n border: 1px solid #e2e8f0;\n border-radius: 10px;\n padding: 2rem 1.5rem;\n box-shadow: 0 10px 25px -5px rgba(0, 0, 0, 0.05);\n}\n\n.mj-checkout-success__icon {\n width: 3rem;\n height: 3rem;\n margin: 0 auto 1rem;\n border-radius: 50%;\n background: #dcfce7;\n color: #16a34a;\n font-size: 1.5rem;\n font-weight: 700;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.mj-checkout-success__title {\n margin: 0 0 0.5rem;\n font-size: 1.5rem;\n font-weight: 800;\n color: #0f172a;\n}\n\n.mj-checkout-success__msg,\n.mj-checkout-success__order {\n margin: 0;\n color: #64748b;\n font-size: 0.95rem;\n line-height: 1.5;\n}\n\n.mj-checkout-success__order {\n margin-top: 0.75rem;\n font-weight: 600;\n color: #334155;\n}\n\n/* Whether the buyer's access is ready yet (#325). */\n.mj-checkout-success__access {\n margin: 0.75rem 0 0;\n color: #334155;\n font-size: 0.95rem;\n}\n\n.mj-checkout-success__access.is-failed {\n color: #991b1b;\n}\n\n/* Post-payment account step: set a password for the account the host created (#292). */\n.mj-checkout-account {\n margin: 1.5rem auto 0;\n max-width: 320px;\n text-align: left;\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n.mj-checkout-account__title {\n margin: 0 0 0.5rem;\n font-size: 1.05rem;\n font-weight: 700;\n color: #0f172a;\n text-align: center;\n}\n\n.mj-checkout-account__label {\n font-size: 0.85rem;\n font-weight: 600;\n color: #334155;\n}\n\n.mj-checkout-account__input {\n padding: 8px 10px;\n border: 1px solid #cbd5e1;\n border-radius: 6px;\n font-size: 0.95rem;\n font-family: inherit;\n}\n\n.mj-checkout-account__input:focus {\n outline: none;\n border-color: var(--mj-primary-color, #2563eb);\n box-shadow: 0 0 0 2px rgba(37, 99, 235, 0.15);\n}\n\n.mj-checkout-account__error {\n margin: 4px 0 0;\n color: #991b1b;\n font-size: 0.85rem;\n}\n\n.mj-checkout-account__submit {\n margin-top: 10px;\n padding: 10px;\n border: 0;\n border-radius: 6px;\n background: var(--mj-primary-color, #2563eb);\n color: #ffffff;\n font-weight: 600;\n cursor: pointer;\n}\n\n.mj-checkout-account__skip {\n padding: 6px;\n border: 0;\n background: none;\n color: #64748b;\n font-size: 0.85rem;\n cursor: pointer;\n}\n\n.mj-checkout-account__submit:disabled,\n.mj-checkout-account__skip:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n}\n\n.mj-checkout-account__msg {\n margin: 1rem 0 0;\n color: #334155;\n font-size: 0.95rem;\n line-height: 1.5;\n}\n\n.mj-checkout-account__note {\n margin: 0 0 0.5rem;\n color: #475569;\n font-size: 0.85rem;\n line-height: 1.45;\n text-align: center;\n}\n\n.mj-checkout-account--actions {\n margin-top: 0.75rem;\n}\n\n/* Cloudflare Turnstile renders here only when it needs the buyer to interact (#592). */\n.mj-checkout-public__turnstile {\n display: flex;\n justify-content: center;\n margin-top: 0.75rem;\n}\n"] }]
40769
40893
  }], null, { slug: [{
40770
40894
  type: Input
40771
40895
  }], apiRoot: [{
@@ -40778,7 +40902,7 @@ var CheckoutPublicHostComponent = class _CheckoutPublicHostComponent {
40778
40902
  }] });
40779
40903
  })();
40780
40904
  (() => {
40781
- (typeof ngDevMode === "undefined" || ngDevMode) && \u0275setClassDebugInfo(CheckoutPublicHostComponent, { className: "CheckoutPublicHostComponent", filePath: "lib/checkout-widget/checkout-public-host.component.ts", lineNumber: 109 });
40905
+ (typeof ngDevMode === "undefined" || ngDevMode) && \u0275setClassDebugInfo(CheckoutPublicHostComponent, { className: "CheckoutPublicHostComponent", filePath: "lib/checkout-widget/checkout-public-host.component.ts", lineNumber: 110 });
40782
40906
  })();
40783
40907
 
40784
40908
  // scripts/checkout-element-entry.ts
@@ -104,6 +104,9 @@ export declare class CheckoutPublicHostComponent implements OnInit, AfterViewChe
104
104
  private accessTracking;
105
105
  get accessMessage(): string | null;
106
106
  private stripe;
107
+ /** Turnstile for a widget that sets `requireTurnstile` (#592); idle until the edge asks for it. */
108
+ private readonly turnstile;
109
+ private readonly turnstileState;
107
110
  private card;
108
111
  private cardMounted;
109
112
  private destroyed;
@@ -213,6 +216,10 @@ export declare class CheckoutPublicHostComponent implements OnInit, AfterViewChe
213
216
  private forgetCompleting;
214
217
  private completingSession;
215
218
  private post;
219
+ /** `/initialize` and `/complete`: sends a Turnstile token when the widget requires one. */
220
+ private postGated;
221
+ /** Where Turnstile renders: outside the template's state branches, so it survives every redraw. */
222
+ private turnstileContainer;
216
223
  private str;
217
224
  static ɵfac: i0.ɵɵFactoryDeclaration<CheckoutPublicHostComponent, never>;
218
225
  static ɵcmp: i0.ɵɵComponentDeclaration<CheckoutPublicHostComponent, "mj-orders-checkout", never, { "slug": { "alias": "slug"; "required": false; }; "apiRoot": { "alias": "apiRoot"; "required": false; }; "memberToken": { "alias": "memberToken"; "required": false; }; }, { "alreadySubscribed": "checkout-already-subscribed"; }, never, never, true, never>;
@@ -1 +1 @@
1
- {"version":3,"file":"checkout-public-host.component.d.ts","sourceRoot":"","sources":["../../../src/lib/checkout-widget/checkout-public-host.component.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"checkout-public-host.component.d.ts","sourceRoot":"","sources":["../../../src/lib/checkout-widget/checkout-public-host.component.ts"],"names":[],"mappings":"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"}