@foxy.io/elements 1.18.0-beta.20 → 1.18.0-beta.22
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -1
- package/dist/cdn/foxy-access-recovery-form.js +1 -1
- package/dist/cdn/foxy-address-card.js +1 -1
- package/dist/cdn/foxy-address-form.js +1 -1
- package/dist/cdn/foxy-admin-subscription-card.js +1 -1
- package/dist/cdn/foxy-api-browser.js +1 -1
- package/dist/cdn/foxy-applied-coupon-code-card.js +1 -1
- package/dist/cdn/foxy-applied-coupon-code-form.js +1 -1
- package/dist/cdn/foxy-applied-tax-card.js +1 -1
- package/dist/cdn/foxy-attribute-card.js +1 -1
- package/dist/cdn/foxy-attribute-form.js +1 -1
- package/dist/cdn/foxy-cancellation-form.js +1 -1
- package/dist/cdn/foxy-cart-card.js +1 -1
- package/dist/cdn/foxy-cart-form.js +1 -1
- package/dist/cdn/foxy-collection-page.js +1 -1
- package/dist/cdn/foxy-collection-pages.js +1 -1
- package/dist/cdn/foxy-copy-to-clipboard.js +1 -1
- package/dist/cdn/foxy-coupon-card.js +1 -1
- package/dist/cdn/foxy-coupon-code-form.js +1 -1
- package/dist/cdn/foxy-coupon-codes-form.js +1 -1
- package/dist/cdn/foxy-coupon-detail-card.js +1 -1
- package/dist/cdn/foxy-coupon-form.js +1 -1
- package/dist/cdn/foxy-custom-field-card.js +1 -1
- package/dist/cdn/foxy-custom-field-form.js +1 -1
- package/dist/cdn/foxy-customer-card.js +1 -1
- package/dist/cdn/foxy-customer-form.js +1 -1
- package/dist/cdn/foxy-customer-portal-settings.js +1 -1
- package/dist/cdn/foxy-customer-portal.js +1 -1
- package/dist/cdn/foxy-customer.js +1 -1
- package/dist/cdn/foxy-customers-table.js +1 -1
- package/dist/cdn/foxy-discount-builder.js +1 -1
- package/dist/cdn/foxy-discount-card.js +1 -1
- package/dist/cdn/foxy-discount-detail-card.js +1 -1
- package/dist/cdn/foxy-donation.js +1 -1
- package/dist/cdn/foxy-email-template-card.js +1 -1
- package/dist/cdn/foxy-email-template-form.js +1 -1
- package/dist/cdn/foxy-error-entry-card.js +1 -1
- package/dist/cdn/foxy-form-dialog.js +1 -1
- package/dist/cdn/foxy-generate-codes-form.js +1 -1
- package/dist/cdn/foxy-gift-card-card.js +1 -1
- package/dist/cdn/foxy-gift-card-code-form.js +1 -1
- package/dist/cdn/foxy-gift-card-code-log-card.js +1 -1
- package/dist/cdn/foxy-gift-card-codes-form.js +1 -1
- package/dist/cdn/foxy-gift-card-form.js +1 -1
- package/dist/cdn/foxy-i18n-editor.js +2 -2
- package/dist/cdn/foxy-i18n.js +1 -1
- package/dist/cdn/foxy-integration-card.js +1 -1
- package/dist/cdn/foxy-integration-form.js +1 -1
- package/dist/cdn/foxy-item-card.js +1 -1
- package/dist/cdn/foxy-item-category-card.js +1 -1
- package/dist/cdn/foxy-item-category-form.js +1 -1
- package/dist/cdn/foxy-item-form.js +1 -1
- package/dist/cdn/foxy-item-option-card.js +1 -1
- package/dist/cdn/foxy-item-option-form.js +1 -1
- package/dist/cdn/foxy-items-form.js +1 -1
- package/dist/cdn/foxy-pagination.js +1 -1
- package/dist/cdn/foxy-payment-card.js +1 -1
- package/dist/cdn/foxy-payment-method-card.js +1 -1
- package/dist/cdn/foxy-payments-api-fraud-protection-card.js +1 -1
- package/dist/cdn/foxy-payments-api-fraud-protection-form.js +1 -1
- package/dist/cdn/foxy-payments-api-payment-method-card.js +1 -1
- package/dist/cdn/foxy-payments-api-payment-method-form.js +1 -1
- package/dist/cdn/foxy-payments-api-payment-preset-card.js +1 -1
- package/dist/cdn/foxy-payments-api-payment-preset-form.js +1 -1
- package/dist/cdn/foxy-query-builder.js +1 -1
- package/dist/cdn/foxy-report-form.js +2 -2
- package/dist/cdn/foxy-reports-table.js +5 -5
- package/dist/cdn/foxy-shipment-card.js +1 -1
- package/dist/cdn/foxy-shipping-method-card.js +1 -1
- package/dist/cdn/foxy-sign-in-form.js +1 -1
- package/dist/cdn/foxy-spinner.js +1 -1
- package/dist/cdn/foxy-store-form.js +1 -1
- package/dist/cdn/foxy-store-shipping-method-form.js +1 -1
- package/dist/cdn/foxy-subscription-card.js +1 -1
- package/dist/cdn/foxy-subscription-form.js +1 -1
- package/dist/cdn/foxy-subscription-settings-form.js +1 -1
- package/dist/cdn/foxy-subscriptions-table.js +1 -1
- package/dist/cdn/foxy-table.js +1 -1
- package/dist/cdn/foxy-tax-card.js +1 -1
- package/dist/cdn/foxy-tax-form.js +1 -1
- package/dist/cdn/foxy-template-config-form.js +1 -1
- package/dist/cdn/foxy-template-form.js +1 -1
- package/dist/cdn/foxy-template-set-card.js +1 -1
- package/dist/cdn/foxy-template-set-form.js +1 -1
- package/dist/cdn/foxy-transaction-card.js +1 -1
- package/dist/cdn/foxy-transaction.js +1 -1
- package/dist/cdn/foxy-transactions-table.js +7 -7
- package/dist/cdn/foxy-user-form.js +1 -1
- package/dist/cdn/foxy-users-table.js +1 -1
- package/dist/cdn/foxy-webhook-card.js +1 -1
- package/dist/cdn/foxy-webhook-form.js +1 -1
- package/dist/cdn/foxy-webhook-log-card.js +1 -1
- package/dist/cdn/foxy-webhook-status-card.js +1 -1
- package/dist/cdn/{shared-39b184de.js → shared-08156595.js} +1 -1
- package/dist/cdn/shared-0821cfdc.js +1 -0
- package/dist/cdn/{shared-23bf6ee6.js → shared-08e27fe9.js} +3 -3
- package/dist/cdn/{shared-68e0cf30.js → shared-0ce006b9.js} +1 -1
- package/dist/cdn/shared-1000b848.js +1 -0
- package/dist/cdn/{shared-d384d6a3.js → shared-101d1234.js} +2 -2
- package/dist/cdn/{shared-7d658c02.js → shared-1c94a156.js} +1 -1
- package/dist/cdn/{shared-3ca1e8e4.js → shared-2092d86f.js} +1 -1
- package/dist/cdn/shared-21679ebd.js +1 -0
- package/dist/cdn/{shared-dbd4a5e8.js → shared-2add595d.js} +1 -1
- package/dist/cdn/{shared-1e94e6dd.js → shared-2cc638ad.js} +1 -1
- package/dist/cdn/{shared-0d4f9b06.js → shared-39c10b22.js} +1 -1
- package/dist/cdn/{shared-e99fa3d6.js → shared-404aa9cc.js} +1 -1
- package/dist/cdn/{shared-17c1eab2.js → shared-4849ef5b.js} +1 -1
- package/dist/cdn/shared-486d7bb5.js +1 -0
- package/dist/cdn/{shared-0f649dc6.js → shared-4f9d2417.js} +5 -5
- package/dist/cdn/{shared-413415b0.js → shared-5378bd8c.js} +1 -1
- package/dist/cdn/{shared-a90a5235.js → shared-5a4829e3.js} +1 -1
- package/dist/cdn/{shared-90c7dbdb.js → shared-5b177708.js} +1 -1
- package/dist/cdn/{shared-5b3ae513.js → shared-5ea18e60.js} +1 -1
- package/dist/cdn/{shared-ae588315.js → shared-62a54a6c.js} +1 -1
- package/dist/cdn/{shared-2f6e33b6.js → shared-62c088b7.js} +1 -1
- package/dist/cdn/{shared-5c6eb602.js → shared-639c666f.js} +1 -1
- package/dist/cdn/{shared-21689ac0.js → shared-6581241a.js} +1 -1
- package/dist/cdn/{shared-df462496.js → shared-6cb1015f.js} +1 -1
- package/dist/cdn/{shared-179ff8af.js → shared-71d8d167.js} +1 -1
- package/dist/cdn/{shared-cdc183c5.js → shared-71f2ef1f.js} +1 -1
- package/dist/cdn/{shared-9d7bbdd8.js → shared-744cf66b.js} +1 -1
- package/dist/cdn/{shared-a343ec6b.js → shared-7d4fb1a2.js} +1 -1
- package/dist/cdn/{shared-5ada1ccb.js → shared-80fc2b6a.js} +1 -1
- package/dist/cdn/{shared-034c6aeb.js → shared-83596b46.js} +1 -1
- package/dist/cdn/shared-868065de.js +1 -0
- package/dist/cdn/{shared-2b2002ac.js → shared-88c4cfec.js} +1 -1
- package/dist/cdn/{shared-cf784db1.js → shared-8dd0af4d.js} +1 -1
- package/dist/cdn/{shared-776f948d.js → shared-988ec916.js} +1 -1
- package/dist/cdn/{shared-c379590f.js → shared-9bdacf65.js} +1 -1
- package/dist/cdn/{shared-a41f2200.js → shared-9f436277.js} +1 -1
- package/dist/cdn/shared-a0c8faf2.js +1 -0
- package/dist/cdn/{shared-bae9da44.js → shared-a37abe4c.js} +2 -2
- package/dist/cdn/{shared-ea6c8bae.js → shared-a41234b4.js} +1 -1
- package/dist/cdn/{shared-6cc53630.js → shared-af226a9a.js} +1 -1
- package/dist/cdn/{shared-13982611.js → shared-b40cf0dd.js} +1 -1
- package/dist/cdn/{shared-9d511d7e.js → shared-bb0e33c3.js} +1 -1
- package/dist/cdn/{shared-b48e5aaf.js → shared-bc814810.js} +1 -1
- package/dist/cdn/{shared-88c7755d.js → shared-bd252323.js} +1 -1
- package/dist/cdn/{shared-869df7ed.js → shared-be66c2e7.js} +1 -1
- package/dist/cdn/{shared-e06b70cc.js → shared-c774d080.js} +1 -1
- package/dist/cdn/{shared-e94165e9.js → shared-c95c17e6.js} +1 -1
- package/dist/cdn/shared-cba08e1c.js +1 -0
- package/dist/cdn/{shared-7fb8ecc5.js → shared-d518bd55.js} +1 -1
- package/dist/cdn/{shared-004f1a77.js → shared-d61b3e4f.js} +1 -1
- package/dist/cdn/{shared-d4a652b7.js → shared-d8dc97f0.js} +1 -1
- package/dist/cdn/{shared-bf47ead0.js → shared-de036570.js} +1 -1
- package/dist/cdn/{shared-1db07286.js → shared-ed0dee03.js} +1 -1
- package/dist/cdn/shared-f7e4cd67.js +1 -0
- package/dist/cdn/{shared-8eb4c8d7.js → shared-f80f402a.js} +1 -1
- package/dist/cdn/translations/cart-card/en.json +3 -3
- package/dist/cdn/translations/gift-card-code-form/en.json +6 -3
- package/dist/cdn/translations/gift-card-code-log-card/en.json +6 -3
- package/dist/cdn/translations/integration-form/en.json +13 -15
- package/dist/cdn/translations/payments-api-fraud-protection-card/en.json +0 -2
- package/dist/cdn/translations/payments-api-payment-method-card/en.json +0 -2
- package/dist/cdn/translations/payments-api-payment-preset-form/en.json +2 -2
- package/dist/cdn/translations/template-set-form/en.json +10 -0
- package/dist/elements/internal/InternalAsyncListControl/InternalAsyncListControl.js +10 -5
- package/dist/elements/internal/InternalAsyncListControl/InternalAsyncListControl.js.map +1 -1
- package/dist/elements/internal/InternalControl/InternalControl.js +2 -2
- package/dist/elements/internal/InternalControl/InternalControl.js.map +1 -1
- package/dist/elements/internal/InternalDetails/InternalDetails.js +3 -3
- package/dist/elements/internal/InternalDetails/InternalDetails.js.map +1 -1
- package/dist/elements/internal/InternalRadioGroupControl/InternalRadioGroupControl.js +1 -1
- package/dist/elements/internal/InternalRadioGroupControl/InternalRadioGroupControl.js.map +1 -1
- package/dist/elements/internal/InternalSelectControl/InternalSelectControl.d.ts +1 -1
- package/dist/elements/internal/InternalSelectControl/InternalSelectControl.js +3 -2
- package/dist/elements/internal/InternalSelectControl/InternalSelectControl.js.map +1 -1
- package/dist/elements/private/Group/Group.js +1 -1
- package/dist/elements/private/Group/Group.js.map +1 -1
- package/dist/elements/private/Warning/Warning.js +1 -3
- package/dist/elements/private/Warning/Warning.js.map +1 -1
- package/dist/elements/public/AdminSubscriptionCard/AdminSubscriptionCard.d.ts +12 -0
- package/dist/elements/public/AdminSubscriptionCard/AdminSubscriptionCard.js +12 -0
- package/dist/elements/public/AdminSubscriptionCard/AdminSubscriptionCard.js.map +1 -1
- package/dist/elements/public/AdminSubscriptionCard/index.d.ts +1 -0
- package/dist/elements/public/AdminSubscriptionCard/index.js +1 -0
- package/dist/elements/public/AdminSubscriptionCard/index.js.map +1 -1
- package/dist/elements/public/AppliedCouponCodeCard/AppliedCouponCodeCard.d.ts +2 -2
- package/dist/elements/public/AppliedCouponCodeCard/AppliedCouponCodeCard.js +7 -8
- package/dist/elements/public/AppliedCouponCodeCard/AppliedCouponCodeCard.js.map +1 -1
- package/dist/elements/public/AppliedCouponCodeForm/AppliedCouponCodeForm.d.ts +23 -4
- package/dist/elements/public/AppliedCouponCodeForm/AppliedCouponCodeForm.js +19 -0
- package/dist/elements/public/AppliedCouponCodeForm/AppliedCouponCodeForm.js.map +1 -1
- package/dist/elements/public/AppliedCouponCodeForm/types.d.ts +12 -0
- package/dist/elements/public/AppliedCouponCodeForm/types.js.map +1 -1
- package/dist/elements/public/AppliedTaxCard/AppliedTaxCard.d.ts +1 -1
- package/dist/elements/public/AppliedTaxCard/AppliedTaxCard.js +2 -2
- package/dist/elements/public/AppliedTaxCard/AppliedTaxCard.js.map +1 -1
- package/dist/elements/public/AttributeCard/AttributeCard.js +28 -14
- package/dist/elements/public/AttributeCard/AttributeCard.js.map +1 -1
- package/dist/elements/public/CartCard/CartCard.d.ts +7 -2
- package/dist/elements/public/CartCard/CartCard.js +16 -9
- package/dist/elements/public/CartCard/CartCard.js.map +1 -1
- package/dist/elements/public/CartForm/CartForm.d.ts +106 -1
- package/dist/elements/public/CartForm/CartForm.js +167 -37
- package/dist/elements/public/CartForm/CartForm.js.map +1 -1
- package/dist/elements/public/CartForm/index.d.ts +2 -0
- package/dist/elements/public/CartForm/index.js +2 -0
- package/dist/elements/public/CartForm/index.js.map +1 -1
- package/dist/elements/public/CartForm/types.d.ts +64 -0
- package/dist/elements/public/CartForm/types.js.map +1 -1
- package/dist/elements/public/CouponDetailCard/CouponDetailCard.d.ts +1 -1
- package/dist/elements/public/CouponDetailCard/CouponDetailCard.js +2 -2
- package/dist/elements/public/CouponDetailCard/CouponDetailCard.js.map +1 -1
- package/dist/elements/public/CouponForm/CouponForm.js +13 -9
- package/dist/elements/public/CouponForm/CouponForm.js.map +1 -1
- package/dist/elements/public/CustomFieldCard/CustomFieldCard.d.ts +1 -1
- package/dist/elements/public/CustomFieldCard/CustomFieldCard.js +2 -2
- package/dist/elements/public/CustomFieldCard/CustomFieldCard.js.map +1 -1
- package/dist/elements/public/CustomFieldCard/TwoLineCard.d.ts +6 -12
- package/dist/elements/public/CustomFieldCard/TwoLineCard.js +5 -35
- package/dist/elements/public/CustomFieldCard/TwoLineCard.js.map +1 -1
- package/dist/elements/public/DiscountBuilder/DiscountBuilder.js +4 -4
- package/dist/elements/public/DiscountBuilder/DiscountBuilder.js.map +1 -1
- package/dist/elements/public/DiscountCard/DiscountCard.d.ts +1 -1
- package/dist/elements/public/DiscountCard/DiscountCard.js +2 -2
- package/dist/elements/public/DiscountCard/DiscountCard.js.map +1 -1
- package/dist/elements/public/DiscountDetailCard/DiscountDetailCard.d.ts +1 -1
- package/dist/elements/public/DiscountDetailCard/DiscountDetailCard.js +2 -2
- package/dist/elements/public/DiscountDetailCard/DiscountDetailCard.js.map +1 -1
- package/dist/elements/public/EmailTemplateCard/EmailTemplateCard.d.ts +1 -1
- package/dist/elements/public/EmailTemplateCard/EmailTemplateCard.js +2 -2
- package/dist/elements/public/EmailTemplateCard/EmailTemplateCard.js.map +1 -1
- package/dist/elements/public/EmailTemplateForm/EmailTemplateForm.js +10 -2
- package/dist/elements/public/EmailTemplateForm/EmailTemplateForm.js.map +1 -1
- package/dist/elements/public/GiftCardCodeLogCard/GiftCardCodeLogCard.d.ts +13 -2
- package/dist/elements/public/GiftCardCodeLogCard/GiftCardCodeLogCard.js +66 -76
- package/dist/elements/public/GiftCardCodeLogCard/GiftCardCodeLogCard.js.map +1 -1
- package/dist/elements/public/GiftCardCodeLogCard/index.d.ts +1 -2
- package/dist/elements/public/GiftCardCodeLogCard/index.js +1 -2
- package/dist/elements/public/GiftCardCodeLogCard/index.js.map +1 -1
- package/dist/elements/public/GiftCardForm/GiftCardForm.js +3 -3
- package/dist/elements/public/GiftCardForm/GiftCardForm.js.map +1 -1
- package/dist/elements/public/I18n/format/price.js +1 -0
- package/dist/elements/public/I18n/format/price.js.map +1 -1
- package/dist/elements/public/I18nEditor/I18nEditor.d.ts +9 -0
- package/dist/elements/public/I18nEditor/I18nEditor.js +13 -4
- package/dist/elements/public/I18nEditor/I18nEditor.js.map +1 -1
- package/dist/elements/public/IntegrationForm/IntegrationForm.d.ts +35 -0
- package/dist/elements/public/IntegrationForm/IntegrationForm.js +156 -164
- package/dist/elements/public/IntegrationForm/IntegrationForm.js.map +1 -1
- package/dist/elements/public/IntegrationForm/index.d.ts +1 -0
- package/dist/elements/public/IntegrationForm/index.js +1 -0
- package/dist/elements/public/IntegrationForm/index.js.map +1 -1
- package/dist/elements/public/ItemCard/ItemCard.js +14 -15
- package/dist/elements/public/ItemCard/ItemCard.js.map +1 -1
- package/dist/elements/public/ItemCategoryCard/ItemCategoryCard.d.ts +1 -1
- package/dist/elements/public/ItemCategoryCard/ItemCategoryCard.js +2 -2
- package/dist/elements/public/ItemCategoryCard/ItemCategoryCard.js.map +1 -1
- package/dist/elements/public/ItemOptionCard/ItemOptionCard.d.ts +1 -1
- package/dist/elements/public/ItemOptionCard/ItemOptionCard.js +2 -2
- package/dist/elements/public/ItemOptionCard/ItemOptionCard.js.map +1 -1
- package/dist/elements/public/PaymentsApiFraudProtectionCard/PaymentsApiFraudProtectionCard.d.ts +23 -2
- package/dist/elements/public/PaymentsApiFraudProtectionCard/PaymentsApiFraudProtectionCard.js +35 -19
- package/dist/elements/public/PaymentsApiFraudProtectionCard/PaymentsApiFraudProtectionCard.js.map +1 -1
- package/dist/elements/public/PaymentsApiFraudProtectionCard/index.d.ts +2 -1
- package/dist/elements/public/PaymentsApiFraudProtectionCard/index.js +2 -1
- package/dist/elements/public/PaymentsApiFraudProtectionCard/index.js.map +1 -1
- package/dist/elements/public/PaymentsApiFraudProtectionForm/PaymentsApiFraudProtectionForm.d.ts +41 -3
- package/dist/elements/public/PaymentsApiFraudProtectionForm/PaymentsApiFraudProtectionForm.js +142 -84
- package/dist/elements/public/PaymentsApiFraudProtectionForm/PaymentsApiFraudProtectionForm.js.map +1 -1
- package/dist/elements/public/PaymentsApiFraudProtectionForm/index.d.ts +2 -3
- package/dist/elements/public/PaymentsApiFraudProtectionForm/index.js +2 -3
- package/dist/elements/public/PaymentsApiFraudProtectionForm/index.js.map +1 -1
- package/dist/elements/public/PaymentsApiFraudProtectionForm/types.d.ts +15 -0
- package/dist/elements/public/PaymentsApiFraudProtectionForm/types.js.map +1 -1
- package/dist/elements/public/PaymentsApiPaymentMethodCard/PaymentsApiPaymentMethodCard.d.ts +23 -3
- package/dist/elements/public/PaymentsApiPaymentMethodCard/PaymentsApiPaymentMethodCard.js +34 -20
- package/dist/elements/public/PaymentsApiPaymentMethodCard/PaymentsApiPaymentMethodCard.js.map +1 -1
- package/dist/elements/public/PaymentsApiPaymentMethodCard/index.d.ts +2 -1
- package/dist/elements/public/PaymentsApiPaymentMethodCard/index.js +2 -1
- package/dist/elements/public/PaymentsApiPaymentMethodCard/index.js.map +1 -1
- package/dist/elements/public/PaymentsApiPaymentMethodForm/PaymentsApiPaymentMethodForm.d.ts +70 -3
- package/dist/elements/public/PaymentsApiPaymentMethodForm/PaymentsApiPaymentMethodForm.js +314 -263
- package/dist/elements/public/PaymentsApiPaymentMethodForm/PaymentsApiPaymentMethodForm.js.map +1 -1
- package/dist/elements/public/PaymentsApiPaymentMethodForm/index.d.ts +2 -0
- package/dist/elements/public/PaymentsApiPaymentMethodForm/index.js +2 -0
- package/dist/elements/public/PaymentsApiPaymentMethodForm/index.js.map +1 -1
- package/dist/elements/public/PaymentsApiPaymentMethodForm/types.d.ts +29 -0
- package/dist/elements/public/PaymentsApiPaymentMethodForm/types.js.map +1 -1
- package/dist/elements/public/PaymentsApiPaymentPresetCard/PaymentsApiPaymentPresetCard.d.ts +1 -1
- package/dist/elements/public/PaymentsApiPaymentPresetCard/PaymentsApiPaymentPresetCard.js +2 -2
- package/dist/elements/public/PaymentsApiPaymentPresetCard/PaymentsApiPaymentPresetCard.js.map +1 -1
- package/dist/elements/public/PaymentsApiPaymentPresetForm/PaymentsApiPaymentPresetForm.d.ts +40 -1
- package/dist/elements/public/PaymentsApiPaymentPresetForm/PaymentsApiPaymentPresetForm.js +93 -74
- package/dist/elements/public/PaymentsApiPaymentPresetForm/PaymentsApiPaymentPresetForm.js.map +1 -1
- package/dist/elements/public/PaymentsApiPaymentPresetForm/types.d.ts +14 -0
- package/dist/elements/public/PaymentsApiPaymentPresetForm/types.js.map +1 -1
- package/dist/elements/public/ReportForm/ReportForm.js +4 -1
- package/dist/elements/public/ReportForm/ReportForm.js.map +1 -1
- package/dist/elements/public/StoreForm/StoreForm.d.ts +153 -1
- package/dist/elements/public/StoreForm/StoreForm.js +191 -27
- package/dist/elements/public/StoreForm/StoreForm.js.map +1 -1
- package/dist/elements/public/StoreForm/index.d.ts +1 -0
- package/dist/elements/public/StoreForm/index.js +1 -0
- package/dist/elements/public/StoreForm/index.js.map +1 -1
- package/dist/elements/public/StoreForm/types.d.ts +94 -0
- package/dist/elements/public/StoreForm/types.js.map +1 -1
- package/dist/elements/public/StoreShippingMethodForm/StoreShippingMethodForm.d.ts +1 -1
- package/dist/elements/public/StoreShippingMethodForm/StoreShippingMethodForm.js +1 -1
- package/dist/elements/public/StoreShippingMethodForm/StoreShippingMethodForm.js.map +1 -1
- package/dist/elements/public/SubscriptionSettingsForm/SubscriptionSettingsForm.d.ts +50 -1
- package/dist/elements/public/SubscriptionSettingsForm/SubscriptionSettingsForm.js +49 -0
- package/dist/elements/public/SubscriptionSettingsForm/SubscriptionSettingsForm.js.map +1 -1
- package/dist/elements/public/SubscriptionSettingsForm/internal/InternalSubscriptionSettingsFormReattemptBypass/globalStyles.js +1 -1
- package/dist/elements/public/SubscriptionSettingsForm/internal/InternalSubscriptionSettingsFormReattemptBypass/globalStyles.js.map +1 -1
- package/dist/elements/public/SubscriptionSettingsForm/internal/InternalSubscriptionSettingsFormReattemptBypass/index.d.ts +1 -0
- package/dist/elements/public/SubscriptionSettingsForm/internal/InternalSubscriptionSettingsFormReattemptBypass/index.js +1 -0
- package/dist/elements/public/SubscriptionSettingsForm/internal/InternalSubscriptionSettingsFormReattemptBypass/index.js.map +1 -1
- package/dist/elements/public/SubscriptionSettingsForm/types.d.ts +33 -1
- package/dist/elements/public/SubscriptionSettingsForm/types.js.map +1 -1
- package/dist/elements/public/TemplateConfigForm/TemplateConfigForm.js +4 -1
- package/dist/elements/public/TemplateConfigForm/TemplateConfigForm.js.map +1 -1
- package/dist/elements/public/TemplateForm/TemplateForm.js +10 -2
- package/dist/elements/public/TemplateForm/TemplateForm.js.map +1 -1
- package/dist/elements/public/TemplateSetCard/TemplateSetCard.d.ts +1 -1
- package/dist/elements/public/TemplateSetCard/TemplateSetCard.js +2 -2
- package/dist/elements/public/TemplateSetCard/TemplateSetCard.js.map +1 -1
- package/dist/elements/public/TemplateSetForm/TemplateSetForm.d.ts +49 -8
- package/dist/elements/public/TemplateSetForm/TemplateSetForm.js +100 -64
- package/dist/elements/public/TemplateSetForm/TemplateSetForm.js.map +1 -1
- package/dist/elements/public/TemplateSetForm/index.d.ts +1 -0
- package/dist/elements/public/TemplateSetForm/index.js +1 -0
- package/dist/elements/public/TemplateSetForm/index.js.map +1 -1
- package/dist/elements/public/TemplateSetForm/types.d.ts +22 -0
- package/dist/elements/public/TemplateSetForm/types.js.map +1 -1
- package/dist/mixins/themeable.js +19 -12
- package/dist/mixins/themeable.js.map +1 -1
- package/package.json +2 -1
- package/dist/cdn/shared-11ffd643.js +0 -1
- package/dist/cdn/shared-1351c1e3.js +0 -1
- package/dist/cdn/shared-2f9b7791.js +0 -1
- package/dist/cdn/shared-79d6a262.js +0 -1
- package/dist/cdn/shared-888d690a.js +0 -1
- package/dist/cdn/shared-b7636a23.js +0 -1
- package/dist/cdn/shared-fafafc09.js +0 -1
package/dist/elements/public/PaymentsApiFraudProtectionForm/PaymentsApiFraudProtectionForm.js
CHANGED
|
@@ -1,13 +1,49 @@
|
|
|
1
1
|
import { TranslatableMixin } from "../../../mixins/translatable.js";
|
|
2
2
|
import { InternalForm } from "../../internal/InternalForm/InternalForm.js";
|
|
3
|
+
import { ifDefined } from 'lit-html/directives/if-defined';
|
|
3
4
|
import { html } from 'lit-html';
|
|
4
5
|
import get from 'lodash-es/get';
|
|
5
6
|
import set from 'lodash-es/set';
|
|
6
7
|
import has from 'lodash-es/has';
|
|
7
|
-
|
|
8
|
+
const NS = 'payments-api-fraud-protection-form';
|
|
9
|
+
const Base = TranslatableMixin(InternalForm, NS);
|
|
10
|
+
/**
|
|
11
|
+
* Form element for the `fx:fraud_protection` resource of Payments API.
|
|
12
|
+
*
|
|
13
|
+
* _Payments API is a client-side virtual API layer built on top of hAPI
|
|
14
|
+
* in an attempt to streamline access to stores' payment method settings
|
|
15
|
+
* that is currently a bit quirky due to the legacy functionality. To use
|
|
16
|
+
* this element with hAPI, wrap it into a foxy-payments-api node._
|
|
17
|
+
*
|
|
18
|
+
* @slot description:before
|
|
19
|
+
* @slot description:after
|
|
20
|
+
*
|
|
21
|
+
* @slot score-threshold-reject:before
|
|
22
|
+
* @slot score-threshold-reject:after
|
|
23
|
+
*
|
|
24
|
+
* @slot json-[field-name-in-kebab-case]:before
|
|
25
|
+
* @slot json-[field-name-in-kebab-case]:after
|
|
26
|
+
*
|
|
27
|
+
* @slot timestamps:before
|
|
28
|
+
* @slot timestamps:after
|
|
29
|
+
*
|
|
30
|
+
* @slot create:before
|
|
31
|
+
* @slot create:after
|
|
32
|
+
*
|
|
33
|
+
* @slot delete:before
|
|
34
|
+
* @slot delete:after
|
|
35
|
+
*
|
|
36
|
+
* @element foxy-payments-api-fraud-protection-form
|
|
37
|
+
* @since 1.21.0
|
|
38
|
+
*/
|
|
39
|
+
export class PaymentsApiFraudProtectionForm extends Base {
|
|
8
40
|
constructor() {
|
|
9
41
|
super(...arguments);
|
|
42
|
+
/** A function that returns a URL of a fraud protection icon based on the given type. */
|
|
10
43
|
this.getImageSrc = null;
|
|
44
|
+
/** Template render functions mapped to their name. */
|
|
45
|
+
this.templates = {};
|
|
46
|
+
this.__availableFraudProtectionsLoaderId = 'availableFraudProtections';
|
|
11
47
|
}
|
|
12
48
|
static get defaultImageSrc() {
|
|
13
49
|
return "data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 44 44'%3E%3Cpath fill='%23fff' d='M0 20.73v-9.9L10.83 0h9.9L0 20.73ZM0 0h9.41L0 9.41V0Zm0 22.14L22.14 0h9.9l-9.43 9.44-.61-.27-10.5 4.66v7-.29L0 32.04v-9.9Zm11.54-.23L0 33.46v9.9l14.14-14.14a15 15 0 0 1-2.6-7.3Zm3.2 8.12L.77 44h9.9l9.7-9.7a13.75 13.75 0 0 1-5.63-4.27Zm6.67 4.64L12.08 44h9.9L44 21.98v-9.9L32.16 23.92C31.01 29.15 27.05 33.6 22 34.83l-.59-.16Zm11.02-12.43L44 10.67V.77L31.42 13.35l1.08.48v7a13 13 0 0 1-.07 1.4Zm-1.99-9.32L43.35 0h-9.9l-9.87 9.87 6.86 3.05ZM23.4 44 44 23.4v9.9L33.3 44h-9.9Zm11.31 0L44 34.71V44h-9.29Z'/%3E%3Cpath fill='%23fff' d='M30.17 21.99H22V11.72l-8.17 3.63V22H22v10.42c4.34-1.34 7.55-5.63 8.17-10.43Z'/%3E%3C/svg%3E";
|
|
@@ -22,27 +58,28 @@ export class PaymentsApiFraudProtectionForm extends TranslatableMixin(InternalFo
|
|
|
22
58
|
return [
|
|
23
59
|
({ description: v }) => !v || v.length <= 100 || 'description:v8n_too_long',
|
|
24
60
|
({ type: v }) => !!v || 'type:v8n_required',
|
|
25
|
-
({ score_threshold_reject: v }) =>
|
|
61
|
+
({ score_threshold_reject: v }) => {
|
|
62
|
+
if (typeof v !== 'number')
|
|
63
|
+
return true;
|
|
64
|
+
return (v <= 100 && v >= 0) || 'score-threshold-reject:v8n_out_of_range';
|
|
65
|
+
},
|
|
26
66
|
form => {
|
|
27
67
|
var _a, _b, _c, _d;
|
|
28
68
|
const blocks = (_c = (_b = (_a = form.helper) === null || _a === void 0 ? void 0 : _a.json) === null || _b === void 0 ? void 0 : _b.blocks) !== null && _c !== void 0 ? _c : [];
|
|
29
|
-
let
|
|
69
|
+
let json;
|
|
30
70
|
try {
|
|
31
|
-
|
|
71
|
+
json = JSON.parse((_d = form.json) !== null && _d !== void 0 ? _d : '{}');
|
|
32
72
|
}
|
|
33
73
|
catch (_e) {
|
|
34
|
-
|
|
74
|
+
json = {};
|
|
35
75
|
}
|
|
36
76
|
for (const block of blocks) {
|
|
37
77
|
for (const field of block.fields) {
|
|
38
78
|
if ('optional' in field) {
|
|
39
79
|
if (!field.optional) {
|
|
40
80
|
const path = [block.parent_id, block.id, field.id].filter(v => !!v);
|
|
41
|
-
if (!has(
|
|
42
|
-
|
|
43
|
-
return 'additional-fields:v8n_invalid';
|
|
44
|
-
}
|
|
45
|
-
}
|
|
81
|
+
if (!has(json, path) && field.type !== 'checkbox')
|
|
82
|
+
return 'json:v8n_invalid';
|
|
46
83
|
}
|
|
47
84
|
}
|
|
48
85
|
}
|
|
@@ -52,100 +89,116 @@ export class PaymentsApiFraudProtectionForm extends TranslatableMixin(InternalFo
|
|
|
52
89
|
];
|
|
53
90
|
}
|
|
54
91
|
renderBody() {
|
|
55
|
-
|
|
56
|
-
|
|
92
|
+
return this.form.type
|
|
93
|
+
? this.__renderFraudProtectionConfig(this.form.type)
|
|
94
|
+
: this.__renderFraudProtectionSelector();
|
|
95
|
+
}
|
|
96
|
+
get __availableFraudProtectionsLoader() {
|
|
97
|
+
return this.renderRoot.querySelector(`#${this.__availableFraudProtectionsLoaderId}`);
|
|
98
|
+
}
|
|
99
|
+
get __availableFraudProtectionsHref() {
|
|
57
100
|
try {
|
|
58
101
|
const presetIdRegex = /\/payment_presets\/(?<presetId>.+)\//;
|
|
59
|
-
const
|
|
60
|
-
|
|
102
|
+
const pathname = new URL(this.href || this.parent).pathname;
|
|
103
|
+
const presetId = presetIdRegex.exec(pathname).groups.presetId;
|
|
61
104
|
const url = new URL(`/payment_presets/${presetId}/available_fraud_protections`, this.href || this.parent);
|
|
62
|
-
|
|
105
|
+
return url.toString();
|
|
63
106
|
}
|
|
64
|
-
catch (
|
|
65
|
-
|
|
107
|
+
catch (_a) {
|
|
108
|
+
// ignore
|
|
66
109
|
}
|
|
67
|
-
|
|
110
|
+
}
|
|
111
|
+
get __availableFraudProtections() {
|
|
112
|
+
var _a, _b;
|
|
113
|
+
return (_b = (_a = this.__availableFraudProtectionsLoader) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b.values;
|
|
114
|
+
}
|
|
115
|
+
__renderFraudProtectionSelector() {
|
|
116
|
+
var _a;
|
|
68
117
|
const defaultSrc = PaymentsApiFraudProtectionForm.defaultImageSrc;
|
|
69
118
|
return html `
|
|
70
119
|
<foxy-nucleon
|
|
71
120
|
class="hidden"
|
|
72
|
-
|
|
73
|
-
|
|
121
|
+
infer=""
|
|
122
|
+
href=${ifDefined(this.__availableFraudProtectionsHref)}
|
|
123
|
+
id=${this.__availableFraudProtectionsLoaderId}
|
|
74
124
|
@update=${() => this.requestUpdate()}
|
|
75
125
|
>
|
|
76
126
|
</foxy-nucleon>
|
|
77
127
|
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
alt=""
|
|
85
|
-
@error=${(evt) => (evt.currentTarget.src = defaultSrc)}
|
|
86
|
-
/>
|
|
128
|
+
<foxy-i18n
|
|
129
|
+
class="block text-xxl font-bold border-b border-contrast-10 pb-m"
|
|
130
|
+
infer=""
|
|
131
|
+
key="select_protection_title"
|
|
132
|
+
>
|
|
133
|
+
</foxy-i18n>
|
|
87
134
|
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
135
|
+
<div data-testid="select-protection-list">
|
|
136
|
+
<ul class="-my-s grid grid-cols-1">
|
|
137
|
+
${Object.entries((_a = this.__availableFraudProtections) !== null && _a !== void 0 ? _a : {}).map(([type, helper]) => {
|
|
138
|
+
var _a, _b;
|
|
139
|
+
return html `
|
|
140
|
+
<li class="-mx-s">
|
|
141
|
+
<button
|
|
142
|
+
class="w-full block text-left hover-bg-contrast-5 p-s rounded"
|
|
143
|
+
@click=${() => this.edit({ type: type, helper })}
|
|
144
|
+
>
|
|
145
|
+
<figure class="flex items-center gap-m h-m">
|
|
146
|
+
<img
|
|
147
|
+
class="relative h-m w-m object-cover rounded-full bg-contrast-20 flex-shrink-0 shadow-xs"
|
|
148
|
+
src=${(_b = (_a = this.getImageSrc) === null || _a === void 0 ? void 0 : _a.call(this, type)) !== null && _b !== void 0 ? _b : defaultSrc}
|
|
149
|
+
alt=""
|
|
150
|
+
@error=${(evt) => {
|
|
151
|
+
evt.currentTarget.src = defaultSrc;
|
|
152
|
+
}}
|
|
153
|
+
/>
|
|
92
154
|
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
155
|
+
<figcaption class="min-w-0 flex-1 truncate leading-s font-semibold">
|
|
156
|
+
${helper.name}​
|
|
157
|
+
</figcaption>
|
|
158
|
+
</figure>
|
|
159
|
+
</button>
|
|
160
|
+
</li>
|
|
161
|
+
`;
|
|
162
|
+
})}
|
|
163
|
+
</ul>
|
|
164
|
+
</div>
|
|
165
|
+
`;
|
|
166
|
+
}
|
|
167
|
+
__renderFraudProtectionConfig(type) {
|
|
168
|
+
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
169
|
+
const defaultSrc = PaymentsApiFraudProtectionForm.defaultImageSrc;
|
|
170
|
+
return html `
|
|
171
|
+
<figure data-testid="logo" class="relative flex flex-col gap-m p-m items-center">
|
|
172
|
+
<img
|
|
173
|
+
class="relative h-xl w-xl object-cover rounded-full bg-contrast-20 flex-shrink-0 shadow-xs"
|
|
174
|
+
src=${(_b = (_a = this.getImageSrc) === null || _a === void 0 ? void 0 : _a.call(this, type)) !== null && _b !== void 0 ? _b : defaultSrc}
|
|
175
|
+
alt=""
|
|
176
|
+
@error=${(evt) => (evt.currentTarget.src = defaultSrc)}
|
|
177
|
+
/>
|
|
103
178
|
|
|
104
|
-
|
|
179
|
+
<figcaption class="relative min-w-0 font-bold text-xl text-center">
|
|
180
|
+
${(_d = (_c = this.form.helper) === null || _c === void 0 ? void 0 : _c.name) !== null && _d !== void 0 ? _d : this.form.type}​
|
|
181
|
+
</figcaption>
|
|
182
|
+
</figure>
|
|
105
183
|
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
</vaadin-button>
|
|
111
|
-
`}
|
|
112
|
-
${super.renderBody()}
|
|
184
|
+
<foxy-internal-text-control infer="description"></foxy-internal-text-control>
|
|
185
|
+
${((_e = this.form.helper) === null || _e === void 0 ? void 0 : _e.uses_rejection_threshold) ? html `
|
|
186
|
+
<foxy-internal-integer-control infer="score-threshold-reject">
|
|
187
|
+
</foxy-internal-integer-control>
|
|
113
188
|
`
|
|
189
|
+
: ''}
|
|
190
|
+
${(_g = (_f = this.form.helper) === null || _f === void 0 ? void 0 : _f.json) === null || _g === void 0 ? void 0 : _g.blocks.map(block => this.__renderBlock(block))}
|
|
191
|
+
${((_h = this.data) === null || _h === void 0 ? void 0 : _h.type) ? ''
|
|
114
192
|
: html `
|
|
115
|
-
<
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
193
|
+
<vaadin-button
|
|
194
|
+
data-testid="select-another-button"
|
|
195
|
+
theme="contrast"
|
|
196
|
+
@click=${() => this.undo()}
|
|
119
197
|
>
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
<div>
|
|
123
|
-
<div class="-my-s grid grid-cols-1">
|
|
124
|
-
${Object.entries((_k = availableFraudProtections === null || availableFraudProtections === void 0 ? void 0 : availableFraudProtections.values) !== null && _k !== void 0 ? _k : {}).map(([type, helper]) => {
|
|
125
|
-
var _a, _b;
|
|
126
|
-
return html `
|
|
127
|
-
<button
|
|
128
|
-
class="block text-left hover-bg-contrast-5 p-s rounded-t-l rounded-b-l -mx-s"
|
|
129
|
-
@click=${() => this.edit({ type: type, helper })}
|
|
130
|
-
>
|
|
131
|
-
<figure class="flex items-center gap-m h-m">
|
|
132
|
-
<img
|
|
133
|
-
class="relative h-m w-m object-cover rounded-full bg-contrast-20 flex-shrink-0 shadow-xs"
|
|
134
|
-
src=${(_b = (_a = this.getImageSrc) === null || _a === void 0 ? void 0 : _a.call(this, type)) !== null && _b !== void 0 ? _b : defaultSrc}
|
|
135
|
-
alt=""
|
|
136
|
-
@error=${(evt) => (evt.currentTarget.src = defaultSrc)}
|
|
137
|
-
/>
|
|
138
|
-
|
|
139
|
-
<figcaption class="min-w-0 flex-1 truncate leading-s font-semibold">
|
|
140
|
-
${helper.name}​
|
|
141
|
-
</figcaption>
|
|
142
|
-
</figure>
|
|
143
|
-
</button>
|
|
144
|
-
`;
|
|
145
|
-
})}
|
|
146
|
-
</div>
|
|
147
|
-
</div>
|
|
198
|
+
<foxy-i18n infer="" key="select_another_button_label"></foxy-i18n>
|
|
199
|
+
</vaadin-button>
|
|
148
200
|
`}
|
|
201
|
+
${super.renderBody()}
|
|
149
202
|
`;
|
|
150
203
|
}
|
|
151
204
|
__renderBlock(block) {
|
|
@@ -176,14 +229,17 @@ export class PaymentsApiFraudProtectionForm extends TranslatableMixin(InternalFo
|
|
|
176
229
|
this.edit({ json: JSON.stringify(set(config, path, newValue)) });
|
|
177
230
|
};
|
|
178
231
|
const options = field.options;
|
|
232
|
+
const path = [block.parent_id, block.id, field.id].filter(v => !!v);
|
|
233
|
+
const scope = ['json', ...path].join('-').replace(/_/g, '-');
|
|
179
234
|
return html `
|
|
180
235
|
${field.type === 'checkbox'
|
|
181
236
|
? html `
|
|
182
237
|
<foxy-internal-checkbox-group-control
|
|
183
238
|
helper-text=${(_a = field.description) !== null && _a !== void 0 ? _a : ''}
|
|
184
239
|
label=""
|
|
240
|
+
infer=${scope}
|
|
185
241
|
.options=${[{ label: field.name, value: 'checked' }]}
|
|
186
|
-
.getValue=${getValue}
|
|
242
|
+
.getValue=${() => (getValue() ? ['checked'] : [])}
|
|
187
243
|
.setValue=${(newValue) => setValue(newValue.includes('checked'))}
|
|
188
244
|
>
|
|
189
245
|
</foxy-internal-checkbox-group-control>
|
|
@@ -194,6 +250,7 @@ export class PaymentsApiFraudProtectionForm extends TranslatableMixin(InternalFo
|
|
|
194
250
|
helper-text=${(_b = field.description) !== null && _b !== void 0 ? _b : ''}
|
|
195
251
|
placeholder=${(_e = (_d = (_c = field.options) === null || _c === void 0 ? void 0 : _c.find(o => o.value === field.default_value)) === null || _d === void 0 ? void 0 : _d.name) !== null && _e !== void 0 ? _e : this.t('default_additional_field_placeholder')}
|
|
196
252
|
label=${field.name}
|
|
253
|
+
infer=${scope}
|
|
197
254
|
.options=${options.map(({ name, value }) => ({ label: name, value }))}
|
|
198
255
|
.getValue=${getValue}
|
|
199
256
|
.setValue=${setValue}
|
|
@@ -205,6 +262,7 @@ export class PaymentsApiFraudProtectionForm extends TranslatableMixin(InternalFo
|
|
|
205
262
|
helper-text=${(_f = field.description) !== null && _f !== void 0 ? _f : ''}
|
|
206
263
|
placeholder=${field.default_value || this.t('default_additional_field_placeholder')}
|
|
207
264
|
label=${field.name}
|
|
265
|
+
infer=${scope}
|
|
208
266
|
.getValue=${getValue}
|
|
209
267
|
.setValue=${setValue}
|
|
210
268
|
>
|
package/dist/elements/public/PaymentsApiFraudProtectionForm/PaymentsApiFraudProtectionForm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PaymentsApiFraudProtectionForm.js","sourceRoot":"","sources":["../../../../src/elements/public/PaymentsApiFraudProtectionForm/PaymentsApiFraudProtectionForm.ts"],"names":[],"mappings":"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","sourcesContent":["import type { AvailableFraudProtections } from '../PaymentsApi/api/types';\nimport type { PropertyDeclarations } from 'lit-element';\nimport type { NucleonElement } from '../NucleonElement/NucleonElement';\nimport type { TemplateResult } from 'lit-html';\nimport type { Block, Data } from './types';\nimport type { NucleonV8N } from '../NucleonElement/types';\n\nimport { TranslatableMixin } from '../../../mixins/translatable';\nimport { InternalForm } from '../../internal/InternalForm/InternalForm';\nimport { html } from 'lit-html';\n\nimport get from 'lodash-es/get';\nimport set from 'lodash-es/set';\nimport has from 'lodash-es/has';\n\nexport class PaymentsApiFraudProtectionForm extends TranslatableMixin(\n InternalForm,\n 'payments-api-fraud-protection-form'\n)<Data> {\n static get defaultImageSrc(): string {\n return \"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 44 44'%3E%3Cpath fill='%23fff' d='M0 20.73v-9.9L10.83 0h9.9L0 20.73ZM0 0h9.41L0 9.41V0Zm0 22.14L22.14 0h9.9l-9.43 9.44-.61-.27-10.5 4.66v7-.29L0 32.04v-9.9Zm11.54-.23L0 33.46v9.9l14.14-14.14a15 15 0 0 1-2.6-7.3Zm3.2 8.12L.77 44h9.9l9.7-9.7a13.75 13.75 0 0 1-5.63-4.27Zm6.67 4.64L12.08 44h9.9L44 21.98v-9.9L32.16 23.92C31.01 29.15 27.05 33.6 22 34.83l-.59-.16Zm11.02-12.43L44 10.67V.77L31.42 13.35l1.08.48v7a13 13 0 0 1-.07 1.4Zm-1.99-9.32L43.35 0h-9.9l-9.87 9.87 6.86 3.05ZM23.4 44 44 23.4v9.9L33.3 44h-9.9Zm11.31 0L44 34.71V44h-9.29Z'/%3E%3Cpath fill='%23fff' d='M30.17 21.99H22V11.72l-8.17 3.63V22H22v10.42c4.34-1.34 7.55-5.63 8.17-10.43Z'/%3E%3C/svg%3E\";\n }\n\n static get properties(): PropertyDeclarations {\n return {\n ...super.properties,\n getImageSrc: { attribute: false },\n };\n }\n\n static get v8n(): NucleonV8N<Data> {\n return [\n ({ description: v }) => !v || v.length <= 100 || 'description:v8n_too_long',\n ({ type: v }) => !!v || 'type:v8n_required',\n ({ score_threshold_reject: v }) =>\n typeof v !== 'number' || (v <= 100 && v >= 0) || 'score-threshold-reject:v8n_out_of_range',\n\n form => {\n const blocks = form.helper?.json?.blocks ?? [];\n let additionalFields: Record<string, unknown>;\n\n try {\n additionalFields = JSON.parse(form.json ?? '{}');\n } catch {\n additionalFields = {};\n }\n\n for (const block of blocks) {\n for (const field of block.fields) {\n if ('optional' in (field as Record<string, unknown>)) {\n if (!(field as Record<string, unknown>).optional) {\n const path = [block.parent_id, block.id, field.id].filter(v => !!v);\n\n if (!has(additionalFields, path)) {\n if (field.type !== 'checkbox') {\n return 'additional-fields:v8n_invalid';\n }\n }\n }\n }\n }\n }\n\n return true;\n },\n ];\n }\n\n getImageSrc: ((type: string) => string) | null = null;\n\n renderBody(): TemplateResult {\n let availableFraudProtectionsUrl: string;\n\n try {\n const presetIdRegex = /\\/payment_presets\\/(?<presetId>.+)\\//;\n const presetId = presetIdRegex.exec(new URL(this.href || this.parent).pathname)!.groups!\n .presetId;\n const url = new URL(\n `/payment_presets/${presetId}/available_fraud_protections`,\n this.href || this.parent\n );\n\n availableFraudProtectionsUrl = url.toString();\n } catch {\n availableFraudProtectionsUrl = '';\n }\n\n const availableFraudProtections = this.renderRoot.querySelector<\n NucleonElement<AvailableFraudProtections>\n >('#available-fraud-protections')?.data;\n\n const defaultSrc = PaymentsApiFraudProtectionForm.defaultImageSrc;\n\n return html`\n <foxy-nucleon\n class=\"hidden\"\n href=${availableFraudProtectionsUrl}\n id=\"available-fraud-protections\"\n @update=${() => this.requestUpdate()}\n >\n </foxy-nucleon>\n\n ${this.form.type\n ? html`\n <figure class=\"relative flex flex-col gap-m p-m items-center\">\n <img\n class=\"relative h-xl w-xl object-cover rounded-full bg-contrast-20 flex-shrink-0 shadow-xs\"\n src=${this.getImageSrc?.(this.form.type) ?? defaultSrc}\n alt=\"\"\n @error=${(evt: Event) => ((evt.currentTarget as HTMLImageElement).src = defaultSrc)}\n />\n\n <figcaption class=\"relative min-w-0 font-bold text-xl text-center\">\n ${this.form.helper?.name ?? this.form.type}​\n </figcaption>\n </figure>\n\n <div\n class=\"rounded-t-l rounded-b-l border border-contrast-10 p-m grid grid-cols-1 gap-m\"\n >\n ${this.form.helper?.uses_rejection_threshold\n ? html`\n <foxy-internal-integer-control infer=\"score-threshold-reject\">\n </foxy-internal-integer-control>\n `\n : ''}\n ${this.form.helper?.json?.blocks.map(block => this.__renderBlock(block))}\n </div>\n\n <foxy-internal-text-control infer=\"description\"></foxy-internal-text-control>\n\n ${this.data?.type\n ? ''\n : html`\n <vaadin-button theme=\"contrast\" @click=${() => this.undo()}>\n <foxy-i18n infer=\"\" key=\"select_another_button_label\"></foxy-i18n>\n </vaadin-button>\n `}\n ${super.renderBody()}\n `\n : html`\n <foxy-i18n\n class=\"block text-xxl font-bold border-b border-contrast-10 pb-m\"\n infer=\"\"\n key=\"select_protection_title\"\n >\n </foxy-i18n>\n\n <div>\n <div class=\"-my-s grid grid-cols-1\">\n ${Object.entries(availableFraudProtections?.values ?? {}).map(([type, helper]) => {\n return html`\n <button\n class=\"block text-left hover-bg-contrast-5 p-s rounded-t-l rounded-b-l -mx-s\"\n @click=${() => this.edit({ type: type as Data['type'], helper })}\n >\n <figure class=\"flex items-center gap-m h-m\">\n <img\n class=\"relative h-m w-m object-cover rounded-full bg-contrast-20 flex-shrink-0 shadow-xs\"\n src=${this.getImageSrc?.(type) ?? defaultSrc}\n alt=\"\"\n @error=${(evt: Event) =>\n ((evt.currentTarget as HTMLImageElement).src = defaultSrc)}\n />\n\n <figcaption class=\"min-w-0 flex-1 truncate leading-s font-semibold\">\n ${helper.name}​\n </figcaption>\n </figure>\n </button>\n `;\n })}\n </div>\n </div>\n `}\n `;\n }\n\n private __renderBlock(block: Block) {\n return html`${block.fields.map(field => {\n const getValue = () => {\n let config: any;\n\n try {\n config = JSON.parse(this.form.json ?? '');\n } catch {\n config = {};\n }\n\n const path = [block.parent_id, block.id, field.id].filter(v => !!v);\n return get(config, path) ?? config.default_value;\n };\n\n const setValue = (newValue: unknown) => {\n let config: any;\n\n try {\n config = JSON.parse(this.form.json ?? '');\n } catch {\n config = {};\n }\n\n const path = [block.parent_id, block.id, field.id].filter(v => !!v);\n this.edit({ json: JSON.stringify(set(config, path, newValue)) });\n };\n\n type Option = { name: string; value: string };\n const options = (field as { options?: Option[] }).options;\n\n return html`\n ${field.type === 'checkbox'\n ? html`\n <foxy-internal-checkbox-group-control\n helper-text=${field.description ?? ''}\n label=\"\"\n .options=${[{ label: field.name, value: 'checked' }]}\n .getValue=${getValue}\n .setValue=${(newValue: string[]) => setValue(newValue.includes('checked'))}\n >\n </foxy-internal-checkbox-group-control>\n `\n : field.type === 'select'\n ? html`\n <foxy-internal-select-control\n helper-text=${field.description ?? ''}\n placeholder=${field.options?.find(o => o.value === field.default_value)?.name ??\n this.t('default_additional_field_placeholder')}\n label=${field.name}\n .options=${options!.map(({ name, value }) => ({ label: name, value }))}\n .getValue=${getValue}\n .setValue=${setValue}\n >\n </foxy-internal-select-control>\n `\n : html`\n <foxy-internal-text-control\n helper-text=${field.description ?? ''}\n placeholder=${field.default_value || this.t('default_additional_field_placeholder')}\n label=${field.name}\n .getValue=${getValue}\n .setValue=${setValue}\n >\n </foxy-internal-text-control>\n `}\n `;\n })}`;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"PaymentsApiFraudProtectionForm.js","sourceRoot":"","sources":["../../../../src/elements/public/PaymentsApiFraudProtectionForm/PaymentsApiFraudProtectionForm.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,iBAAiB,EAAE,wCAAqC;AACjE,OAAO,EAAE,YAAY,EAAE,oDAAiD;AACxE,OAAO,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAC3D,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAEhC,OAAO,GAAG,MAAM,eAAe,CAAC;AAChC,OAAO,GAAG,MAAM,eAAe,CAAC;AAChC,OAAO,GAAG,MAAM,eAAe,CAAC;AAEhC,MAAM,EAAE,GAAG,oCAAoC,CAAC;AAChD,MAAM,IAAI,GAAG,iBAAiB,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;AAEjD;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,MAAM,OAAO,8BAA+B,SAAQ,IAAU;IAA9D;;QAiDE,wFAAwF;QACxF,gBAAW,GAAsC,IAAI,CAAC;QAEtD,sDAAsD;QACtD,cAAS,GAAc,EAAE,CAAC;QAET,wCAAmC,GAAG,2BAA2B,CAAC;IAuMrF,CAAC;IA7PC,MAAM,KAAK,eAAe;QACxB,OAAO,uuBAAuuB,CAAC;IACjvB,CAAC;IAED,MAAM,KAAK,UAAU;QACnB,OAAO;YACL,GAAG,KAAK,CAAC,UAAU;YACnB,WAAW,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE;SAClC,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,GAAG;QACZ,OAAO;YACL,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,GAAG,IAAI,0BAA0B;YAE3E,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,mBAAmB;YAE3C,CAAC,EAAE,sBAAsB,EAAE,CAAC,EAAE,EAAE,EAAE;gBAChC,IAAI,OAAO,CAAC,KAAK,QAAQ;oBAAE,OAAO,IAAI,CAAC;gBACvC,OAAO,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,yCAAyC,CAAC;YAC3E,CAAC;YAED,IAAI,CAAC,EAAE;;gBACL,MAAM,MAAM,qBAAG,IAAI,CAAC,MAAM,0CAAE,IAAI,0CAAE,MAAM,mCAAI,EAAE,CAAC;gBAC/C,IAAI,IAA6B,CAAC;gBAElC,IAAI;oBACF,IAAI,GAAG,IAAI,CAAC,KAAK,OAAC,IAAI,CAAC,IAAI,mCAAI,IAAI,CAAC,CAAC;iBACtC;gBAAC,WAAM;oBACN,IAAI,GAAG,EAAE,CAAC;iBACX;gBAED,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;oBAC1B,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE;wBAChC,IAAI,UAAU,IAAK,KAAiC,EAAE;4BACpD,IAAI,CAAE,KAAiC,CAAC,QAAQ,EAAE;gCAChD,MAAM,IAAI,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gCACpE,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU;oCAAE,OAAO,kBAAkB,CAAC;6BAC9E;yBACF;qBACF;iBACF;gBAED,OAAO,IAAI,CAAC;YACd,CAAC;SACF,CAAC;IACJ,CAAC;IAUD,UAAU;QACR,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI;YACnB,CAAC,CAAC,IAAI,CAAC,6BAA6B,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;YACpD,CAAC,CAAC,IAAI,CAAC,+BAA+B,EAAE,CAAC;IAC7C,CAAC;IAED,IAAY,iCAAiC;QAE3C,OAAO,IAAI,CAAC,UAAU,CAAC,aAAa,CAAS,IAAI,IAAI,CAAC,mCAAmC,EAAE,CAAC,CAAC;IAC/F,CAAC;IAED,IAAY,+BAA+B;QACzC,IAAI;YACF,MAAM,aAAa,GAAG,sCAAsC,CAAC;YAC7D,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC;YAC5D,MAAM,QAAQ,GAAG,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAE,CAAC,MAAO,CAAC,QAAQ,CAAC;YAChE,MAAM,GAAG,GAAG,IAAI,GAAG,CACjB,oBAAoB,QAAQ,8BAA8B,EAC1D,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,CACzB,CAAC;YAEF,OAAO,GAAG,CAAC,QAAQ,EAAE,CAAC;SACvB;QAAC,WAAM;YACN,SAAS;SACV;IACH,CAAC;IAED,IAAY,2BAA2B;;QACrC,mBAAO,IAAI,CAAC,iCAAiC,0CAAE,IAAI,0CAAE,MAAM,CAAC;IAC9D,CAAC;IAEO,+BAA+B;;QACrC,MAAM,UAAU,GAAG,8BAA8B,CAAC,eAAe,CAAC;QAElE,OAAO,IAAI,CAAA;;;;eAIA,SAAS,CAAC,IAAI,CAAC,+BAA+B,CAAC;aACjD,IAAI,CAAC,mCAAmC;kBACnC,GAAG,EAAE,CAAC,IAAI,CAAC,aAAa,EAAE;;;;;;;;;;;;;YAahC,MAAM,CAAC,OAAO,OAAC,IAAI,CAAC,2BAA2B,mCAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,EAAE;;YAC9E,OAAO,IAAI,CAAA;;;;2BAII,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAoB,EAAE,MAAM,EAAE,CAAC;;;;;4BAKtD,YAAA,IAAI,CAAC,WAAW,+CAAhB,IAAI,EAAe,IAAI,oCAAK,UAAU;;+BAEnC,CAAC,GAAU,EAAE,EAAE;gBACrB,GAAG,CAAC,aAAkC,CAAC,GAAG,GAAG,UAAU,CAAC;YAC3D,CAAC;;;;wBAIC,MAAM,CAAC,IAAI;;;;;aAKtB,CAAC;QACJ,CAAC,CAAC;;;KAGP,CAAC;IACJ,CAAC;IAEO,6BAA6B,CAAC,IAAY;;QAChD,MAAM,UAAU,GAAG,8BAA8B,CAAC,eAAe,CAAC;QAElE,OAAO,IAAI,CAAA;;;;gBAIC,YAAA,IAAI,CAAC,WAAW,+CAAhB,IAAI,EAAe,IAAI,oCAAK,UAAU;;mBAEnC,CAAC,GAAU,EAAE,EAAE,CAAC,CAAE,GAAG,CAAC,aAAkC,CAAC,GAAG,GAAG,UAAU,CAAC;;;;YAIjF,YAAA,IAAI,CAAC,IAAI,CAAC,MAAM,0CAAE,IAAI,mCAAI,IAAI,CAAC,IAAI,CAAC,IAAI;;;;;QAK5C,OAAA,IAAI,CAAC,IAAI,CAAC,MAAM,0CAAE,wBAAwB,EAC1C,CAAC,CAAC,IAAI,CAAA;;;WAGH;YACH,CAAC,CAAC,EAAE;QACJ,YAAA,IAAI,CAAC,IAAI,CAAC,MAAM,0CAAE,IAAI,0CAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QACtE,OAAA,IAAI,CAAC,IAAI,0CAAE,IAAI,EACf,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,IAAI,CAAA;;;;uBAIS,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE;;;;WAI7B;QACH,KAAK,CAAC,UAAU,EAAE;KACrB,CAAC;IACJ,CAAC;IAEO,aAAa,CAAC,KAAY;QAChC,OAAO,IAAI,CAAA,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;;YACrC,MAAM,QAAQ,GAAG,GAAG,EAAE;;gBACpB,IAAI,MAAW,CAAC;gBAEhB,IAAI;oBACF,MAAM,GAAG,IAAI,CAAC,KAAK,OAAC,IAAI,CAAC,IAAI,CAAC,IAAI,mCAAI,EAAE,CAAC,CAAC;iBAC3C;gBAAC,WAAM;oBACN,MAAM,GAAG,EAAE,CAAC;iBACb;gBAED,MAAM,IAAI,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACpE,aAAO,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,mCAAI,MAAM,CAAC,aAAa,CAAC;YACnD,CAAC,CAAC;YAEF,MAAM,QAAQ,GAAG,CAAC,QAAiB,EAAE,EAAE;;gBACrC,IAAI,MAAW,CAAC;gBAEhB,IAAI;oBACF,MAAM,GAAG,IAAI,CAAC,KAAK,OAAC,IAAI,CAAC,IAAI,CAAC,IAAI,mCAAI,EAAE,CAAC,CAAC;iBAC3C;gBAAC,WAAM;oBACN,MAAM,GAAG,EAAE,CAAC;iBACb;gBAED,MAAM,IAAI,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACpE,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC;YACnE,CAAC,CAAC;YAGF,MAAM,OAAO,GAAI,KAAgC,CAAC,OAAO,CAAC;YAC1D,MAAM,IAAI,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACpE,MAAM,KAAK,GAAG,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YAE7D,OAAO,IAAI,CAAA;UACP,KAAK,CAAC,IAAI,KAAK,UAAU;gBACzB,CAAC,CAAC,IAAI,CAAA;;8BAEc,MAAA,KAAK,CAAC,WAAW,mCAAI,EAAE;;wBAE7B,KAAK;2BACF,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;4BACxC,GAAG,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;4BACrC,CAAC,QAAkB,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;;;aAG7E;gBACH,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ;oBACzB,CAAC,CAAC,IAAI,CAAA;;8BAEc,MAAA,KAAK,CAAC,WAAW,mCAAI,EAAE;8BACvB,kBAAA,KAAK,CAAC,OAAO,0CAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,aAAa,2CAAG,IAAI,mCAC7E,IAAI,CAAC,CAAC,CAAC,sCAAsC,CAAC;wBACtC,KAAK,CAAC,IAAI;wBACV,KAAK;2BACF,OAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;4BAC1D,QAAQ;4BACR,QAAQ;;;aAGvB;oBACH,CAAC,CAAC,IAAI,CAAA;;8BAEc,MAAA,KAAK,CAAC,WAAW,mCAAI,EAAE;8BACvB,KAAK,CAAC,aAAa,IAAI,IAAI,CAAC,CAAC,CAAC,sCAAsC,CAAC;wBAC3E,KAAK,CAAC,IAAI;wBACV,KAAK;4BACD,QAAQ;4BACR,QAAQ;;;aAGvB;OACN,CAAC;QACJ,CAAC,CAAC,EAAE,CAAC;IACP,CAAC;CACF","sourcesContent":["import type { AvailableFraudProtections } from '../PaymentsApi/api/types';\nimport type { Templates, Block, Data } from './types';\nimport type { PropertyDeclarations } from 'lit-element';\nimport type { NucleonElement } from '../NucleonElement/NucleonElement';\nimport type { TemplateResult } from 'lit-html';\nimport type { NucleonV8N } from '../NucleonElement/types';\n\nimport { TranslatableMixin } from '../../../mixins/translatable';\nimport { InternalForm } from '../../internal/InternalForm/InternalForm';\nimport { ifDefined } from 'lit-html/directives/if-defined';\nimport { html } from 'lit-html';\n\nimport get from 'lodash-es/get';\nimport set from 'lodash-es/set';\nimport has from 'lodash-es/has';\n\nconst NS = 'payments-api-fraud-protection-form';\nconst Base = TranslatableMixin(InternalForm, NS);\n\n/**\n * Form element for the `fx:fraud_protection` resource of Payments API.\n *\n * _Payments API is a client-side virtual API layer built on top of hAPI\n * in an attempt to streamline access to stores' payment method settings\n * that is currently a bit quirky due to the legacy functionality. To use\n * this element with hAPI, wrap it into a foxy-payments-api node._\n *\n * @slot description:before\n * @slot description:after\n *\n * @slot score-threshold-reject:before\n * @slot score-threshold-reject:after\n *\n * @slot json-[field-name-in-kebab-case]:before\n * @slot json-[field-name-in-kebab-case]:after\n *\n * @slot timestamps:before\n * @slot timestamps:after\n *\n * @slot create:before\n * @slot create:after\n *\n * @slot delete:before\n * @slot delete:after\n *\n * @element foxy-payments-api-fraud-protection-form\n * @since 1.21.0\n */\nexport class PaymentsApiFraudProtectionForm extends Base<Data> {\n static get defaultImageSrc(): string {\n return \"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 44 44'%3E%3Cpath fill='%23fff' d='M0 20.73v-9.9L10.83 0h9.9L0 20.73ZM0 0h9.41L0 9.41V0Zm0 22.14L22.14 0h9.9l-9.43 9.44-.61-.27-10.5 4.66v7-.29L0 32.04v-9.9Zm11.54-.23L0 33.46v9.9l14.14-14.14a15 15 0 0 1-2.6-7.3Zm3.2 8.12L.77 44h9.9l9.7-9.7a13.75 13.75 0 0 1-5.63-4.27Zm6.67 4.64L12.08 44h9.9L44 21.98v-9.9L32.16 23.92C31.01 29.15 27.05 33.6 22 34.83l-.59-.16Zm11.02-12.43L44 10.67V.77L31.42 13.35l1.08.48v7a13 13 0 0 1-.07 1.4Zm-1.99-9.32L43.35 0h-9.9l-9.87 9.87 6.86 3.05ZM23.4 44 44 23.4v9.9L33.3 44h-9.9Zm11.31 0L44 34.71V44h-9.29Z'/%3E%3Cpath fill='%23fff' d='M30.17 21.99H22V11.72l-8.17 3.63V22H22v10.42c4.34-1.34 7.55-5.63 8.17-10.43Z'/%3E%3C/svg%3E\";\n }\n\n static get properties(): PropertyDeclarations {\n return {\n ...super.properties,\n getImageSrc: { attribute: false },\n };\n }\n\n static get v8n(): NucleonV8N<Data> {\n return [\n ({ description: v }) => !v || v.length <= 100 || 'description:v8n_too_long',\n\n ({ type: v }) => !!v || 'type:v8n_required',\n\n ({ score_threshold_reject: v }) => {\n if (typeof v !== 'number') return true;\n return (v <= 100 && v >= 0) || 'score-threshold-reject:v8n_out_of_range';\n },\n\n form => {\n const blocks = form.helper?.json?.blocks ?? [];\n let json: Record<string, unknown>;\n\n try {\n json = JSON.parse(form.json ?? '{}');\n } catch {\n json = {};\n }\n\n for (const block of blocks) {\n for (const field of block.fields) {\n if ('optional' in (field as Record<string, unknown>)) {\n if (!(field as Record<string, unknown>).optional) {\n const path = [block.parent_id, block.id, field.id].filter(v => !!v);\n if (!has(json, path) && field.type !== 'checkbox') return 'json:v8n_invalid';\n }\n }\n }\n }\n\n return true;\n },\n ];\n }\n\n /** A function that returns a URL of a fraud protection icon based on the given type. */\n getImageSrc: ((type: string) => string) | null = null;\n\n /** Template render functions mapped to their name. */\n templates: Templates = {};\n\n private readonly __availableFraudProtectionsLoaderId = 'availableFraudProtections';\n\n renderBody(): TemplateResult {\n return this.form.type\n ? this.__renderFraudProtectionConfig(this.form.type)\n : this.__renderFraudProtectionSelector();\n }\n\n private get __availableFraudProtectionsLoader() {\n type Loader = NucleonElement<AvailableFraudProtections>;\n return this.renderRoot.querySelector<Loader>(`#${this.__availableFraudProtectionsLoaderId}`);\n }\n\n private get __availableFraudProtectionsHref() {\n try {\n const presetIdRegex = /\\/payment_presets\\/(?<presetId>.+)\\//;\n const pathname = new URL(this.href || this.parent).pathname;\n const presetId = presetIdRegex.exec(pathname)!.groups!.presetId;\n const url = new URL(\n `/payment_presets/${presetId}/available_fraud_protections`,\n this.href || this.parent\n );\n\n return url.toString();\n } catch {\n // ignore\n }\n }\n\n private get __availableFraudProtections() {\n return this.__availableFraudProtectionsLoader?.data?.values;\n }\n\n private __renderFraudProtectionSelector() {\n const defaultSrc = PaymentsApiFraudProtectionForm.defaultImageSrc;\n\n return html`\n <foxy-nucleon\n class=\"hidden\"\n infer=\"\"\n href=${ifDefined(this.__availableFraudProtectionsHref)}\n id=${this.__availableFraudProtectionsLoaderId}\n @update=${() => this.requestUpdate()}\n >\n </foxy-nucleon>\n\n <foxy-i18n\n class=\"block text-xxl font-bold border-b border-contrast-10 pb-m\"\n infer=\"\"\n key=\"select_protection_title\"\n >\n </foxy-i18n>\n\n <div data-testid=\"select-protection-list\">\n <ul class=\"-my-s grid grid-cols-1\">\n ${Object.entries(this.__availableFraudProtections ?? {}).map(([type, helper]) => {\n return html`\n <li class=\"-mx-s\">\n <button\n class=\"w-full block text-left hover-bg-contrast-5 p-s rounded\"\n @click=${() => this.edit({ type: type as Data['type'], helper })}\n >\n <figure class=\"flex items-center gap-m h-m\">\n <img\n class=\"relative h-m w-m object-cover rounded-full bg-contrast-20 flex-shrink-0 shadow-xs\"\n src=${this.getImageSrc?.(type) ?? defaultSrc}\n alt=\"\"\n @error=${(evt: Event) => {\n (evt.currentTarget as HTMLImageElement).src = defaultSrc;\n }}\n />\n\n <figcaption class=\"min-w-0 flex-1 truncate leading-s font-semibold\">\n ${helper.name}​\n </figcaption>\n </figure>\n </button>\n </li>\n `;\n })}\n </ul>\n </div>\n `;\n }\n\n private __renderFraudProtectionConfig(type: string) {\n const defaultSrc = PaymentsApiFraudProtectionForm.defaultImageSrc;\n\n return html`\n <figure data-testid=\"logo\" class=\"relative flex flex-col gap-m p-m items-center\">\n <img\n class=\"relative h-xl w-xl object-cover rounded-full bg-contrast-20 flex-shrink-0 shadow-xs\"\n src=${this.getImageSrc?.(type) ?? defaultSrc}\n alt=\"\"\n @error=${(evt: Event) => ((evt.currentTarget as HTMLImageElement).src = defaultSrc)}\n />\n\n <figcaption class=\"relative min-w-0 font-bold text-xl text-center\">\n ${this.form.helper?.name ?? this.form.type}​\n </figcaption>\n </figure>\n\n <foxy-internal-text-control infer=\"description\"></foxy-internal-text-control>\n ${this.form.helper?.uses_rejection_threshold\n ? html`\n <foxy-internal-integer-control infer=\"score-threshold-reject\">\n </foxy-internal-integer-control>\n `\n : ''}\n ${this.form.helper?.json?.blocks.map(block => this.__renderBlock(block))}\n ${this.data?.type\n ? ''\n : html`\n <vaadin-button\n data-testid=\"select-another-button\"\n theme=\"contrast\"\n @click=${() => this.undo()}\n >\n <foxy-i18n infer=\"\" key=\"select_another_button_label\"></foxy-i18n>\n </vaadin-button>\n `}\n ${super.renderBody()}\n `;\n }\n\n private __renderBlock(block: Block) {\n return html`${block.fields.map(field => {\n const getValue = () => {\n let config: any;\n\n try {\n config = JSON.parse(this.form.json ?? '');\n } catch {\n config = {};\n }\n\n const path = [block.parent_id, block.id, field.id].filter(v => !!v);\n return get(config, path) ?? config.default_value;\n };\n\n const setValue = (newValue: unknown) => {\n let config: any;\n\n try {\n config = JSON.parse(this.form.json ?? '');\n } catch {\n config = {};\n }\n\n const path = [block.parent_id, block.id, field.id].filter(v => !!v);\n this.edit({ json: JSON.stringify(set(config, path, newValue)) });\n };\n\n type Option = { name: string; value: string };\n const options = (field as { options?: Option[] }).options;\n const path = [block.parent_id, block.id, field.id].filter(v => !!v);\n const scope = ['json', ...path].join('-').replace(/_/g, '-');\n\n return html`\n ${field.type === 'checkbox'\n ? html`\n <foxy-internal-checkbox-group-control\n helper-text=${field.description ?? ''}\n label=\"\"\n infer=${scope}\n .options=${[{ label: field.name, value: 'checked' }]}\n .getValue=${() => (getValue() ? ['checked'] : [])}\n .setValue=${(newValue: string[]) => setValue(newValue.includes('checked'))}\n >\n </foxy-internal-checkbox-group-control>\n `\n : field.type === 'select'\n ? html`\n <foxy-internal-select-control\n helper-text=${field.description ?? ''}\n placeholder=${field.options?.find(o => o.value === field.default_value)?.name ??\n this.t('default_additional_field_placeholder')}\n label=${field.name}\n infer=${scope}\n .options=${options!.map(({ name, value }) => ({ label: name, value }))}\n .getValue=${getValue}\n .setValue=${setValue}\n >\n </foxy-internal-select-control>\n `\n : html`\n <foxy-internal-text-control\n helper-text=${field.description ?? ''}\n placeholder=${field.default_value || this.t('default_additional_field_placeholder')}\n label=${field.name}\n infer=${scope}\n .getValue=${getValue}\n .setValue=${setValue}\n >\n </foxy-internal-text-control>\n `}\n `;\n })}`;\n }\n}\n"]}
|
|
@@ -1,11 +1,10 @@
|
|
|
1
|
-
import '@vaadin/vaadin-
|
|
2
|
-
import '../../internal/InternalAsyncComboBoxControl/index';
|
|
1
|
+
import '@vaadin/vaadin-button';
|
|
3
2
|
import '../../internal/InternalCheckboxGroupControl/index';
|
|
4
|
-
import '../../internal/InternalRadioGroupControl/index';
|
|
5
3
|
import '../../internal/InternalIntegerControl/index';
|
|
6
4
|
import '../../internal/InternalSelectControl/index';
|
|
7
5
|
import '../../internal/InternalTextControl/index';
|
|
8
6
|
import '../../internal/InternalForm/index';
|
|
7
|
+
import '../NucleonElement/index';
|
|
9
8
|
import '../I18n/index';
|
|
10
9
|
import { PaymentsApiFraudProtectionForm } from './PaymentsApiFraudProtectionForm';
|
|
11
10
|
export { PaymentsApiFraudProtectionForm };
|
|
@@ -1,11 +1,10 @@
|
|
|
1
|
-
import '@vaadin/vaadin-
|
|
2
|
-
import "../../internal/InternalAsyncComboBoxControl/index.js";
|
|
1
|
+
import '@vaadin/vaadin-button';
|
|
3
2
|
import "../../internal/InternalCheckboxGroupControl/index.js";
|
|
4
|
-
import "../../internal/InternalRadioGroupControl/index.js";
|
|
5
3
|
import "../../internal/InternalIntegerControl/index.js";
|
|
6
4
|
import "../../internal/InternalSelectControl/index.js";
|
|
7
5
|
import "../../internal/InternalTextControl/index.js";
|
|
8
6
|
import "../../internal/InternalForm/index.js";
|
|
7
|
+
import "../NucleonElement/index.js";
|
|
9
8
|
import "../I18n/index.js";
|
|
10
9
|
import { PaymentsApiFraudProtectionForm } from "./PaymentsApiFraudProtectionForm.js";
|
|
11
10
|
customElements.define('foxy-payments-api-fraud-protection-form', PaymentsApiFraudProtectionForm);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/elements/public/PaymentsApiFraudProtectionForm/index.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/elements/public/PaymentsApiFraudProtectionForm/index.ts"],"names":[],"mappings":"AAAA,OAAO,uBAAuB,CAAC;AAE/B,8DAA2D;AAC3D,wDAAqD;AACrD,uDAAoD;AACpD,qDAAkD;AAClD,8CAA2C;AAE3C,oCAAiC;AACjC,0BAAuB;AAEvB,OAAO,EAAE,8BAA8B,EAAE,4CAAyC;AAElF,cAAc,CAAC,MAAM,CAAC,yCAAyC,EAAE,8BAA8B,CAAC,CAAC;AAEjG,OAAO,EAAE,8BAA8B,EAAE,CAAC","sourcesContent":["import '@vaadin/vaadin-button';\n\nimport '../../internal/InternalCheckboxGroupControl/index';\nimport '../../internal/InternalIntegerControl/index';\nimport '../../internal/InternalSelectControl/index';\nimport '../../internal/InternalTextControl/index';\nimport '../../internal/InternalForm/index';\n\nimport '../NucleonElement/index';\nimport '../I18n/index';\n\nimport { PaymentsApiFraudProtectionForm } from './PaymentsApiFraudProtectionForm';\n\ncustomElements.define('foxy-payments-api-fraud-protection-form', PaymentsApiFraudProtectionForm);\n\nexport { PaymentsApiFraudProtectionForm };\n"]}
|
|
@@ -1,3 +1,18 @@
|
|
|
1
|
+
import type { PaymentsApiFraudProtectionForm } from './PaymentsApiFraudProtectionForm';
|
|
1
2
|
import type { FraudProtection } from '../PaymentsApi/api/types';
|
|
3
|
+
import type { Renderer } from '../../../mixins/configurable';
|
|
2
4
|
export declare type Data = FraudProtection;
|
|
3
5
|
export declare type Block = NonNullable<Data['helper']['json']>['blocks'][number];
|
|
6
|
+
export declare type Templates = {
|
|
7
|
+
'description:before'?: Renderer<PaymentsApiFraudProtectionForm>;
|
|
8
|
+
'description:after'?: Renderer<PaymentsApiFraudProtectionForm>;
|
|
9
|
+
'score-threshold-reject:before'?: Renderer<PaymentsApiFraudProtectionForm>;
|
|
10
|
+
'score-threshold-reject:after'?: Renderer<PaymentsApiFraudProtectionForm>;
|
|
11
|
+
'timestamps:before'?: Renderer<PaymentsApiFraudProtectionForm>;
|
|
12
|
+
'timestamps:after'?: Renderer<PaymentsApiFraudProtectionForm>;
|
|
13
|
+
'create:before'?: Renderer<PaymentsApiFraudProtectionForm>;
|
|
14
|
+
'create:after'?: Renderer<PaymentsApiFraudProtectionForm>;
|
|
15
|
+
'delete:before'?: Renderer<PaymentsApiFraudProtectionForm>;
|
|
16
|
+
'delete:after'?: Renderer<PaymentsApiFraudProtectionForm>;
|
|
17
|
+
[key: string]: Renderer<PaymentsApiFraudProtectionForm> | undefined;
|
|
18
|
+
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/elements/public/PaymentsApiFraudProtectionForm/types.ts"],"names":[],"mappings":"","sourcesContent":["import type { FraudProtection } from '../PaymentsApi/api/types';\n\nexport type Data = FraudProtection;\nexport type Block = NonNullable<Data['helper']['json']>['blocks'][number];\n"]}
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/elements/public/PaymentsApiFraudProtectionForm/types.ts"],"names":[],"mappings":"","sourcesContent":["import type { PaymentsApiFraudProtectionForm } from './PaymentsApiFraudProtectionForm';\nimport type { FraudProtection } from '../PaymentsApi/api/types';\nimport type { Renderer } from '../../../mixins/configurable';\n\nexport type Data = FraudProtection;\nexport type Block = NonNullable<Data['helper']['json']>['blocks'][number];\nexport type Templates = {\n 'description:before'?: Renderer<PaymentsApiFraudProtectionForm>;\n 'description:after'?: Renderer<PaymentsApiFraudProtectionForm>;\n 'score-threshold-reject:before'?: Renderer<PaymentsApiFraudProtectionForm>;\n 'score-threshold-reject:after'?: Renderer<PaymentsApiFraudProtectionForm>;\n 'timestamps:before'?: Renderer<PaymentsApiFraudProtectionForm>;\n 'timestamps:after'?: Renderer<PaymentsApiFraudProtectionForm>;\n 'create:before'?: Renderer<PaymentsApiFraudProtectionForm>;\n 'create:after'?: Renderer<PaymentsApiFraudProtectionForm>;\n 'delete:before'?: Renderer<PaymentsApiFraudProtectionForm>;\n 'delete:after'?: Renderer<PaymentsApiFraudProtectionForm>;\n\n [key: string]: Renderer<PaymentsApiFraudProtectionForm> | undefined;\n};\n"]}
|
|
@@ -1,14 +1,34 @@
|
|
|
1
1
|
import type { PropertyDeclarations } from 'lit-element';
|
|
2
2
|
import type { TemplateResult } from 'lit-html';
|
|
3
3
|
import type { Data } from './types';
|
|
4
|
-
import {
|
|
5
|
-
declare const Base: typeof
|
|
4
|
+
import { TwoLineCard } from '../CustomFieldCard/TwoLineCard';
|
|
5
|
+
declare const Base: typeof TwoLineCard & import("lit-element").Constructor<import("../../../mixins/translatable").TranslatableMixinHost> & {
|
|
6
6
|
defaultNS: string;
|
|
7
7
|
};
|
|
8
|
+
/**
|
|
9
|
+
* Card element representing a `fx:payment_method` resource of Payments API.
|
|
10
|
+
*
|
|
11
|
+
* _Payments API is a client-side virtual API layer built on top of hAPI
|
|
12
|
+
* in an attempt to streamline access to stores' payment method settings
|
|
13
|
+
* that is currently a bit quirky due to the legacy functionality. To use
|
|
14
|
+
* this element with hAPI, wrap it into a foxy-payments-api node._
|
|
15
|
+
*
|
|
16
|
+
* @slot title:before
|
|
17
|
+
* @slot title:after
|
|
18
|
+
*
|
|
19
|
+
* @slot subtitle:before
|
|
20
|
+
* @slot subtitle:after
|
|
21
|
+
*
|
|
22
|
+
* @element foxy-payments-api-payment-method-card
|
|
23
|
+
* @since 1.21.0
|
|
24
|
+
*/
|
|
8
25
|
export declare class PaymentsApiPaymentMethodCard extends Base<Data> {
|
|
9
26
|
static get defaultImageSrc(): string;
|
|
10
27
|
static get properties(): PropertyDeclarations;
|
|
11
|
-
|
|
28
|
+
/**
|
|
29
|
+
* Payment method image/logo URL getter.
|
|
30
|
+
* If left `null`, the card will display the default image.
|
|
31
|
+
*/
|
|
12
32
|
getImageSrc: ((type: string) => string) | null;
|
|
13
33
|
renderBody(): TemplateResult;
|
|
14
34
|
}
|
|
@@ -1,12 +1,32 @@
|
|
|
1
1
|
import { TranslatableMixin } from "../../../mixins/translatable.js";
|
|
2
|
-
import {
|
|
2
|
+
import { TwoLineCard } from "../CustomFieldCard/TwoLineCard.js";
|
|
3
3
|
import { html } from 'lit-html';
|
|
4
4
|
const NS = 'payments-api-payment-method-card';
|
|
5
|
-
const Base = TranslatableMixin(
|
|
5
|
+
const Base = TranslatableMixin(TwoLineCard, NS);
|
|
6
|
+
/**
|
|
7
|
+
* Card element representing a `fx:payment_method` resource of Payments API.
|
|
8
|
+
*
|
|
9
|
+
* _Payments API is a client-side virtual API layer built on top of hAPI
|
|
10
|
+
* in an attempt to streamline access to stores' payment method settings
|
|
11
|
+
* that is currently a bit quirky due to the legacy functionality. To use
|
|
12
|
+
* this element with hAPI, wrap it into a foxy-payments-api node._
|
|
13
|
+
*
|
|
14
|
+
* @slot title:before
|
|
15
|
+
* @slot title:after
|
|
16
|
+
*
|
|
17
|
+
* @slot subtitle:before
|
|
18
|
+
* @slot subtitle:after
|
|
19
|
+
*
|
|
20
|
+
* @element foxy-payments-api-payment-method-card
|
|
21
|
+
* @since 1.21.0
|
|
22
|
+
*/
|
|
6
23
|
export class PaymentsApiPaymentMethodCard extends Base {
|
|
7
24
|
constructor() {
|
|
8
25
|
super(...arguments);
|
|
9
|
-
|
|
26
|
+
/**
|
|
27
|
+
* Payment method image/logo URL getter.
|
|
28
|
+
* If left `null`, the card will display the default image.
|
|
29
|
+
*/
|
|
10
30
|
this.getImageSrc = null;
|
|
11
31
|
}
|
|
12
32
|
static get defaultImageSrc() {
|
|
@@ -15,16 +35,24 @@ export class PaymentsApiPaymentMethodCard extends Base {
|
|
|
15
35
|
static get properties() {
|
|
16
36
|
return {
|
|
17
37
|
...super.properties,
|
|
18
|
-
paymentGatewaysHelper: { type: String, attribute: 'payment-gateways-helper' },
|
|
19
38
|
getImageSrc: { attribute: false },
|
|
20
39
|
};
|
|
21
40
|
}
|
|
22
41
|
renderBody() {
|
|
23
42
|
var _a, _b;
|
|
43
|
+
const defaultLayout = super.renderBody({
|
|
44
|
+
title: data => html `${data.helper.name}`,
|
|
45
|
+
subtitle: data => html `${data.description}`,
|
|
46
|
+
});
|
|
47
|
+
if (!this.in({ idle: 'snapshot' }))
|
|
48
|
+
return defaultLayout;
|
|
24
49
|
const defaultSrc = PaymentsApiPaymentMethodCard.defaultImageSrc;
|
|
25
50
|
const data = this.data;
|
|
26
51
|
return html `
|
|
27
|
-
<figure
|
|
52
|
+
<figure
|
|
53
|
+
class="flex items-center"
|
|
54
|
+
style="gap: calc(0.625em + (var(--lumo-border-radius) / 4) - 1px)"
|
|
55
|
+
>
|
|
28
56
|
<img
|
|
29
57
|
class="relative h-s w-s object-cover rounded-full bg-contrast-20 flex-shrink-0 shadow-xs"
|
|
30
58
|
src=${(_b = (data ? (_a = this.getImageSrc) === null || _a === void 0 ? void 0 : _a.call(this, data.type) : null)) !== null && _b !== void 0 ? _b : defaultSrc}
|
|
@@ -32,21 +60,7 @@ export class PaymentsApiPaymentMethodCard extends Base {
|
|
|
32
60
|
@error=${(evt) => (evt.currentTarget.src = defaultSrc)}
|
|
33
61
|
/>
|
|
34
62
|
|
|
35
|
-
<figcaption class="min-w-0 flex-1">
|
|
36
|
-
<dl class="flex justify-between gap-s">
|
|
37
|
-
<dt class="sr-only">${this.t('title_description')}</dt>
|
|
38
|
-
<dd class="font-semibold truncate flex-shrink-0">
|
|
39
|
-
${data === null || data === void 0 ? void 0 : data.helper.name}​
|
|
40
|
-
</dd>
|
|
41
|
-
|
|
42
|
-
${(data === null || data === void 0 ? void 0 : data.helper.name) !== (data === null || data === void 0 ? void 0 : data.description)
|
|
43
|
-
? html `
|
|
44
|
-
<dt class="sr-only">${this.t('subtitle_description')}</dt>
|
|
45
|
-
<dd class="truncate text-tertiary">${data === null || data === void 0 ? void 0 : data.description}</dd>
|
|
46
|
-
`
|
|
47
|
-
: ''}
|
|
48
|
-
</dl>
|
|
49
|
-
</figcaption>
|
|
63
|
+
<figcaption class="min-w-0 flex-1">${defaultLayout}</figcaption>
|
|
50
64
|
</figure>
|
|
51
65
|
`;
|
|
52
66
|
}
|
package/dist/elements/public/PaymentsApiPaymentMethodCard/PaymentsApiPaymentMethodCard.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PaymentsApiPaymentMethodCard.js","sourceRoot":"","sources":["../../../../src/elements/public/PaymentsApiPaymentMethodCard/PaymentsApiPaymentMethodCard.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,iBAAiB,EAAE,wCAAqC;AACjE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"PaymentsApiPaymentMethodCard.js","sourceRoot":"","sources":["../../../../src/elements/public/PaymentsApiPaymentMethodCard/PaymentsApiPaymentMethodCard.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,iBAAiB,EAAE,wCAAqC;AACjE,OAAO,EAAE,WAAW,EAAE,0CAAuC;AAC7D,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAEhC,MAAM,EAAE,GAAG,kCAAkC,CAAC;AAC9C,MAAM,IAAI,GAAG,iBAAiB,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;AAEhD;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,OAAO,4BAA6B,SAAQ,IAAU;IAA5D;;QAYE;;;WAGG;QACH,gBAAW,GAAsC,IAAI,CAAC;IA6BxD,CAAC;IA5CC,MAAM,KAAK,eAAe;QACxB,OAAO,goBAAgoB,CAAC;IAC1oB,CAAC;IAED,MAAM,KAAK,UAAU;QACnB,OAAO;YACL,GAAG,KAAK,CAAC,UAAU;YACnB,WAAW,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE;SAClC,CAAC;IACJ,CAAC;IAQD,UAAU;;QACR,MAAM,aAAa,GAAG,KAAK,CAAC,UAAU,CAAC;YACrC,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAA,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;YACxC,QAAQ,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAA,GAAG,IAAI,CAAC,WAAW,EAAE;SAC5C,CAAC,CAAC;QAEH,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;YAAE,OAAO,aAAa,CAAC;QAEzD,MAAM,UAAU,GAAG,4BAA4B,CAAC,eAAe,CAAC;QAChE,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QAEvB,OAAO,IAAI,CAAA;;;;;;;gBAOC,MAAA,CAAC,IAAI,CAAC,CAAC,OAAC,IAAI,CAAC,WAAW,+CAAhB,IAAI,EAAe,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,mCAAI,UAAU;gBAC3D,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC;mBAChB,CAAC,GAAU,EAAE,EAAE,CAAC,CAAE,GAAG,CAAC,aAAkC,CAAC,GAAG,GAAG,UAAU,CAAC;;;6CAGhD,aAAa;;KAErD,CAAC;IACJ,CAAC;CACF","sourcesContent":["import type { PropertyDeclarations } from 'lit-element';\nimport type { TemplateResult } from 'lit-html';\nimport type { Data } from './types';\n\nimport { TranslatableMixin } from '../../../mixins/translatable';\nimport { TwoLineCard } from '../CustomFieldCard/TwoLineCard';\nimport { html } from 'lit-html';\n\nconst NS = 'payments-api-payment-method-card';\nconst Base = TranslatableMixin(TwoLineCard, NS);\n\n/**\n * Card element representing a `fx:payment_method` resource of Payments API.\n *\n * _Payments API is a client-side virtual API layer built on top of hAPI\n * in an attempt to streamline access to stores' payment method settings\n * that is currently a bit quirky due to the legacy functionality. To use\n * this element with hAPI, wrap it into a foxy-payments-api node._\n *\n * @slot title:before\n * @slot title:after\n *\n * @slot subtitle:before\n * @slot subtitle:after\n *\n * @element foxy-payments-api-payment-method-card\n * @since 1.21.0\n */\nexport class PaymentsApiPaymentMethodCard extends Base<Data> {\n static get defaultImageSrc(): string {\n return \"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 44 44'%3E%3Cpath fill='%23fff' d='m29.3 14 14-14H32.1l-14 14h11.2Zm2.7 9.9 12-12V.7L30.62 14.1A2 2 0 0 1 32 16v7.9ZM13.31 44h11.18L44 24.5V13.3l-12 12V28a2 2 0 0 1-2 2h-2.69l-14 14Zm-1.41 0H.7l14-14h11.2l-14 14Zm14 0h11.2l6.9-6.9V25.9L25.9 44Zm12.6 0H44v-5.5L38.5 44Z'/%3E%3Cpath fill='%23fff' d='M30 28H14v-6h16v6Zm0-10v-2H14v2h16ZM0 43.3l13.4-13.4A2 2 0 0 1 12 28v-7.9L0 32.12V43.3Z'/%3E%3Cpath fill='%23fff' d='M16.7 14H14c-1.11 0-1.99.89-1.99 2v2.7L0 30.7V19.52L19.52 0H30.7l-14 14Zm1.4-14H6.92L0 6.92V18.1L18.1 0ZM5.5 0H0v5.5L5.5 0Z'/%3E%3C/svg%3E\";\n }\n\n static get properties(): PropertyDeclarations {\n return {\n ...super.properties,\n getImageSrc: { attribute: false },\n };\n }\n\n /**\n * Payment method image/logo URL getter.\n * If left `null`, the card will display the default image.\n */\n getImageSrc: ((type: string) => string) | null = null;\n\n renderBody(): TemplateResult {\n const defaultLayout = super.renderBody({\n title: data => html`${data.helper.name}`,\n subtitle: data => html`${data.description}`,\n });\n\n if (!this.in({ idle: 'snapshot' })) return defaultLayout;\n\n const defaultSrc = PaymentsApiPaymentMethodCard.defaultImageSrc;\n const data = this.data;\n\n return html`\n <figure\n class=\"flex items-center\"\n style=\"gap: calc(0.625em + (var(--lumo-border-radius) / 4) - 1px)\"\n >\n <img\n class=\"relative h-s w-s object-cover rounded-full bg-contrast-20 flex-shrink-0 shadow-xs\"\n src=${(data ? this.getImageSrc?.(data.type) : null) ?? defaultSrc}\n alt=${this.t('image_alt')}\n @error=${(evt: Event) => ((evt.currentTarget as HTMLImageElement).src = defaultSrc)}\n />\n\n <figcaption class=\"min-w-0 flex-1\">${defaultLayout}</figcaption>\n </figure>\n `;\n }\n}\n"]}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import '../../internal/
|
|
1
|
+
import '../../internal/InternalSandbox/index';
|
|
2
|
+
import '../Spinner/index';
|
|
2
3
|
import '../I18n/index';
|
|
3
4
|
import { PaymentsApiPaymentMethodCard } from './PaymentsApiPaymentMethodCard';
|
|
4
5
|
export { PaymentsApiPaymentMethodCard };
|