@foxy.io/elements 1.18.0-beta.18 → 1.18.0-beta.19
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/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 -0
- package/dist/cdn/foxy-api-browser.js +1 -1
- package/dist/cdn/foxy-applied-coupon-code-card.js +1 -0
- package/dist/cdn/foxy-applied-coupon-code-form.js +1 -0
- 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 -0
- package/dist/cdn/foxy-cart-form.js +1 -0
- 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-api.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 +3 -2
- 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-nucleon-element.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-payments-api.js +1 -1
- package/dist/cdn/foxy-query-builder.js +1 -1
- package/dist/cdn/foxy-report-form.js +1 -1
- package/dist/cdn/foxy-reports-table.js +1 -1
- 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 +2 -2
- 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 +4 -16
- 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-card.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 +60 -1
- 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-29e21467.js → shared-00752056.js} +1 -1
- package/dist/cdn/{shared-56d26968.js → shared-01d2cae6.js} +1 -1
- package/dist/cdn/{shared-d5f242df.js → shared-09c75a01.js} +1 -1
- package/dist/cdn/shared-09eb558f.js +1 -0
- package/dist/cdn/{shared-236d9b7e.js → shared-0a52b08c.js} +1 -1
- package/dist/cdn/{shared-55e20d5b.js → shared-0b17e9a6.js} +1 -1
- package/dist/cdn/{shared-f022673a.js → shared-124a17c1.js} +1 -1
- package/dist/cdn/{shared-344485cf.js → shared-15effede.js} +5 -5
- package/dist/cdn/{shared-196fa627.js → shared-17cb43f3.js} +2 -2
- package/dist/cdn/shared-181f51bd.js +1 -0
- package/dist/cdn/{shared-262caea4.js → shared-1936d1d5.js} +1 -1
- package/dist/cdn/{shared-f2d19582.js → shared-1e9fd9f1.js} +1 -1
- package/dist/cdn/{shared-c52d3772.js → shared-2470973b.js} +1 -1
- package/dist/cdn/{shared-923da875.js → shared-254ef6a4.js} +1 -1
- package/dist/cdn/shared-2afc2d3b.js +1 -0
- package/dist/cdn/{shared-0672e78b.js → shared-2bce9f91.js} +1 -1
- package/dist/cdn/{shared-b5cbbdd8.js → shared-2c067e88.js} +1 -1
- package/dist/cdn/{shared-dcbf57e0.js → shared-2f7dcefa.js} +1 -1
- package/dist/cdn/{shared-4975f86f.js → shared-37d6c723.js} +1 -1
- package/dist/cdn/{shared-3a3878c9.js → shared-39549b4e.js} +1 -1
- package/dist/cdn/{shared-f23d122e.js → shared-3aecf4e3.js} +1 -1
- package/dist/cdn/{shared-17d24760.js → shared-3ba49bac.js} +1 -1
- package/dist/cdn/shared-436f4187.js +1 -0
- package/dist/cdn/{shared-5ad8c9a0.js → shared-43bcce74.js} +1 -1
- package/dist/cdn/{shared-34b11d34.js → shared-4c32f1ad.js} +1 -1
- package/dist/cdn/{shared-ea316e64.js → shared-4cf568d8.js} +1 -1
- package/dist/cdn/{shared-2215e6c8.js → shared-50f97405.js} +1 -1
- package/dist/cdn/{shared-4308cdab.js → shared-54c5d16b.js} +1 -1
- package/dist/cdn/{shared-ff2f84c7.js → shared-63139d9e.js} +1 -1
- package/dist/cdn/{shared-ef0fc329.js → shared-6a53f85f.js} +1 -1
- package/dist/cdn/{shared-002b788f.js → shared-76b3d76a.js} +1 -1
- package/dist/cdn/shared-7a1de87a.js +1 -0
- package/dist/cdn/shared-7b6f4a11.js +1 -0
- package/dist/cdn/{shared-8a5bdad3.js → shared-7cc9cc71.js} +1 -1
- package/dist/cdn/{shared-162fc285.js → shared-7df6ee40.js} +1 -1
- package/dist/cdn/shared-7e2ea44c.js +1 -0
- package/dist/cdn/{shared-bb522838.js → shared-7ed14dc8.js} +1 -1
- package/dist/cdn/shared-839dd3a8.js +1 -0
- package/dist/cdn/{shared-da6cc488.js → shared-862b436d.js} +1 -1
- package/dist/cdn/{shared-b0a6d48f.js → shared-873b14d1.js} +1 -1
- package/dist/cdn/{shared-5b55627c.js → shared-875748d8.js} +1 -1
- package/dist/cdn/{shared-2d3027f4.js → shared-8b6addec.js} +1 -1
- package/dist/cdn/{shared-07fb5be2.js → shared-90b8ef49.js} +1 -1
- package/dist/cdn/{shared-b7f7f15f.js → shared-9923f00e.js} +1 -1
- package/dist/cdn/{shared-b28dbc68.js → shared-9c3934c8.js} +1 -1
- package/dist/cdn/{shared-6b8874a7.js → shared-9cba1b0e.js} +1 -1
- package/dist/cdn/{shared-aebbceea.js → shared-a2e9009b.js} +1 -1
- package/dist/cdn/{shared-d43fc5cc.js → shared-a696c602.js} +1 -1
- package/dist/cdn/shared-a85afa33.js +1 -0
- package/dist/cdn/{shared-e396ec04.js → shared-ab687b1e.js} +1 -1
- package/dist/cdn/{shared-c484320b.js → shared-aef0c294.js} +1 -1
- package/dist/cdn/shared-b51997d1.js +1 -0
- package/dist/cdn/{shared-8a5e01ae.js → shared-b90ddfc1.js} +1 -1
- package/dist/cdn/shared-bcc6e13b.js +1 -0
- package/dist/cdn/{shared-b8e9b536.js → shared-bfc37e75.js} +1 -1
- package/dist/cdn/{shared-6d2064e9.js → shared-c434e6d6.js} +3 -3
- package/dist/cdn/{shared-ce1ae7e1.js → shared-cce2fc5a.js} +1 -1
- package/dist/cdn/{shared-1f0841ec.js → shared-cd6381a5.js} +1 -1
- package/dist/cdn/{shared-a86761d3.js → shared-cef7c63d.js} +2 -2
- package/dist/cdn/{shared-7b167fe9.js → shared-cfae0154.js} +1 -1
- package/dist/cdn/{shared-98652709.js → shared-d34586cb.js} +1 -1
- package/dist/cdn/shared-d4f80692.js +1 -0
- package/dist/cdn/{shared-2c842660.js → shared-d7e653ae.js} +1 -1
- package/dist/cdn/shared-d8b07f4f.js +1 -0
- package/dist/cdn/{shared-85f9051e.js → shared-db61a5e8.js} +1 -1
- package/dist/cdn/{shared-b0ff4590.js → shared-ddf10c04.js} +1 -1
- package/dist/cdn/{shared-d302ad2c.js → shared-ea67b3f3.js} +1 -1
- package/dist/cdn/translations/admin-subscription-card/en.json +27 -0
- package/dist/cdn/translations/applied-coupon-code-card/en.json +7 -0
- package/dist/cdn/translations/applied-coupon-code-form/en.json +26 -0
- package/dist/cdn/translations/cart-card/en.json +15 -0
- package/dist/cdn/translations/cart-form/en.json +762 -0
- package/dist/cdn/translations/coupon-card/en.json +2 -2
- package/dist/cdn/translations/customer-portal/en.json +9 -9
- package/dist/cdn/translations/subscription-form/en.json +116 -21
- package/dist/elements/internal/InternalAsyncComboBoxControl/InternalAsyncComboBoxControl.d.ts +2 -0
- package/dist/elements/internal/InternalAsyncComboBoxControl/InternalAsyncComboBoxControl.js +4 -0
- package/dist/elements/internal/InternalAsyncComboBoxControl/InternalAsyncComboBoxControl.js.map +1 -1
- package/dist/elements/internal/InternalAsyncListControl/InternalAsyncListControl.d.ts +3 -3
- package/dist/elements/internal/InternalAsyncListControl/InternalAsyncListControl.js +12 -10
- package/dist/elements/internal/InternalAsyncListControl/InternalAsyncListControl.js.map +1 -1
- package/dist/elements/internal/InternalAsyncListControl/index.d.ts +1 -1
- package/dist/elements/internal/InternalAsyncListControl/index.js +1 -1
- package/dist/elements/internal/InternalAsyncListControl/index.js.map +1 -1
- package/dist/elements/internal/InternalCard/InternalCard.d.ts +1 -0
- package/dist/elements/internal/InternalCard/InternalCard.js +12 -4
- package/dist/elements/internal/InternalCard/InternalCard.js.map +1 -1
- package/dist/elements/internal/InternalFrequencyControl/InternalFrequencyControl.js +2 -1
- package/dist/elements/internal/InternalFrequencyControl/InternalFrequencyControl.js.map +1 -1
- package/dist/elements/internal/InternalNumberControl/InternalNumberControl.d.ts +6 -1
- package/dist/elements/internal/InternalNumberControl/InternalNumberControl.js +21 -0
- package/dist/elements/internal/InternalNumberControl/InternalNumberControl.js.map +1 -1
- package/dist/elements/internal/InternalSelectControl/InternalSelectControl.d.ts +1 -0
- package/dist/elements/internal/InternalSelectControl/InternalSelectControl.js +6 -0
- package/dist/elements/internal/InternalSelectControl/InternalSelectControl.js.map +1 -1
- package/dist/elements/private/Dialog/Dialog.js +1 -0
- package/dist/elements/private/Dialog/Dialog.js.map +1 -1
- package/dist/elements/public/AdminSubscriptionCard/AdminSubscriptionCard.d.ts +40 -0
- package/dist/elements/public/AdminSubscriptionCard/AdminSubscriptionCard.js +304 -0
- package/dist/elements/public/AdminSubscriptionCard/AdminSubscriptionCard.js.map +1 -0
- package/dist/elements/public/AdminSubscriptionCard/index.d.ts +4 -0
- package/dist/elements/public/AdminSubscriptionCard/index.js +6 -0
- package/dist/elements/public/AdminSubscriptionCard/index.js.map +1 -0
- package/dist/elements/public/AdminSubscriptionCard/types.d.ts +9 -0
- package/dist/elements/public/AdminSubscriptionCard/types.js +2 -0
- package/dist/elements/public/AdminSubscriptionCard/types.js.map +1 -0
- package/dist/elements/public/AppliedCouponCodeCard/AppliedCouponCodeCard.d.ts +11 -0
- package/dist/elements/public/AppliedCouponCodeCard/AppliedCouponCodeCard.js +33 -0
- package/dist/elements/public/AppliedCouponCodeCard/AppliedCouponCodeCard.js.map +1 -0
- package/dist/elements/public/AppliedCouponCodeCard/index.d.ts +4 -0
- package/dist/elements/public/AppliedCouponCodeCard/index.js +6 -0
- package/dist/elements/public/AppliedCouponCodeCard/index.js.map +1 -0
- package/dist/elements/public/AppliedCouponCodeCard/types.d.ts +3 -0
- package/dist/elements/public/AppliedCouponCodeCard/types.js +2 -0
- package/dist/elements/public/AppliedCouponCodeCard/types.js.map +1 -0
- package/dist/elements/public/AppliedCouponCodeForm/AppliedCouponCodeForm.d.ts +18 -0
- package/dist/elements/public/AppliedCouponCodeForm/AppliedCouponCodeForm.js +54 -0
- package/dist/elements/public/AppliedCouponCodeForm/AppliedCouponCodeForm.js.map +1 -0
- package/dist/elements/public/AppliedCouponCodeForm/index.d.ts +5 -0
- package/dist/elements/public/AppliedCouponCodeForm/index.js +7 -0
- package/dist/elements/public/AppliedCouponCodeForm/index.js.map +1 -0
- package/dist/elements/public/AppliedCouponCodeForm/types.d.ts +5 -0
- package/dist/elements/public/AppliedCouponCodeForm/types.js +2 -0
- package/dist/elements/public/AppliedCouponCodeForm/types.js.map +1 -0
- package/dist/elements/public/AttributeCard/AttributeCard.js +5 -4
- package/dist/elements/public/AttributeCard/AttributeCard.js.map +1 -1
- package/dist/elements/public/CartCard/CartCard.d.ts +42 -0
- package/dist/elements/public/CartCard/CartCard.js +264 -0
- package/dist/elements/public/CartCard/CartCard.js.map +1 -0
- package/dist/elements/public/CartCard/index.d.ts +5 -0
- package/dist/elements/public/CartCard/index.js +7 -0
- package/dist/elements/public/CartCard/index.js.map +1 -0
- package/dist/elements/public/CartCard/types.d.ts +5 -0
- package/dist/elements/public/CartCard/types.js +2 -0
- package/dist/elements/public/CartCard/types.js.map +1 -0
- package/dist/elements/public/CartForm/CartForm.d.ts +59 -0
- package/dist/elements/public/CartForm/CartForm.js +603 -0
- package/dist/elements/public/CartForm/CartForm.js.map +1 -0
- package/dist/elements/public/CartForm/index.d.ts +19 -0
- package/dist/elements/public/CartForm/index.js +21 -0
- package/dist/elements/public/CartForm/index.js.map +1 -0
- package/dist/elements/public/CartForm/internal/InternalCartFormViewAsCustomerControl/InternalCartFormViewAsCustomerControl.d.ts +10 -0
- package/dist/elements/public/CartForm/internal/InternalCartFormViewAsCustomerControl/InternalCartFormViewAsCustomerControl.js +83 -0
- package/dist/elements/public/CartForm/internal/InternalCartFormViewAsCustomerControl/InternalCartFormViewAsCustomerControl.js.map +1 -0
- package/dist/elements/public/CartForm/internal/InternalCartFormViewAsCustomerControl/index.d.ts +4 -0
- package/dist/elements/public/CartForm/internal/InternalCartFormViewAsCustomerControl/index.js +6 -0
- package/dist/elements/public/CartForm/internal/InternalCartFormViewAsCustomerControl/index.js.map +1 -0
- package/dist/elements/public/CartForm/types.d.ts +3 -0
- package/dist/elements/public/CartForm/types.js +2 -0
- package/dist/elements/public/CartForm/types.js.map +1 -0
- package/dist/elements/public/CollectionPage/CollectionPage.js +11 -8
- package/dist/elements/public/CollectionPage/CollectionPage.js.map +1 -1
- package/dist/elements/public/CustomFieldCard/TwoLineCard.js +5 -4
- package/dist/elements/public/CustomFieldCard/TwoLineCard.js.map +1 -1
- package/dist/elements/public/CustomerCard/CustomerCard.js +1 -1
- package/dist/elements/public/CustomerCard/CustomerCard.js.map +1 -1
- package/dist/elements/public/CustomerPortal/InternalCustomerPortalSubscriptions.js +3 -1
- package/dist/elements/public/CustomerPortal/InternalCustomerPortalSubscriptions.js.map +1 -1
- package/dist/elements/public/DiscountCard/DiscountCard.js +2 -1
- package/dist/elements/public/DiscountCard/DiscountCard.js.map +1 -1
- package/dist/elements/public/GiftCardCard/GiftCardCard.js +2 -2
- package/dist/elements/public/GiftCardCard/GiftCardCard.js.map +1 -1
- package/dist/elements/public/IntegrationCard/IntegrationCard.js +2 -2
- package/dist/elements/public/IntegrationCard/IntegrationCard.js.map +1 -1
- package/dist/elements/public/ItemCard/ItemCard.d.ts +26 -4
- package/dist/elements/public/ItemCard/ItemCard.js +216 -27
- package/dist/elements/public/ItemCard/ItemCard.js.map +1 -1
- package/dist/elements/public/ItemCard/index.d.ts +1 -0
- package/dist/elements/public/ItemCard/index.js +1 -0
- package/dist/elements/public/ItemCard/index.js.map +1 -1
- package/dist/elements/public/ItemCategoryCard/ItemCategoryCard.d.ts +3 -1
- package/dist/elements/public/ItemCategoryCard/ItemCategoryCard.js +4 -3
- package/dist/elements/public/ItemCategoryCard/ItemCategoryCard.js.map +1 -1
- package/dist/elements/public/ItemForm/ItemForm.d.ts +3 -0
- package/dist/elements/public/ItemForm/ItemForm.js +58 -8
- package/dist/elements/public/ItemForm/ItemForm.js.map +1 -1
- package/dist/elements/public/ItemOptionCard/ItemOptionCard.d.ts +25 -5
- package/dist/elements/public/ItemOptionCard/ItemOptionCard.js +200 -17
- package/dist/elements/public/ItemOptionCard/ItemOptionCard.js.map +1 -1
- package/dist/elements/public/ItemOptionCard/index.d.ts +1 -0
- package/dist/elements/public/ItemOptionCard/index.js +1 -0
- package/dist/elements/public/ItemOptionCard/index.js.map +1 -1
- package/dist/elements/public/NucleonElement/NucleonElement.js +25 -14
- package/dist/elements/public/NucleonElement/NucleonElement.js.map +1 -1
- package/dist/elements/public/Pagination/Pagination.js +2 -2
- package/dist/elements/public/Pagination/Pagination.js.map +1 -1
- package/dist/elements/public/StoreForm/StoreForm.js +1 -1
- package/dist/elements/public/StoreForm/StoreForm.js.map +1 -1
- package/dist/elements/public/SubscriptionForm/SubscriptionForm.d.ts +46 -14
- package/dist/elements/public/SubscriptionForm/SubscriptionForm.js +300 -156
- package/dist/elements/public/SubscriptionForm/SubscriptionForm.js.map +1 -1
- package/dist/elements/public/SubscriptionForm/index.d.ts +9 -4
- package/dist/elements/public/SubscriptionForm/index.js +9 -4
- package/dist/elements/public/SubscriptionForm/index.js.map +1 -1
- package/dist/elements/public/SubscriptionForm/types.d.ts +2 -5
- package/dist/elements/public/SubscriptionForm/types.js.map +1 -1
- package/dist/elements/public/TransactionCard/TransactionCard.js +1 -1
- package/dist/elements/public/TransactionCard/TransactionCard.js.map +1 -1
- package/dist/elements/public/index.d.ts +5 -0
- package/dist/elements/public/index.defined.d.ts +5 -0
- package/dist/elements/public/index.defined.js +5 -0
- package/dist/elements/public/index.defined.js.map +1 -1
- package/dist/elements/public/index.js +5 -0
- package/dist/elements/public/index.js.map +1 -1
- package/dist/mixins/themeable.js +29 -8
- package/dist/mixins/themeable.js.map +1 -1
- package/package.json +1 -1
- package/dist/cdn/shared-1b3e1a0d.js +0 -1
- package/dist/cdn/shared-210387cb.js +0 -1
- package/dist/cdn/shared-222fe491.js +0 -1
- package/dist/cdn/shared-515f00b1.js +0 -1
- package/dist/cdn/shared-5643d0ed.js +0 -1
- package/dist/cdn/shared-62c8cfa2.js +0 -60
- package/dist/cdn/shared-6b622399.js +0 -1
- package/dist/cdn/shared-92926b1d.js +0 -1
- package/dist/cdn/shared-b7219771.js +0 -1
- package/dist/cdn/shared-dc798bf4.js +0 -1
- package/dist/cdn/shared-e08bcb6c.js +0 -1
- package/dist/cdn/shared-fdac2851.js +0 -1
|
@@ -52,10 +52,13 @@ export declare class ItemForm extends ItemForm_base<Data> {
|
|
|
52
52
|
customerAddresses: string | null;
|
|
53
53
|
/** Link to the collection of item categories that can be used with this item. */
|
|
54
54
|
itemCategories: string | null;
|
|
55
|
+
/** Link to the `fx:locale_codes` property helper for currency formatting. */
|
|
56
|
+
localeCodes: string | null;
|
|
55
57
|
/** Link to the collection of coupons that can be used with this item. */
|
|
56
58
|
coupons: string | null;
|
|
57
59
|
private __itemsLink;
|
|
58
60
|
renderBody(): TemplateResult;
|
|
59
61
|
protected _sendGet(): Promise<Data>;
|
|
62
|
+
private get __itemOptionRelatedUrls();
|
|
60
63
|
}
|
|
61
64
|
export {};
|
|
@@ -1,5 +1,6 @@
|
|
|
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
|
/**
|
|
5
6
|
* Form element for creating or editing items (`fx:item`).
|
|
@@ -47,6 +48,8 @@ export class ItemForm extends TranslatableMixin(InternalForm, 'item-form') {
|
|
|
47
48
|
this.customerAddresses = null;
|
|
48
49
|
/** Link to the collection of item categories that can be used with this item. */
|
|
49
50
|
this.itemCategories = null;
|
|
51
|
+
/** Link to the `fx:locale_codes` property helper for currency formatting. */
|
|
52
|
+
this.localeCodes = null;
|
|
50
53
|
/** Link to the collection of coupons that can be used with this item. */
|
|
51
54
|
this.coupons = null;
|
|
52
55
|
this.__itemsLink = '';
|
|
@@ -56,6 +59,7 @@ export class ItemForm extends TranslatableMixin(InternalForm, 'item-form') {
|
|
|
56
59
|
...super.properties,
|
|
57
60
|
customerAddresses: { type: String, attribute: 'customer-addresses' },
|
|
58
61
|
itemCategories: { type: String, attribute: 'item-categories' },
|
|
62
|
+
localeCodes: { attribute: 'locale-codes' },
|
|
59
63
|
coupons: { type: String },
|
|
60
64
|
};
|
|
61
65
|
}
|
|
@@ -69,6 +73,20 @@ export class ItemForm extends TranslatableMixin(InternalForm, 'item-form') {
|
|
|
69
73
|
];
|
|
70
74
|
}
|
|
71
75
|
renderBody() {
|
|
76
|
+
const renderItemOptionCard = ctx => {
|
|
77
|
+
var _a;
|
|
78
|
+
return html `
|
|
79
|
+
<foxy-item-option-card
|
|
80
|
+
locale-codes=${ifDefined((_a = this.localeCodes) !== null && _a !== void 0 ? _a : void 0)}
|
|
81
|
+
parent=${ctx.parent}
|
|
82
|
+
class="p-m"
|
|
83
|
+
infer=""
|
|
84
|
+
href=${ctx.href}
|
|
85
|
+
.related=${ctx.related}
|
|
86
|
+
>
|
|
87
|
+
</foxy-item-option-card>
|
|
88
|
+
`;
|
|
89
|
+
};
|
|
72
90
|
return html `
|
|
73
91
|
<foxy-internal-text-control infer="name"></foxy-internal-text-control>
|
|
74
92
|
|
|
@@ -114,13 +132,9 @@ export class ItemForm extends TranslatableMixin(InternalForm, 'item-form') {
|
|
|
114
132
|
infer="item-options"
|
|
115
133
|
first=${this.data._links['fx:item_options'].href}
|
|
116
134
|
limit="5"
|
|
117
|
-
item="foxy-item-option-card"
|
|
118
135
|
form="foxy-item-option-form"
|
|
119
|
-
.
|
|
120
|
-
|
|
121
|
-
this.data._links['fx:shipment'].href,
|
|
122
|
-
this.__itemsLink,
|
|
123
|
-
]}
|
|
136
|
+
.item=${renderItemOptionCard}
|
|
137
|
+
.related=${this.__itemOptionRelatedUrls}
|
|
124
138
|
>
|
|
125
139
|
</foxy-internal-async-details-control>
|
|
126
140
|
`
|
|
@@ -130,9 +144,45 @@ export class ItemForm extends TranslatableMixin(InternalForm, 'item-form') {
|
|
|
130
144
|
}
|
|
131
145
|
async _sendGet() {
|
|
132
146
|
const item = await super._sendGet();
|
|
133
|
-
|
|
134
|
-
|
|
147
|
+
if ('fx:subscription' in item._links) {
|
|
148
|
+
// TODO: remove the directive below once SDK is updated
|
|
149
|
+
// @ts-expect-error SDK types are incomplete
|
|
150
|
+
const subscriptionHref = item._links['fx:subscription'].href;
|
|
151
|
+
const subscription = await super._fetch(subscriptionHref);
|
|
152
|
+
const transactionTemplateHref = subscription._links['fx:transaction_template'].href;
|
|
153
|
+
const transactionTemplate = await super._fetch(transactionTemplateHref);
|
|
154
|
+
this.__itemsLink = transactionTemplate._links['fx:items'].href;
|
|
155
|
+
return item;
|
|
156
|
+
}
|
|
157
|
+
if ('fx:transaction' in item._links) {
|
|
158
|
+
const transaction = await super._fetch(item._links['fx:transaction'].href);
|
|
159
|
+
this.__itemsLink = transaction._links['fx:items'].href;
|
|
160
|
+
return item;
|
|
161
|
+
}
|
|
162
|
+
if ('fx:cart' in item._links) {
|
|
163
|
+
// TODO: remove the directive below once SDK is updated
|
|
164
|
+
// @ts-expect-error SDK types are incomplete
|
|
165
|
+
const cart = await super._fetch(item._links['fx:cart'].href);
|
|
166
|
+
this.__itemsLink = cart._links['fx:items'].href;
|
|
167
|
+
return item;
|
|
168
|
+
}
|
|
135
169
|
return item;
|
|
136
170
|
}
|
|
171
|
+
get __itemOptionRelatedUrls() {
|
|
172
|
+
var _a, _b;
|
|
173
|
+
const links = ((_b = (_a = this.data) === null || _a === void 0 ? void 0 : _a._links) !== null && _b !== void 0 ? _b : {});
|
|
174
|
+
const urls = [];
|
|
175
|
+
if (links['fx:subscription'])
|
|
176
|
+
urls.push(links['fx:subscription'].href);
|
|
177
|
+
if (links['fx:transaction'])
|
|
178
|
+
urls.push(links['fx:transaction'].href);
|
|
179
|
+
if (links['fx:shipment'])
|
|
180
|
+
urls.push(links['fx:shipment'].href);
|
|
181
|
+
if (links['fx:cart'])
|
|
182
|
+
urls.push(links['fx:cart'].href);
|
|
183
|
+
if (this.__itemsLink)
|
|
184
|
+
urls.push(this.__itemsLink);
|
|
185
|
+
return urls;
|
|
186
|
+
}
|
|
137
187
|
}
|
|
138
188
|
//# sourceMappingURL=ItemForm.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ItemForm.js","sourceRoot":"","sources":["../../../../src/elements/public/ItemForm/ItemForm.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,iBAAiB,EAAE,wCAAqC;AACjE,OAAO,EAAE,YAAY,EAAE,oDAAiD;AACxE,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAIhC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,MAAM,OAAO,QAAS,SAAQ,iBAAiB,CAAC,YAAY,EAAE,WAAW,CAAO;IAAhF;;QAoBE,oFAAoF;QACpF,sBAAiB,GAAkB,IAAI,CAAC;QAExC,iFAAiF;QACjF,mBAAc,GAAkB,IAAI,CAAC;QAErC,yEAAyE;QACzE,YAAO,GAAkB,IAAI,CAAC;QAEtB,gBAAW,GAAG,EAAE,CAAC;IAyE3B,CAAC;IArGC,MAAM,KAAK,UAAU;QACnB,OAAO;YACL,GAAG,KAAK,CAAC,UAAU;YACnB,iBAAiB,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,oBAAoB,EAAE;YACpE,cAAc,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,iBAAiB,EAAE;YAC9D,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;SAC1B,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,GAAG;QACZ,OAAO;YACL,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,mBAAmB;YAC3C,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,GAAG,CAAC,IAAI,mBAAmB;YAChE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,oBAAoB;YAC9E,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,oBAAoB;YAC3E,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,4BAA4B;SACvF,CAAC;IACJ,CAAC;IAaD,UAAU;QACR,OAAO,IAAI,CAAA;;;;;;;;;;;;;;QAcP,IAAI,CAAC,IAAI;YACT,CAAC,CAAC,IAAI,CAAA;;;sBAGQ,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC,IAAI;;;;;;;;sBAQ5C,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,IAAI;;;;;;;;sBAQ1C,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,IAAI;;;;;;;;;sBAStC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,IAAI;;;;yBAIrC;gBACT,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,IAAI;gBACvC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI;gBACpC,IAAI,CAAC,WAAW;aACjB;;;WAGJ;YACH,CAAC,CAAC,EAAE;QACJ,KAAK,CAAC,UAAU,EAAE;KACrB,CAAC;IACJ,CAAC;IAES,KAAK,CAAC,QAAQ;QAGtB,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,QAAQ,EAAE,CAAC;QACpC,MAAM,WAAW,GAAG,MAAM,KAAK,CAAC,MAAM,CAAc,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,CAAC;QAExF,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC;QAEvD,OAAO,IAAI,CAAC;IACd,CAAC;CACF","sourcesContent":["import type { PropertyDeclarations } from 'lit-element';\nimport type { TemplateResult } from 'lit-html';\nimport type { NucleonV8N } from '../NucleonElement/types';\nimport type { Data } from './types';\n\nimport { TranslatableMixin } from '../../../mixins/translatable';\nimport { InternalForm } from '../../internal/InternalForm/InternalForm';\nimport { html } from 'lit-html';\nimport { Resource } from '@foxy.io/sdk/core';\nimport { Rels } from '@foxy.io/sdk/backend';\n\n/**\n * Form element for creating or editing items (`fx:item`).\n *\n * @slot name:before\n * @slot name:after\n *\n * @slot price:before\n * @slot price:after\n *\n * @slot quantity:before\n * @slot quantity:after\n *\n * @slot subscription:before\n * @slot subscription:after\n *\n * @slot line-item-discount:before\n * @slot line-item-discount:after\n *\n * @slot cart:before\n * @slot cart:after\n *\n * @slot shipping:before\n * @slot shipping:after\n *\n * @slot inventory:before\n * @slot inventory:after\n *\n * @slot timestamps:before\n * @slot timestamps:after\n *\n * @slot delete:before\n * @slot delete:after\n *\n * @slot create:before\n * @slot create:after\n *\n * @element foxy-item-form\n * @since 1.17.0\n */\nexport class ItemForm extends TranslatableMixin(InternalForm, 'item-form')<Data> {\n static get properties(): PropertyDeclarations {\n return {\n ...super.properties,\n customerAddresses: { type: String, attribute: 'customer-addresses' },\n itemCategories: { type: String, attribute: 'item-categories' },\n coupons: { type: String },\n };\n }\n\n static get v8n(): NucleonV8N<Data> {\n return [\n ({ name: v }) => !!v || 'name:v8n_required',\n ({ name: v }) => (!!v && v.length <= 255) || 'name:v8n_too_long',\n ({ price: v }) => (typeof v === 'number' && !isNaN(v)) || 'price:v8n_required',\n ({ price: v }) => (typeof v === 'number' && v >= 0) || 'price:v8n_negative',\n ({ quantity: v }) => (typeof v === 'number' && v >= 1) || 'quantity:v8n_less_than_one',\n ];\n }\n\n /** Link to the collection of customer addresses that can be used with this item. */\n customerAddresses: string | null = null;\n\n /** Link to the collection of item categories that can be used with this item. */\n itemCategories: string | null = null;\n\n /** Link to the collection of coupons that can be used with this item. */\n coupons: string | null = null;\n\n private __itemsLink = '';\n\n renderBody(): TemplateResult {\n return html`\n <foxy-internal-text-control infer=\"name\"></foxy-internal-text-control>\n\n <div class=\"grid grid-cols-2 gap-m\">\n <foxy-internal-number-control infer=\"price\"></foxy-internal-number-control>\n <foxy-internal-integer-control infer=\"quantity\"></foxy-internal-integer-control>\n </div>\n\n <foxy-internal-item-form-subscription-control></foxy-internal-item-form-subscription-control>\n <foxy-internal-item-form-line-item-discount-control></foxy-internal-item-form-line-item-discount-control>\n <foxy-internal-item-form-cart-control></foxy-internal-item-form-cart-control>\n <foxy-internal-item-form-shipping-control></foxy-internal-item-form-shipping-control>\n <foxy-internal-item-form-inventory-control></foxy-internal-item-form-inventory-control>\n\n ${this.data\n ? html`\n <foxy-internal-async-details-control\n infer=\"discount-details\"\n first=${this.data._links['fx:discount_details'].href}\n limit=\"5\"\n item=\"foxy-discount-detail-card\"\n >\n </foxy-internal-async-details-control>\n\n <foxy-internal-async-details-control\n infer=\"coupon-details\"\n first=${this.data._links['fx:coupon_details'].href}\n limit=\"5\"\n item=\"foxy-coupon-detail-card\"\n >\n </foxy-internal-async-details-control>\n\n <foxy-internal-async-details-control\n infer=\"attributes\"\n first=${this.data._links['fx:attributes'].href}\n limit=\"5\"\n item=\"foxy-attribute-card\"\n form=\"foxy-attribute-form\"\n >\n </foxy-internal-async-details-control>\n\n <foxy-internal-async-details-control\n infer=\"item-options\"\n first=${this.data._links['fx:item_options'].href}\n limit=\"5\"\n item=\"foxy-item-option-card\"\n form=\"foxy-item-option-form\"\n .related=${[\n this.data._links['fx:transaction'].href,\n this.data._links['fx:shipment'].href,\n this.__itemsLink,\n ]}\n >\n </foxy-internal-async-details-control>\n `\n : ''}\n ${super.renderBody()}\n `;\n }\n\n protected async _sendGet(): Promise<Data> {\n type Transaction = Resource<Rels.Transaction>;\n\n const item = await super._sendGet();\n const transaction = await super._fetch<Transaction>(item._links['fx:transaction'].href);\n\n this.__itemsLink = transaction._links['fx:items'].href;\n\n return item;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"ItemForm.js","sourceRoot":"","sources":["../../../../src/elements/public/ItemForm/ItemForm.ts"],"names":[],"mappings":"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","sourcesContent":["import type { PropertyDeclarations } from 'lit-element';\nimport type { TemplateResult } from 'lit-html';\nimport type { ItemRenderer } from '../CollectionPage/types';\nimport type { NucleonV8N } from '../NucleonElement/types';\nimport type { Resource } from '@foxy.io/sdk/core';\nimport type { Rels } from '@foxy.io/sdk/backend';\nimport type { Data } from './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\n/**\n * Form element for creating or editing items (`fx:item`).\n *\n * @slot name:before\n * @slot name:after\n *\n * @slot price:before\n * @slot price:after\n *\n * @slot quantity:before\n * @slot quantity:after\n *\n * @slot subscription:before\n * @slot subscription:after\n *\n * @slot line-item-discount:before\n * @slot line-item-discount:after\n *\n * @slot cart:before\n * @slot cart:after\n *\n * @slot shipping:before\n * @slot shipping:after\n *\n * @slot inventory:before\n * @slot inventory:after\n *\n * @slot timestamps:before\n * @slot timestamps:after\n *\n * @slot delete:before\n * @slot delete:after\n *\n * @slot create:before\n * @slot create:after\n *\n * @element foxy-item-form\n * @since 1.17.0\n */\nexport class ItemForm extends TranslatableMixin(InternalForm, 'item-form')<Data> {\n static get properties(): PropertyDeclarations {\n return {\n ...super.properties,\n customerAddresses: { type: String, attribute: 'customer-addresses' },\n itemCategories: { type: String, attribute: 'item-categories' },\n localeCodes: { attribute: 'locale-codes' },\n coupons: { type: String },\n };\n }\n\n static get v8n(): NucleonV8N<Data> {\n return [\n ({ name: v }) => !!v || 'name:v8n_required',\n ({ name: v }) => (!!v && v.length <= 255) || 'name:v8n_too_long',\n ({ price: v }) => (typeof v === 'number' && !isNaN(v)) || 'price:v8n_required',\n ({ price: v }) => (typeof v === 'number' && v >= 0) || 'price:v8n_negative',\n ({ quantity: v }) => (typeof v === 'number' && v >= 1) || 'quantity:v8n_less_than_one',\n ];\n }\n\n /** Link to the collection of customer addresses that can be used with this item. */\n customerAddresses: string | null = null;\n\n /** Link to the collection of item categories that can be used with this item. */\n itemCategories: string | null = null;\n\n /** Link to the `fx:locale_codes` property helper for currency formatting. */\n localeCodes: string | null = null;\n\n /** Link to the collection of coupons that can be used with this item. */\n coupons: string | null = null;\n\n private __itemsLink = '';\n\n renderBody(): TemplateResult {\n const renderItemOptionCard: ItemRenderer = ctx => html`\n <foxy-item-option-card\n locale-codes=${ifDefined(this.localeCodes ?? void 0)}\n parent=${ctx.parent}\n class=\"p-m\"\n infer=\"\"\n href=${ctx.href}\n .related=${ctx.related}\n >\n </foxy-item-option-card>\n `;\n\n return html`\n <foxy-internal-text-control infer=\"name\"></foxy-internal-text-control>\n\n <div class=\"grid grid-cols-2 gap-m\">\n <foxy-internal-number-control infer=\"price\"></foxy-internal-number-control>\n <foxy-internal-integer-control infer=\"quantity\"></foxy-internal-integer-control>\n </div>\n\n <foxy-internal-item-form-subscription-control></foxy-internal-item-form-subscription-control>\n <foxy-internal-item-form-line-item-discount-control></foxy-internal-item-form-line-item-discount-control>\n <foxy-internal-item-form-cart-control></foxy-internal-item-form-cart-control>\n <foxy-internal-item-form-shipping-control></foxy-internal-item-form-shipping-control>\n <foxy-internal-item-form-inventory-control></foxy-internal-item-form-inventory-control>\n\n ${this.data\n ? html`\n <foxy-internal-async-details-control\n infer=\"discount-details\"\n first=${this.data._links['fx:discount_details'].href}\n limit=\"5\"\n item=\"foxy-discount-detail-card\"\n >\n </foxy-internal-async-details-control>\n\n <foxy-internal-async-details-control\n infer=\"coupon-details\"\n first=${this.data._links['fx:coupon_details'].href}\n limit=\"5\"\n item=\"foxy-coupon-detail-card\"\n >\n </foxy-internal-async-details-control>\n\n <foxy-internal-async-details-control\n infer=\"attributes\"\n first=${this.data._links['fx:attributes'].href}\n limit=\"5\"\n item=\"foxy-attribute-card\"\n form=\"foxy-attribute-form\"\n >\n </foxy-internal-async-details-control>\n\n <foxy-internal-async-details-control\n infer=\"item-options\"\n first=${this.data._links['fx:item_options'].href}\n limit=\"5\"\n form=\"foxy-item-option-form\"\n .item=${renderItemOptionCard}\n .related=${this.__itemOptionRelatedUrls}\n >\n </foxy-internal-async-details-control>\n `\n : ''}\n ${super.renderBody()}\n `;\n }\n\n protected async _sendGet(): Promise<Data> {\n type TransactionTemplate = Resource<Rels.TransactionTemplate>;\n type Subscription = Resource<Rels.Subscription>;\n type Transaction = Resource<Rels.Transaction>;\n type Cart = Resource<Rels.Cart>;\n\n const item = await super._sendGet();\n\n if ('fx:subscription' in item._links) {\n // TODO: remove the directive below once SDK is updated\n // @ts-expect-error SDK types are incomplete\n const subscriptionHref = item._links['fx:subscription'].href;\n const subscription = await super._fetch<Subscription>(subscriptionHref);\n\n const transactionTemplateHref = subscription._links['fx:transaction_template'].href;\n const transactionTemplate = await super._fetch<TransactionTemplate>(transactionTemplateHref);\n\n this.__itemsLink = transactionTemplate._links['fx:items'].href;\n return item;\n }\n\n if ('fx:transaction' in item._links) {\n const transaction = await super._fetch<Transaction>(item._links['fx:transaction'].href);\n this.__itemsLink = transaction._links['fx:items'].href;\n return item;\n }\n\n if ('fx:cart' in item._links) {\n // TODO: remove the directive below once SDK is updated\n // @ts-expect-error SDK types are incomplete\n const cart = await super._fetch<Cart>(item._links['fx:cart'].href);\n this.__itemsLink = cart._links['fx:items'].href;\n return item;\n }\n\n return item;\n }\n\n private get __itemOptionRelatedUrls() {\n const links = (this.data?._links ?? {}) as Record<string, { href: string }>;\n const urls: string[] = [];\n\n if (links['fx:subscription']) urls.push(links['fx:subscription'].href);\n if (links['fx:transaction']) urls.push(links['fx:transaction'].href);\n if (links['fx:shipment']) urls.push(links['fx:shipment'].href);\n if (links['fx:cart']) urls.push(links['fx:cart'].href);\n if (this.__itemsLink) urls.push(this.__itemsLink);\n\n return urls;\n }\n}\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { TemplateResult } from 'lit-
|
|
2
|
-
import { Data } from './types';
|
|
1
|
+
import type { PropertyDeclarations, TemplateResult } from 'lit-element';
|
|
2
|
+
import type { Data } from './types';
|
|
3
3
|
import { TwoLineCard } from '../CustomFieldCard/TwoLineCard';
|
|
4
4
|
declare const Base: typeof TwoLineCard & import("lit-element").Constructor<import("../../../mixins/translatable").TranslatableMixinHost> & {
|
|
5
5
|
defaultNS: string;
|
|
@@ -17,9 +17,29 @@ declare const Base: typeof TwoLineCard & import("lit-element").Constructor<impor
|
|
|
17
17
|
* @since 1.17.0
|
|
18
18
|
*/
|
|
19
19
|
export declare class ItemOptionCard extends Base<Data> {
|
|
20
|
-
|
|
21
|
-
|
|
20
|
+
static get properties(): PropertyDeclarations;
|
|
21
|
+
localeCodes: string | null;
|
|
22
|
+
private readonly __transactionTemplateLoaderId;
|
|
23
|
+
private readonly __defaultTemplateSetLoaderId;
|
|
24
|
+
private readonly __localeCodesHelperLoaderId;
|
|
25
|
+
private readonly __transactionLoaderId;
|
|
26
|
+
private readonly __templateSetLoaderId;
|
|
27
|
+
private readonly __storeLoaderId;
|
|
28
|
+
private readonly __cartLoaderId;
|
|
22
29
|
render(): TemplateResult;
|
|
23
|
-
|
|
30
|
+
private get __transactionTemplateHref();
|
|
31
|
+
private get __defaultTemplateSetHref();
|
|
32
|
+
private get __localeCodesHelperHref();
|
|
33
|
+
private get __transactionHref();
|
|
34
|
+
private get __templateSetHref();
|
|
35
|
+
private get __storeHref();
|
|
36
|
+
private get __cartHref();
|
|
37
|
+
private get __transactionTemplate();
|
|
38
|
+
private get __defaultTemplateSet();
|
|
39
|
+
private get __localeCodesHelper();
|
|
40
|
+
private get __transaction();
|
|
41
|
+
private get __templateSet();
|
|
42
|
+
private get __store();
|
|
43
|
+
private get __cart();
|
|
24
44
|
}
|
|
25
45
|
export {};
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { html } from 'lit-html';
|
|
2
1
|
import { TranslatableMixin } from "../../../mixins/translatable.js";
|
|
3
2
|
import { TwoLineCard } from "../CustomFieldCard/TwoLineCard.js";
|
|
3
|
+
import { ifDefined } from 'lit-html/directives/if-defined';
|
|
4
|
+
import { html } from 'lit-html';
|
|
4
5
|
const NS = 'item-option-card';
|
|
5
6
|
const Base = TranslatableMixin(TwoLineCard, NS);
|
|
6
7
|
/**
|
|
@@ -18,19 +19,119 @@ const Base = TranslatableMixin(TwoLineCard, NS);
|
|
|
18
19
|
export class ItemOptionCard extends Base {
|
|
19
20
|
constructor() {
|
|
20
21
|
super(...arguments);
|
|
21
|
-
this.
|
|
22
|
-
this.
|
|
22
|
+
this.localeCodes = null;
|
|
23
|
+
this.__transactionTemplateLoaderId = 'transactionTemplateLoader';
|
|
24
|
+
this.__defaultTemplateSetLoaderId = 'defaultTemplateSetLoader';
|
|
25
|
+
this.__localeCodesHelperLoaderId = 'localeCodesLoader';
|
|
26
|
+
this.__transactionLoaderId = 'transactionLoader';
|
|
27
|
+
this.__templateSetLoaderId = 'templateSetLoader';
|
|
28
|
+
this.__storeLoaderId = 'storeLoader';
|
|
29
|
+
this.__cartLoaderId = 'cartLoader';
|
|
30
|
+
}
|
|
31
|
+
static get properties() {
|
|
32
|
+
return {
|
|
33
|
+
...super.properties,
|
|
34
|
+
localeCodes: { type: String, attribute: 'locale-codes' },
|
|
35
|
+
};
|
|
23
36
|
}
|
|
24
37
|
render() {
|
|
25
|
-
|
|
38
|
+
var _a, _b, _c, _d, _e, _f;
|
|
39
|
+
const currencyDisplay = ((_a = this.__store) === null || _a === void 0 ? void 0 : _a.use_international_currency_symbol) ? 'code' : 'symbol';
|
|
40
|
+
const transaction = this.__transaction;
|
|
41
|
+
let currencyCode = null;
|
|
42
|
+
if (transaction) {
|
|
43
|
+
currencyCode = transaction.currency_code;
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
const cart = (_b = this.__cart) !== null && _b !== void 0 ? _b : this.__transactionTemplate;
|
|
47
|
+
if (cart && 'currency_code' in cart) {
|
|
48
|
+
// TODO: remove the directive below once the SDK is updated
|
|
49
|
+
// @ts-expect-error SDK types are incomplete
|
|
50
|
+
currencyCode = cart.currency_code;
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
const allLocaleCodes = this.__localeCodesHelper;
|
|
54
|
+
const localeCode = (_d = ((_c = this.__templateSet) !== null && _c !== void 0 ? _c : this.__defaultTemplateSet)) === null || _d === void 0 ? void 0 : _d.locale_code;
|
|
55
|
+
const localeInfo = localeCode ? allLocaleCodes === null || allLocaleCodes === void 0 ? void 0 : allLocaleCodes.values[localeCode] : void 0;
|
|
56
|
+
if (localeInfo)
|
|
57
|
+
currencyCode = (_f = (_e = /Currency: ([A-Z]{3})/g.exec(localeInfo)) === null || _e === void 0 ? void 0 : _e[1]) !== null && _f !== void 0 ? _f : null;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
return html `
|
|
61
|
+
<foxy-nucleon
|
|
62
|
+
class="hidden"
|
|
63
|
+
infer=""
|
|
64
|
+
href=${ifDefined(this.__transactionTemplateHref)}
|
|
65
|
+
id=${this.__transactionTemplateLoaderId}
|
|
66
|
+
@update=${() => this.requestUpdate()}
|
|
67
|
+
>
|
|
68
|
+
</foxy-nucleon>
|
|
69
|
+
|
|
70
|
+
<foxy-nucleon
|
|
71
|
+
class="hidden"
|
|
72
|
+
infer=""
|
|
73
|
+
href=${ifDefined(this.__defaultTemplateSetHref)}
|
|
74
|
+
id=${this.__defaultTemplateSetLoaderId}
|
|
75
|
+
@update=${() => this.requestUpdate()}
|
|
76
|
+
>
|
|
77
|
+
</foxy-nucleon>
|
|
78
|
+
|
|
79
|
+
<foxy-nucleon
|
|
80
|
+
class="hidden"
|
|
81
|
+
infer=""
|
|
82
|
+
href=${ifDefined(this.__localeCodesHelperHref)}
|
|
83
|
+
id=${this.__localeCodesHelperLoaderId}
|
|
84
|
+
@update=${() => this.requestUpdate()}
|
|
85
|
+
>
|
|
86
|
+
</foxy-nucleon>
|
|
87
|
+
|
|
88
|
+
<foxy-nucleon
|
|
89
|
+
class="hidden"
|
|
90
|
+
infer=""
|
|
91
|
+
href=${ifDefined(this.__transactionHref)}
|
|
92
|
+
id=${this.__transactionLoaderId}
|
|
93
|
+
@update=${() => this.requestUpdate()}
|
|
94
|
+
>
|
|
95
|
+
</foxy-nucleon>
|
|
96
|
+
|
|
97
|
+
<foxy-nucleon
|
|
98
|
+
class="hidden"
|
|
99
|
+
infer=""
|
|
100
|
+
href=${ifDefined(this.__templateSetHref)}
|
|
101
|
+
id=${this.__templateSetLoaderId}
|
|
102
|
+
@update=${() => this.requestUpdate()}
|
|
103
|
+
>
|
|
104
|
+
</foxy-nucleon>
|
|
105
|
+
|
|
106
|
+
<foxy-nucleon
|
|
107
|
+
class="hidden"
|
|
108
|
+
infer=""
|
|
109
|
+
href=${ifDefined(this.__storeHref)}
|
|
110
|
+
id=${this.__storeLoaderId}
|
|
111
|
+
@update=${() => this.requestUpdate()}
|
|
112
|
+
>
|
|
113
|
+
</foxy-nucleon>
|
|
114
|
+
|
|
115
|
+
<foxy-nucleon
|
|
116
|
+
class="hidden"
|
|
117
|
+
infer=""
|
|
118
|
+
href=${ifDefined(this.__cartHref)}
|
|
119
|
+
id=${this.__cartLoaderId}
|
|
120
|
+
@update=${() => this.requestUpdate()}
|
|
121
|
+
>
|
|
122
|
+
</foxy-nucleon>
|
|
123
|
+
|
|
124
|
+
${super.render({
|
|
26
125
|
title: data => {
|
|
126
|
+
if (!currencyCode || !currencyDisplay)
|
|
127
|
+
return html `​`;
|
|
27
128
|
let priceMod;
|
|
28
129
|
try {
|
|
29
130
|
priceMod = Math.abs(data.price_mod).toLocaleString(this.lang || 'en', {
|
|
30
131
|
maximumFractionDigits: 2,
|
|
31
132
|
minimumFractionDigits: 2,
|
|
32
|
-
currencyDisplay:
|
|
33
|
-
currency:
|
|
133
|
+
currencyDisplay: currencyDisplay,
|
|
134
|
+
currency: currencyCode,
|
|
34
135
|
style: 'currency',
|
|
35
136
|
});
|
|
36
137
|
}
|
|
@@ -40,17 +141,99 @@ export class ItemOptionCard extends Base {
|
|
|
40
141
|
return html `${data.name} • ${priceMod} • ${data.weight_mod}`;
|
|
41
142
|
},
|
|
42
143
|
subtitle: data => html `${data.value}`,
|
|
43
|
-
})
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
144
|
+
})}
|
|
145
|
+
`;
|
|
146
|
+
}
|
|
147
|
+
get __transactionTemplateHref() {
|
|
148
|
+
var _a, _b, _c;
|
|
149
|
+
try {
|
|
150
|
+
const links = (_a = this.data) === null || _a === void 0 ? void 0 : _a._links;
|
|
151
|
+
const url = new URL((_c = (_b = links === null || links === void 0 ? void 0 : links['fx:subscription']) === null || _b === void 0 ? void 0 : _b.href) !== null && _c !== void 0 ? _c : '');
|
|
152
|
+
url.searchParams.set('zoom', 'transaction_template');
|
|
153
|
+
return url.toString();
|
|
154
|
+
}
|
|
155
|
+
catch (_d) {
|
|
156
|
+
//
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
get __defaultTemplateSetHref() {
|
|
160
|
+
var _a, _b, _c, _d;
|
|
161
|
+
const templateSetUri = (_b = ((_a = this.__cart) !== null && _a !== void 0 ? _a : this.__transactionTemplate)) === null || _b === void 0 ? void 0 : _b.template_set_uri;
|
|
162
|
+
if (templateSetUri === '') {
|
|
163
|
+
try {
|
|
164
|
+
const url = new URL((_d = (_c = this.__store) === null || _c === void 0 ? void 0 : _c._links['fx:template_sets'].href) !== null && _d !== void 0 ? _d : '');
|
|
165
|
+
url.searchParams.set('code', 'DEFAULT');
|
|
166
|
+
return url.toString();
|
|
167
|
+
}
|
|
168
|
+
catch (_e) {
|
|
169
|
+
//
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
get __localeCodesHelperHref() {
|
|
174
|
+
var _a;
|
|
175
|
+
if (this.__defaultTemplateSetHref || this.__templateSetHref) {
|
|
176
|
+
return (_a = this.localeCodes) !== null && _a !== void 0 ? _a : void 0;
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
get __transactionHref() {
|
|
180
|
+
var _a, _b;
|
|
181
|
+
return (_b = (_a = this.data) === null || _a === void 0 ? void 0 : _a._links['fx:transaction']) === null || _b === void 0 ? void 0 : _b.href;
|
|
182
|
+
}
|
|
183
|
+
get __templateSetHref() {
|
|
184
|
+
var _a;
|
|
185
|
+
const cart = (_a = this.__cart) !== null && _a !== void 0 ? _a : this.__transactionTemplate;
|
|
186
|
+
// TODO: remove the directive below once SDK is updated
|
|
187
|
+
// @ts-expect-error SDK types are incomplete
|
|
188
|
+
const currencyCode = cart === null || cart === void 0 ? void 0 : cart.currency_code;
|
|
189
|
+
if (!currencyCode)
|
|
190
|
+
return (cart === null || cart === void 0 ? void 0 : cart.template_set_uri) || void 0;
|
|
191
|
+
}
|
|
192
|
+
get __storeHref() {
|
|
193
|
+
var _a, _b;
|
|
194
|
+
return (_b = (_a = this.data) === null || _a === void 0 ? void 0 : _a._links['fx:store']) === null || _b === void 0 ? void 0 : _b.href;
|
|
195
|
+
}
|
|
196
|
+
get __cartHref() {
|
|
197
|
+
var _a, _b;
|
|
198
|
+
const links = (_a = this.data) === null || _a === void 0 ? void 0 : _a._links;
|
|
199
|
+
return (_b = links === null || links === void 0 ? void 0 : links['fx:cart']) === null || _b === void 0 ? void 0 : _b.href;
|
|
200
|
+
}
|
|
201
|
+
get __transactionTemplate() {
|
|
202
|
+
var _a, _b;
|
|
203
|
+
const selector = `#${this.__transactionTemplateLoaderId}`;
|
|
204
|
+
const loader = this.renderRoot.querySelector(selector);
|
|
205
|
+
return (_b = (_a = loader === null || loader === void 0 ? void 0 : loader.data) === null || _a === void 0 ? void 0 : _a._embedded['fx:transaction_template']) !== null && _b !== void 0 ? _b : null;
|
|
206
|
+
}
|
|
207
|
+
get __defaultTemplateSet() {
|
|
208
|
+
var _a, _b;
|
|
209
|
+
const selector = `#${this.__defaultTemplateSetLoaderId}`;
|
|
210
|
+
const loader = this.renderRoot.querySelector(selector);
|
|
211
|
+
return (_b = (_a = loader === null || loader === void 0 ? void 0 : loader.data) === null || _a === void 0 ? void 0 : _a._embedded['fx:template_sets'][0]) !== null && _b !== void 0 ? _b : null;
|
|
212
|
+
}
|
|
213
|
+
get __localeCodesHelper() {
|
|
214
|
+
var _a, _b;
|
|
215
|
+
const selector = `#${this.__localeCodesHelperLoaderId}`;
|
|
216
|
+
return (_b = (_a = this.renderRoot.querySelector(selector)) === null || _a === void 0 ? void 0 : _a.data) !== null && _b !== void 0 ? _b : null;
|
|
217
|
+
}
|
|
218
|
+
get __transaction() {
|
|
219
|
+
var _a, _b;
|
|
220
|
+
const selector = `#${this.__transactionLoaderId}`;
|
|
221
|
+
return (_b = (_a = this.renderRoot.querySelector(selector)) === null || _a === void 0 ? void 0 : _a.data) !== null && _b !== void 0 ? _b : null;
|
|
222
|
+
}
|
|
223
|
+
get __templateSet() {
|
|
224
|
+
var _a, _b;
|
|
225
|
+
const selector = `#${this.__templateSetLoaderId}`;
|
|
226
|
+
return (_b = (_a = this.renderRoot.querySelector(selector)) === null || _a === void 0 ? void 0 : _a.data) !== null && _b !== void 0 ? _b : null;
|
|
227
|
+
}
|
|
228
|
+
get __store() {
|
|
229
|
+
var _a, _b;
|
|
230
|
+
const selector = `#${this.__storeLoaderId}`;
|
|
231
|
+
return (_b = (_a = this.renderRoot.querySelector(selector)) === null || _a === void 0 ? void 0 : _a.data) !== null && _b !== void 0 ? _b : null;
|
|
232
|
+
}
|
|
233
|
+
get __cart() {
|
|
234
|
+
var _a, _b;
|
|
235
|
+
const selector = `#${this.__cartLoaderId}`;
|
|
236
|
+
return (_b = (_a = this.renderRoot.querySelector(selector)) === null || _a === void 0 ? void 0 : _a.data) !== null && _b !== void 0 ? _b : null;
|
|
54
237
|
}
|
|
55
238
|
}
|
|
56
239
|
//# sourceMappingURL=ItemOptionCard.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ItemOptionCard.js","sourceRoot":"","sources":["../../../../src/elements/public/ItemOptionCard/ItemOptionCard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,IAAI,EAAE,MAAM,UAAU,CAAC;AAKhD,OAAO,EAAE,iBAAiB,EAAE,wCAAqC;AACjE,OAAO,EAAE,WAAW,EAAE,0CAAuC;AAE7D,MAAM,EAAE,GAAG,kBAAkB,CAAC;AAC9B,MAAM,IAAI,GAAG,iBAAiB,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;AAEhD;;;;;;;;;;;GAWG;AACH,MAAM,OAAO,cAAe,SAAQ,IAAU;IAA9C;;QACU,sBAAiB,GAAG,EAAE,CAAC;QAEvB,eAAU,GAAG,EAAE,CAAC;IAwC1B,CAAC;IAtCC,MAAM;QACJ,OAAO,KAAK,CAAC,MAAM,CAAC;YAClB,KAAK,EAAE,IAAI,CAAC,EAAE;gBACZ,IAAI,QAAgB,CAAC;gBAErB,IAAI;oBACF,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,EAAE;wBACpE,qBAAqB,EAAE,CAAC;wBACxB,qBAAqB,EAAE,CAAC;wBACxB,eAAe,EAAE,IAAI,CAAC,iBAAiB;wBACvC,QAAQ,EAAE,IAAI,CAAC,UAAU;wBACzB,KAAK,EAAE,UAAU;qBAClB,CAAC,CAAC;iBACJ;gBAAC,WAAM;oBACN,QAAQ,GAAG,IAAI,CAAC;iBACjB;gBAED,OAAO,IAAI,CAAA,GAAG,IAAI,CAAC,IAAI,WAAW,QAAQ,WAAW,IAAI,CAAC,UAAU,EAAE,CAAC;YACzE,CAAC;YACD,QAAQ,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAA,GAAG,IAAI,CAAC,KAAK,EAAE;SACtC,CAAC,CAAC;IACL,CAAC;IAES,KAAK,CAAC,QAAQ;QAItB,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,QAAQ,EAAE,CAAC;QACxC,MAAM,CAAC,WAAW,EAAE,KAAK,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YAC7C,KAAK,CAAC,MAAM,CAAc,QAAQ,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC;YACjE,KAAK,CAAC,MAAM,CAAQ,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC;SACtD,CAAC,CAAC;QAEH,IAAI,CAAC,UAAU,GAAG,WAAW,CAAC,aAAa,CAAC;QAC5C,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC,iCAAiC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC;QAErF,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF","sourcesContent":["import { TemplateResult, html } from 'lit-html';\n\nimport { Data } from './types';\nimport { Rels } from '@foxy.io/sdk/backend';\nimport { Resource } from '@foxy.io/sdk/core';\nimport { TranslatableMixin } from '../../../mixins/translatable';\nimport { TwoLineCard } from '../CustomFieldCard/TwoLineCard';\n\nconst NS = 'item-option-card';\nconst Base = TranslatableMixin(TwoLineCard, NS);\n\n/**\n * Basic card displaying an item option.\n *\n * @slot title:before\n * @slot title:after\n *\n * @slot subtitle:before\n * @slot subtitle:after\n *\n * @element foxy-item-option-card\n * @since 1.17.0\n */\nexport class ItemOptionCard extends Base<Data> {\n private __currencyDisplay = '';\n\n private __currency = '';\n\n render(): TemplateResult {\n return super.render({\n title: data => {\n let priceMod: string;\n\n try {\n priceMod = Math.abs(data.price_mod).toLocaleString(this.lang || 'en', {\n maximumFractionDigits: 2,\n minimumFractionDigits: 2,\n currencyDisplay: this.__currencyDisplay,\n currency: this.__currency,\n style: 'currency',\n });\n } catch {\n priceMod = '--';\n }\n\n return html`${data.name} • ${priceMod} • ${data.weight_mod}`;\n },\n subtitle: data => html`${data.value}`,\n });\n }\n\n protected async _sendGet(): Promise<Data> {\n type Transaction = Resource<Rels.Transaction>;\n type Store = Resource<Rels.Store>;\n\n const discount = await super._sendGet();\n const [transaction, store] = await Promise.all([\n super._fetch<Transaction>(discount._links['fx:transaction'].href),\n super._fetch<Store>(discount._links['fx:store'].href),\n ]);\n\n this.__currency = transaction.currency_code;\n this.__currencyDisplay = store.use_international_currency_symbol ? 'code' : 'symbol';\n\n return discount;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"ItemOptionCard.js","sourceRoot":"","sources":["../../../../src/elements/public/ItemOptionCard/ItemOptionCard.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,iBAAiB,EAAE,wCAAqC;AACjE,OAAO,EAAE,WAAW,EAAE,0CAAuC;AAC7D,OAAO,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAC3D,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAEhC,MAAM,EAAE,GAAG,kBAAkB,CAAC;AAC9B,MAAM,IAAI,GAAG,iBAAiB,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;AAEhD;;;;;;;;;;;GAWG;AACH,MAAM,OAAO,cAAe,SAAQ,IAAU;IAA9C;;QAQE,gBAAW,GAAkB,IAAI,CAAC;QAEjB,kCAA6B,GAAG,2BAA2B,CAAC;QAE5D,iCAA4B,GAAG,0BAA0B,CAAC;QAE1D,gCAA2B,GAAG,mBAAmB,CAAC;QAElD,0BAAqB,GAAG,mBAAmB,CAAC;QAE5C,0BAAqB,GAAG,mBAAmB,CAAC;QAE5C,oBAAe,GAAG,aAAa,CAAC;QAEhC,mBAAc,GAAG,YAAY,CAAC;IAmNjD,CAAC;IAxOC,MAAM,KAAK,UAAU;QACnB,OAAO;YACL,GAAG,KAAK,CAAC,UAAU;YACnB,WAAW,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,cAAc,EAAE;SACzD,CAAC;IACJ,CAAC;IAkBD,MAAM;;QACJ,MAAM,eAAe,GAAG,OAAA,IAAI,CAAC,OAAO,0CAAE,iCAAiC,EAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC;QAC5F,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC;QAEvC,IAAI,YAAY,GAAkB,IAAI,CAAC;QAEvC,IAAI,WAAW,EAAE;YACf,YAAY,GAAG,WAAW,CAAC,aAAa,CAAC;SAC1C;aAAM;YACL,MAAM,IAAI,SAAG,IAAI,CAAC,MAAM,mCAAI,IAAI,CAAC,qBAAqB,CAAC;YAEvD,IAAI,IAAI,IAAI,eAAe,IAAI,IAAI,EAAE;gBACnC,2DAA2D;gBAC3D,4CAA4C;gBAC5C,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC;aACnC;iBAAM;gBACL,MAAM,cAAc,GAAG,IAAI,CAAC,mBAAmB,CAAC;gBAChD,MAAM,UAAU,SAAG,OAAC,IAAI,CAAC,aAAa,mCAAI,IAAI,CAAC,oBAAoB,CAAC,0CAAE,WAAW,CAAC;gBAClF,MAAM,UAAU,GAAG,UAAU,CAAC,CAAC,CAAC,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;gBAE5E,IAAI,UAAU;oBAAE,YAAY,eAAG,uBAAuB,CAAC,IAAI,CAAC,UAAU,CAAC,0CAAG,CAAC,oCAAK,IAAI,CAAC;aACtF;SACF;QAED,OAAO,IAAI,CAAA;;;;eAIA,SAAS,CAAC,IAAI,CAAC,yBAAyB,CAAC;aAC3C,IAAI,CAAC,6BAA6B;kBAC7B,GAAG,EAAE,CAAC,IAAI,CAAC,aAAa,EAAE;;;;;;;eAO7B,SAAS,CAAC,IAAI,CAAC,wBAAwB,CAAC;aAC1C,IAAI,CAAC,4BAA4B;kBAC5B,GAAG,EAAE,CAAC,IAAI,CAAC,aAAa,EAAE;;;;;;;eAO7B,SAAS,CAAC,IAAI,CAAC,uBAAuB,CAAC;aACzC,IAAI,CAAC,2BAA2B;kBAC3B,GAAG,EAAE,CAAC,IAAI,CAAC,aAAa,EAAE;;;;;;;eAO7B,SAAS,CAAC,IAAI,CAAC,iBAAiB,CAAC;aACnC,IAAI,CAAC,qBAAqB;kBACrB,GAAG,EAAE,CAAC,IAAI,CAAC,aAAa,EAAE;;;;;;;eAO7B,SAAS,CAAC,IAAI,CAAC,iBAAiB,CAAC;aACnC,IAAI,CAAC,qBAAqB;kBACrB,GAAG,EAAE,CAAC,IAAI,CAAC,aAAa,EAAE;;;;;;;eAO7B,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC;aAC7B,IAAI,CAAC,eAAe;kBACf,GAAG,EAAE,CAAC,IAAI,CAAC,aAAa,EAAE;;;;;;;eAO7B,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC;aAC5B,IAAI,CAAC,cAAc;kBACd,GAAG,EAAE,CAAC,IAAI,CAAC,aAAa,EAAE;;;;QAIpC,KAAK,CAAC,MAAM,CAAC;YACb,KAAK,EAAE,IAAI,CAAC,EAAE;gBACZ,IAAI,CAAC,YAAY,IAAI,CAAC,eAAe;oBAAE,OAAO,IAAI,CAAA,kBAAkB,CAAC;gBAErE,IAAI,QAAgB,CAAC;gBAErB,IAAI;oBACF,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,EAAE;wBACpE,qBAAqB,EAAE,CAAC;wBACxB,qBAAqB,EAAE,CAAC;wBACxB,eAAe,EAAE,eAAe;wBAChC,QAAQ,EAAE,YAAY;wBACtB,KAAK,EAAE,UAAU;qBAClB,CAAC,CAAC;iBACJ;gBAAC,WAAM;oBACN,QAAQ,GAAG,IAAI,CAAC;iBACjB;gBAED,OAAO,IAAI,CAAA,GAAG,IAAI,CAAC,IAAI,WAAW,QAAQ,WAAW,IAAI,CAAC,UAAU,EAAE,CAAC;YACzE,CAAC;YACD,QAAQ,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAA,GAAG,IAAI,CAAC,KAAK,EAAE;SACtC,CAAC;KACH,CAAC;IACJ,CAAC;IAED,IAAY,yBAAyB;;QACnC,IAAI;YACF,MAAM,KAAK,GAAG,MAAA,IAAI,CAAC,IAAI,0CAAE,MAA+D,CAAC;YACzF,MAAM,GAAG,GAAG,IAAI,GAAG,aAAC,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAG,iBAAiB,2CAAG,IAAI,mCAAI,EAAE,CAAC,CAAC;YAC5D,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;YACrD,OAAO,GAAG,CAAC,QAAQ,EAAE,CAAC;SACvB;QAAC,WAAM;YACN,EAAE;SACH;IACH,CAAC;IAED,IAAY,wBAAwB;;QAClC,MAAM,cAAc,SAAG,OAAC,IAAI,CAAC,MAAM,mCAAI,IAAI,CAAC,qBAAqB,CAAC,0CAAE,gBAAgB,CAAC;QAErF,IAAI,cAAc,KAAK,EAAE,EAAE;YACzB,IAAI;gBACF,MAAM,GAAG,GAAG,IAAI,GAAG,aAAC,IAAI,CAAC,OAAO,0CAAE,MAAM,CAAC,kBAAkB,EAAE,IAAI,mCAAI,EAAE,CAAC,CAAC;gBACzE,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;gBACxC,OAAO,GAAG,CAAC,QAAQ,EAAE,CAAC;aACvB;YAAC,WAAM;gBACN,EAAE;aACH;SACF;IACH,CAAC;IAED,IAAY,uBAAuB;;QACjC,IAAI,IAAI,CAAC,wBAAwB,IAAI,IAAI,CAAC,iBAAiB,EAAE;YAC3D,aAAO,IAAI,CAAC,WAAW,mCAAI,KAAK,CAAC,CAAC;SACnC;IACH,CAAC;IAED,IAAY,iBAAiB;;QAC3B,mBAAO,IAAI,CAAC,IAAI,0CAAE,MAAM,CAAC,gBAAgB,2CAAG,IAAI,CAAC;IACnD,CAAC;IAED,IAAY,iBAAiB;;QAC3B,MAAM,IAAI,SAAG,IAAI,CAAC,MAAM,mCAAI,IAAI,CAAC,qBAAqB,CAAC;QACvD,uDAAuD;QACvD,4CAA4C;QAC5C,MAAM,YAAY,GAAG,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,aAAmC,CAAC;QAE/D,IAAI,CAAC,YAAY;YAAE,OAAO,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,gBAAgB,KAAI,KAAK,CAAC,CAAC;IAC7D,CAAC;IAED,IAAY,WAAW;;QACrB,mBAAO,IAAI,CAAC,IAAI,0CAAE,MAAM,CAAC,UAAU,2CAAG,IAAI,CAAC;IAC7C,CAAC;IAED,IAAY,UAAU;;QACpB,MAAM,KAAK,GAAG,MAAA,IAAI,CAAC,IAAI,0CAAE,MAA+D,CAAC;QACzF,aAAO,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAG,SAAS,2CAAG,IAAI,CAAC;IAClC,CAAC;IAED,IAAY,qBAAqB;;QAE/B,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,6BAA6B,EAAE,CAAC;QAC1D,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAS,QAAQ,CAAC,CAAC;QAC/D,mBAAO,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,IAAI,0CAAE,SAAS,CAAC,yBAAyB,oCAAK,IAAI,CAAC;IACpE,CAAC;IAED,IAAY,oBAAoB;;QAE9B,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,4BAA4B,EAAE,CAAC;QACzD,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAS,QAAQ,CAAC,CAAC;QAC/D,mBAAO,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,IAAI,0CAAE,SAAS,CAAC,kBAAkB,EAAE,CAAC,oCAAK,IAAI,CAAC;IAChE,CAAC;IAED,IAAY,mBAAmB;;QAE7B,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,2BAA2B,EAAE,CAAC;QACxD,mBAAO,IAAI,CAAC,UAAU,CAAC,aAAa,CAAS,QAAQ,CAAC,0CAAE,IAAI,mCAAI,IAAI,CAAC;IACvE,CAAC;IAED,IAAY,aAAa;;QAEvB,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAClD,mBAAO,IAAI,CAAC,UAAU,CAAC,aAAa,CAAS,QAAQ,CAAC,0CAAE,IAAI,mCAAI,IAAI,CAAC;IACvE,CAAC;IAED,IAAY,aAAa;;QAEvB,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAClD,mBAAO,IAAI,CAAC,UAAU,CAAC,aAAa,CAAS,QAAQ,CAAC,0CAAE,IAAI,mCAAI,IAAI,CAAC;IACvE,CAAC;IAED,IAAY,OAAO;;QAEjB,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;QAC5C,mBAAO,IAAI,CAAC,UAAU,CAAC,aAAa,CAAS,QAAQ,CAAC,0CAAE,IAAI,mCAAI,IAAI,CAAC;IACvE,CAAC;IAED,IAAY,MAAM;;QAEhB,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;QAC3C,mBAAO,IAAI,CAAC,UAAU,CAAC,aAAa,CAAS,QAAQ,CAAC,0CAAE,IAAI,mCAAI,IAAI,CAAC;IACvE,CAAC;CACF","sourcesContent":["import type { PropertyDeclarations, TemplateResult } from 'lit-element';\nimport type { NucleonElement } from '../NucleonElement/NucleonElement';\nimport type { Resource } from '@foxy.io/sdk/core';\nimport type { Rels } from '@foxy.io/sdk/backend';\nimport type { Data } from './types';\n\nimport { TranslatableMixin } from '../../../mixins/translatable';\nimport { TwoLineCard } from '../CustomFieldCard/TwoLineCard';\nimport { ifDefined } from 'lit-html/directives/if-defined';\nimport { html } from 'lit-html';\n\nconst NS = 'item-option-card';\nconst Base = TranslatableMixin(TwoLineCard, NS);\n\n/**\n * Basic card displaying an item option.\n *\n * @slot title:before\n * @slot title:after\n *\n * @slot subtitle:before\n * @slot subtitle:after\n *\n * @element foxy-item-option-card\n * @since 1.17.0\n */\nexport class ItemOptionCard extends Base<Data> {\n static get properties(): PropertyDeclarations {\n return {\n ...super.properties,\n localeCodes: { type: String, attribute: 'locale-codes' },\n };\n }\n\n localeCodes: string | null = null;\n\n private readonly __transactionTemplateLoaderId = 'transactionTemplateLoader';\n\n private readonly __defaultTemplateSetLoaderId = 'defaultTemplateSetLoader';\n\n private readonly __localeCodesHelperLoaderId = 'localeCodesLoader';\n\n private readonly __transactionLoaderId = 'transactionLoader';\n\n private readonly __templateSetLoaderId = 'templateSetLoader';\n\n private readonly __storeLoaderId = 'storeLoader';\n\n private readonly __cartLoaderId = 'cartLoader';\n\n render(): TemplateResult {\n const currencyDisplay = this.__store?.use_international_currency_symbol ? 'code' : 'symbol';\n const transaction = this.__transaction;\n\n let currencyCode: string | null = null;\n\n if (transaction) {\n currencyCode = transaction.currency_code;\n } else {\n const cart = this.__cart ?? this.__transactionTemplate;\n\n if (cart && 'currency_code' in cart) {\n // TODO: remove the directive below once the SDK is updated\n // @ts-expect-error SDK types are incomplete\n currencyCode = cart.currency_code;\n } else {\n const allLocaleCodes = this.__localeCodesHelper;\n const localeCode = (this.__templateSet ?? this.__defaultTemplateSet)?.locale_code;\n const localeInfo = localeCode ? allLocaleCodes?.values[localeCode] : void 0;\n\n if (localeInfo) currencyCode = /Currency: ([A-Z]{3})/g.exec(localeInfo)?.[1] ?? null;\n }\n }\n\n return html`\n <foxy-nucleon\n class=\"hidden\"\n infer=\"\"\n href=${ifDefined(this.__transactionTemplateHref)}\n id=${this.__transactionTemplateLoaderId}\n @update=${() => this.requestUpdate()}\n >\n </foxy-nucleon>\n\n <foxy-nucleon\n class=\"hidden\"\n infer=\"\"\n href=${ifDefined(this.__defaultTemplateSetHref)}\n id=${this.__defaultTemplateSetLoaderId}\n @update=${() => this.requestUpdate()}\n >\n </foxy-nucleon>\n\n <foxy-nucleon\n class=\"hidden\"\n infer=\"\"\n href=${ifDefined(this.__localeCodesHelperHref)}\n id=${this.__localeCodesHelperLoaderId}\n @update=${() => this.requestUpdate()}\n >\n </foxy-nucleon>\n\n <foxy-nucleon\n class=\"hidden\"\n infer=\"\"\n href=${ifDefined(this.__transactionHref)}\n id=${this.__transactionLoaderId}\n @update=${() => this.requestUpdate()}\n >\n </foxy-nucleon>\n\n <foxy-nucleon\n class=\"hidden\"\n infer=\"\"\n href=${ifDefined(this.__templateSetHref)}\n id=${this.__templateSetLoaderId}\n @update=${() => this.requestUpdate()}\n >\n </foxy-nucleon>\n\n <foxy-nucleon\n class=\"hidden\"\n infer=\"\"\n href=${ifDefined(this.__storeHref)}\n id=${this.__storeLoaderId}\n @update=${() => this.requestUpdate()}\n >\n </foxy-nucleon>\n\n <foxy-nucleon\n class=\"hidden\"\n infer=\"\"\n href=${ifDefined(this.__cartHref)}\n id=${this.__cartLoaderId}\n @update=${() => this.requestUpdate()}\n >\n </foxy-nucleon>\n\n ${super.render({\n title: data => {\n if (!currencyCode || !currencyDisplay) return html`​`;\n\n let priceMod: string;\n\n try {\n priceMod = Math.abs(data.price_mod).toLocaleString(this.lang || 'en', {\n maximumFractionDigits: 2,\n minimumFractionDigits: 2,\n currencyDisplay: currencyDisplay,\n currency: currencyCode,\n style: 'currency',\n });\n } catch {\n priceMod = '--';\n }\n\n return html`${data.name} • ${priceMod} • ${data.weight_mod}`;\n },\n subtitle: data => html`${data.value}`,\n })}\n `;\n }\n\n private get __transactionTemplateHref() {\n try {\n const links = this.data?._links as Partial<Record<string, { href: string }>> | undefined;\n const url = new URL(links?.['fx:subscription']?.href ?? '');\n url.searchParams.set('zoom', 'transaction_template');\n return url.toString();\n } catch {\n //\n }\n }\n\n private get __defaultTemplateSetHref() {\n const templateSetUri = (this.__cart ?? this.__transactionTemplate)?.template_set_uri;\n\n if (templateSetUri === '') {\n try {\n const url = new URL(this.__store?._links['fx:template_sets'].href ?? '');\n url.searchParams.set('code', 'DEFAULT');\n return url.toString();\n } catch {\n //\n }\n }\n }\n\n private get __localeCodesHelperHref() {\n if (this.__defaultTemplateSetHref || this.__templateSetHref) {\n return this.localeCodes ?? void 0;\n }\n }\n\n private get __transactionHref() {\n return this.data?._links['fx:transaction']?.href;\n }\n\n private get __templateSetHref() {\n const cart = this.__cart ?? this.__transactionTemplate;\n // TODO: remove the directive below once SDK is updated\n // @ts-expect-error SDK types are incomplete\n const currencyCode = cart?.currency_code as string | undefined;\n\n if (!currencyCode) return cart?.template_set_uri || void 0;\n }\n\n private get __storeHref() {\n return this.data?._links['fx:store']?.href;\n }\n\n private get __cartHref() {\n const links = this.data?._links as Partial<Record<string, { href: string }>> | undefined;\n return links?.['fx:cart']?.href;\n }\n\n private get __transactionTemplate() {\n type Loader = NucleonElement<Resource<Rels.Subscription, { zoom: 'transaction_template' }>>;\n const selector = `#${this.__transactionTemplateLoaderId}`;\n const loader = this.renderRoot.querySelector<Loader>(selector);\n return loader?.data?._embedded['fx:transaction_template'] ?? null;\n }\n\n private get __defaultTemplateSet() {\n type Loader = NucleonElement<Resource<Rels.TemplateSets>>;\n const selector = `#${this.__defaultTemplateSetLoaderId}`;\n const loader = this.renderRoot.querySelector<Loader>(selector);\n return loader?.data?._embedded['fx:template_sets'][0] ?? null;\n }\n\n private get __localeCodesHelper() {\n type Loader = NucleonElement<Resource<Rels.LocaleCodes>>;\n const selector = `#${this.__localeCodesHelperLoaderId}`;\n return this.renderRoot.querySelector<Loader>(selector)?.data ?? null;\n }\n\n private get __transaction() {\n type Loader = NucleonElement<Resource<Rels.Transaction>>;\n const selector = `#${this.__transactionLoaderId}`;\n return this.renderRoot.querySelector<Loader>(selector)?.data ?? null;\n }\n\n private get __templateSet() {\n type Loader = NucleonElement<Resource<Rels.TemplateSet>>;\n const selector = `#${this.__templateSetLoaderId}`;\n return this.renderRoot.querySelector<Loader>(selector)?.data ?? null;\n }\n\n private get __store() {\n type Loader = NucleonElement<Resource<Rels.Store>>;\n const selector = `#${this.__storeLoaderId}`;\n return this.renderRoot.querySelector<Loader>(selector)?.data ?? null;\n }\n\n private get __cart() {\n type Loader = NucleonElement<Resource<Rels.Cart>>;\n const selector = `#${this.__cartLoaderId}`;\n return this.renderRoot.querySelector<Loader>(selector)?.data ?? null;\n }\n}\n"]}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import '@polymer/iron-icons';
|
|
2
2
|
import '@polymer/iron-icon';
|
|
3
3
|
import "../../internal/InternalSandbox/index.js";
|
|
4
|
+
import "../NucleonElement/index.js";
|
|
4
5
|
import "../Spinner/index.js";
|
|
5
6
|
import { ItemOptionCard } from "./ItemOptionCard.js";
|
|
6
7
|
customElements.define('foxy-item-option-card', ItemOptionCard);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/elements/public/ItemOptionCard/index.ts"],"names":[],"mappings":"AAAA,OAAO,qBAAqB,CAAC;AAC7B,OAAO,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/elements/public/ItemOptionCard/index.ts"],"names":[],"mappings":"AAAA,OAAO,qBAAqB,CAAC;AAC7B,OAAO,oBAAoB,CAAC;AAE5B,iDAA8C;AAE9C,oCAAiC;AACjC,6BAA0B;AAE1B,OAAO,EAAE,cAAc,EAAE,4BAAyB;AAElD,cAAc,CAAC,MAAM,CAAC,uBAAuB,EAAE,cAAc,CAAC,CAAC;AAE/D,OAAO,EAAE,cAAc,EAAE,CAAC","sourcesContent":["import '@polymer/iron-icons';\nimport '@polymer/iron-icon';\n\nimport '../../internal/InternalSandbox/index';\n\nimport '../NucleonElement/index';\nimport '../Spinner/index';\n\nimport { ItemOptionCard } from './ItemOptionCard';\n\ncustomElements.define('foxy-item-option-card', ItemOptionCard);\n\nexport { ItemOptionCard };\n"]}
|
|
@@ -36,6 +36,7 @@ export class NucleonElement extends InferrableMixin(LitElement) {
|
|
|
36
36
|
this.related = [];
|
|
37
37
|
this.__hrefToLoad = null;
|
|
38
38
|
this.__group = '';
|
|
39
|
+
this.__unsubscribeFromRumour = null;
|
|
39
40
|
this.__fetchEventQueue = [];
|
|
40
41
|
this.__service = interpret(Nucleon.machine.withConfig({
|
|
41
42
|
services: {
|
|
@@ -124,8 +125,11 @@ export class NucleonElement extends InferrableMixin(LitElement) {
|
|
|
124
125
|
return this.__service.state.context.data;
|
|
125
126
|
}
|
|
126
127
|
set data(data) {
|
|
128
|
+
this.__destroyRumour();
|
|
127
129
|
this.__service.send({ type: 'SET_DATA', data });
|
|
128
130
|
this.__hrefToLoad = null;
|
|
131
|
+
if (data)
|
|
132
|
+
this.__createRumour();
|
|
129
133
|
}
|
|
130
134
|
/**
|
|
131
135
|
* Rumour group. Elements in different groups will not share updates. Empty by default.
|
|
@@ -153,8 +157,7 @@ export class NucleonElement extends InferrableMixin(LitElement) {
|
|
|
153
157
|
this.__service.send({ type: 'FETCH' });
|
|
154
158
|
}
|
|
155
159
|
else {
|
|
156
|
-
this.
|
|
157
|
-
this.__service.send({ type: 'SET_DATA', data: null });
|
|
160
|
+
this.data = null;
|
|
158
161
|
}
|
|
159
162
|
}
|
|
160
163
|
/**
|
|
@@ -273,44 +276,47 @@ export class NucleonElement extends InferrableMixin(LitElement) {
|
|
|
273
276
|
/** POSTs to `element.parent`, shares response with the Rumour group and returns parsed JSON. */
|
|
274
277
|
async _sendPost(edits) {
|
|
275
278
|
this.__destroyRumour();
|
|
279
|
+
let data;
|
|
276
280
|
try {
|
|
277
281
|
const body = JSON.stringify(edits);
|
|
278
282
|
const postData = await this._fetch(this.parent, { body, method: 'POST' });
|
|
279
|
-
|
|
283
|
+
data = await this._fetch(postData._links.self.href);
|
|
280
284
|
const rumour = NucleonElement.Rumour(this.group);
|
|
281
285
|
const related = [...this.related, this.parent];
|
|
282
286
|
rumour.share({ data, related, source: data._links.self.href });
|
|
283
|
-
return data;
|
|
284
287
|
}
|
|
285
288
|
finally {
|
|
286
289
|
this.__createRumour();
|
|
287
290
|
}
|
|
291
|
+
return data;
|
|
288
292
|
}
|
|
289
293
|
/** GETs `element.href`, shares response with the Rumour group and returns parsed JSON. */
|
|
290
294
|
async _sendGet() {
|
|
291
295
|
this.__destroyRumour();
|
|
296
|
+
let data;
|
|
292
297
|
try {
|
|
293
|
-
|
|
298
|
+
data = await this._fetch(this.href);
|
|
294
299
|
NucleonElement.Rumour(this.group).share({ data, source: this.href });
|
|
295
|
-
return data;
|
|
296
300
|
}
|
|
297
301
|
finally {
|
|
298
302
|
this.__createRumour();
|
|
299
303
|
}
|
|
304
|
+
return data;
|
|
300
305
|
}
|
|
301
306
|
/** PATCHes `element.href`, shares response with the Rumour group and returns parsed JSON. */
|
|
302
307
|
async _sendPatch(edits) {
|
|
303
308
|
this.__destroyRumour();
|
|
309
|
+
let data;
|
|
304
310
|
try {
|
|
305
311
|
const body = JSON.stringify(edits);
|
|
306
|
-
|
|
312
|
+
data = await this._fetch(this.href, { body, method: 'PATCH' });
|
|
307
313
|
const rumour = NucleonElement.Rumour(this.group);
|
|
308
314
|
rumour.share({ data, source: this.href, related: this.related });
|
|
309
|
-
return data;
|
|
310
315
|
}
|
|
311
316
|
finally {
|
|
312
317
|
this.__createRumour();
|
|
313
318
|
}
|
|
319
|
+
return data;
|
|
314
320
|
}
|
|
315
321
|
/** DELETEs `element.href`, shares response with the Rumour group and returns parsed JSON. */
|
|
316
322
|
async _sendDelete() {
|
|
@@ -320,11 +326,11 @@ export class NucleonElement extends InferrableMixin(LitElement) {
|
|
|
320
326
|
const rumour = NucleonElement.Rumour(this.group);
|
|
321
327
|
const related = [...this.related, this.parent];
|
|
322
328
|
rumour.share({ data: null, source: this.href, related });
|
|
323
|
-
return null;
|
|
324
329
|
}
|
|
325
330
|
finally {
|
|
326
331
|
this.__createRumour();
|
|
327
332
|
}
|
|
333
|
+
return null;
|
|
328
334
|
}
|
|
329
335
|
// this getter is used by LitElement to set the "state" attribute
|
|
330
336
|
get __state() {
|
|
@@ -364,6 +370,7 @@ export class NucleonElement extends InferrableMixin(LitElement) {
|
|
|
364
370
|
__destroyRumour() {
|
|
365
371
|
var _a;
|
|
366
372
|
(_a = this.__unsubscribeFromRumour) === null || _a === void 0 ? void 0 : _a.call(this);
|
|
373
|
+
this.__unsubscribeFromRumour = null;
|
|
367
374
|
}
|
|
368
375
|
__createServer() {
|
|
369
376
|
this.__fetchEventHandler = this.__handleFetchEvent.bind(this);
|
|
@@ -376,11 +383,15 @@ export class NucleonElement extends InferrableMixin(LitElement) {
|
|
|
376
383
|
var _a;
|
|
377
384
|
try {
|
|
378
385
|
const oldData = (_a = this.__service.state) === null || _a === void 0 ? void 0 : _a.context.data;
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
386
|
+
const newData = oldData ? update(oldData) : oldData;
|
|
387
|
+
if (newData !== oldData) {
|
|
388
|
+
this.data = newData;
|
|
389
|
+
if (!newData) {
|
|
390
|
+
const result = UpdateResult.ResourceDeleted;
|
|
391
|
+
const event = new UpdateEvent('update', { detail: { result } });
|
|
392
|
+
this.dispatchEvent(event);
|
|
393
|
+
}
|
|
394
|
+
}
|
|
384
395
|
}
|
|
385
396
|
catch (err) {
|
|
386
397
|
if (err instanceof Rumour.UpdateError) {
|