@foxy.io/elements 1.18.0-beta.21 → 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 +2 -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-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-f69afa4b.js → shared-08156595.js} +1 -1
- package/dist/cdn/{shared-fedeb7b2.js → shared-0821cfdc.js} +1 -1
- package/dist/cdn/{shared-6ac71f60.js → shared-08e27fe9.js} +3 -3
- package/dist/cdn/{shared-13e6fe8a.js → shared-0ce006b9.js} +1 -1
- package/dist/cdn/shared-1000b848.js +1 -0
- package/dist/cdn/{shared-d7dfd3d8.js → shared-101d1234.js} +2 -2
- package/dist/cdn/{shared-9643b6c8.js → shared-1c94a156.js} +1 -1
- package/dist/cdn/{shared-e39be772.js → shared-2092d86f.js} +1 -1
- package/dist/cdn/shared-21679ebd.js +1 -0
- package/dist/cdn/{shared-8e6a8a88.js → shared-2add595d.js} +1 -1
- package/dist/cdn/{shared-459a5ec4.js → shared-2cc638ad.js} +1 -1
- package/dist/cdn/{shared-4817dcd1.js → shared-39c10b22.js} +1 -1
- package/dist/cdn/{shared-d0c5c38f.js → shared-404aa9cc.js} +1 -1
- package/dist/cdn/{shared-307382e5.js → shared-4849ef5b.js} +1 -1
- package/dist/cdn/shared-486d7bb5.js +1 -0
- package/dist/cdn/{shared-715ee51e.js → shared-4f9d2417.js} +1 -1
- package/dist/cdn/{shared-daab7e76.js → shared-5378bd8c.js} +1 -1
- package/dist/cdn/{shared-780ead03.js → shared-5a4829e3.js} +1 -1
- package/dist/cdn/{shared-d6a78c23.js → shared-5b177708.js} +1 -1
- package/dist/cdn/{shared-7788977c.js → shared-5ea18e60.js} +1 -1
- package/dist/cdn/{shared-674c1c04.js → shared-62a54a6c.js} +1 -1
- package/dist/cdn/{shared-d7c271d2.js → shared-62c088b7.js} +1 -1
- package/dist/cdn/{shared-71beb422.js → shared-639c666f.js} +1 -1
- package/dist/cdn/{shared-9862ca28.js → shared-6581241a.js} +1 -1
- package/dist/cdn/{shared-206b4ae2.js → shared-6cb1015f.js} +1 -1
- package/dist/cdn/{shared-2bd47510.js → shared-71d8d167.js} +3 -3
- package/dist/cdn/{shared-45db2087.js → shared-71f2ef1f.js} +1 -1
- package/dist/cdn/{shared-25ecdf66.js → shared-744cf66b.js} +1 -1
- package/dist/cdn/{shared-80378a15.js → shared-7d4fb1a2.js} +1 -1
- package/dist/cdn/{shared-a4165acb.js → shared-80fc2b6a.js} +1 -1
- package/dist/cdn/{shared-ef98812b.js → shared-83596b46.js} +1 -1
- package/dist/cdn/shared-868065de.js +1 -0
- package/dist/cdn/{shared-02d4bc14.js → shared-88c4cfec.js} +1 -1
- package/dist/cdn/{shared-e7e0ee80.js → shared-8dd0af4d.js} +1 -1
- package/dist/cdn/{shared-46e22714.js → shared-988ec916.js} +1 -1
- package/dist/cdn/{shared-915e8780.js → shared-9bdacf65.js} +1 -1
- package/dist/cdn/{shared-72279946.js → shared-9f436277.js} +1 -1
- package/dist/cdn/shared-a0c8faf2.js +1 -0
- package/dist/cdn/{shared-0f29fba2.js → shared-a37abe4c.js} +2 -2
- package/dist/cdn/{shared-a6de944b.js → shared-a41234b4.js} +1 -1
- package/dist/cdn/{shared-0a40a749.js → shared-af226a9a.js} +1 -1
- package/dist/cdn/{shared-3b249b20.js → shared-b40cf0dd.js} +1 -1
- package/dist/cdn/{shared-7a739f89.js → shared-bb0e33c3.js} +1 -1
- package/dist/cdn/{shared-18d42566.js → shared-bc814810.js} +1 -1
- package/dist/cdn/{shared-1392183b.js → shared-bd252323.js} +1 -1
- package/dist/cdn/{shared-0d3bec9f.js → shared-be66c2e7.js} +1 -1
- package/dist/cdn/{shared-f821859e.js → shared-c774d080.js} +1 -1
- package/dist/cdn/{shared-78f6e15f.js → shared-c95c17e6.js} +1 -1
- package/dist/cdn/shared-cba08e1c.js +1 -0
- package/dist/cdn/{shared-33912f50.js → shared-d518bd55.js} +1 -1
- package/dist/cdn/shared-d61b3e4f.js +1 -0
- package/dist/cdn/{shared-3e8cd935.js → shared-d8dc97f0.js} +1 -1
- package/dist/cdn/{shared-2d2ce3b1.js → shared-de036570.js} +1 -1
- package/dist/cdn/{shared-7992035c.js → shared-ed0dee03.js} +3 -3
- package/dist/cdn/shared-f7e4cd67.js +1 -0
- package/dist/cdn/{shared-e0615601.js → shared-f80f402a.js} +1 -1
- package/dist/cdn/translations/payments-api-payment-preset-form/en.json +2 -2
- 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.js +2 -1
- 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/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/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/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/GiftCardForm/GiftCardForm.js +3 -3
- package/dist/elements/public/GiftCardForm/GiftCardForm.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/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 +1 -1
- package/dist/elements/public/PaymentsApiFraudProtectionCard/PaymentsApiFraudProtectionCard.js +6 -3
- package/dist/elements/public/PaymentsApiFraudProtectionCard/PaymentsApiFraudProtectionCard.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 +1 -1
- package/dist/elements/public/PaymentsApiPaymentMethodCard/PaymentsApiPaymentMethodCard.js +6 -3
- package/dist/elements/public/PaymentsApiPaymentMethodCard/PaymentsApiPaymentMethodCard.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/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/mixins/themeable.js +19 -8
- package/dist/mixins/themeable.js.map +1 -1
- package/package.json +2 -1
- package/dist/cdn/shared-0301f5c5.js +0 -1
- package/dist/cdn/shared-324f9551.js +0 -1
- package/dist/cdn/shared-4cbd9a4f.js +0 -1
- package/dist/cdn/shared-7304a1ab.js +0 -1
- package/dist/cdn/shared-9291d900.js +0 -1
- package/dist/cdn/shared-ad3c1ddc.js +0 -1
- package/dist/cdn/shared-c6567654.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GiftCardForm.js","sourceRoot":"","sources":["../../../../src/elements/public/GiftCardForm/GiftCardForm.ts"],"names":[],"mappings":"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","sourcesContent":["import { Data, GiftCardCodes } from './types';\nimport { Option, Type } from '../QueryBuilder/types';\nimport { PropertyDeclarations, TemplateResult, html } from 'lit-element';\nimport { ScopedElementsMap, ScopedElementsMixin } from '@open-wc/scoped-elements';\n\nimport { ButtonElement } from '@vaadin/vaadin-button';\nimport { CategoryRestrictionsPage } from './private/CategoryRestrictionsPage';\nimport { Column } from '../Table/types';\nimport { ComboBoxElement } from '@vaadin/vaadin-combo-box';\nimport { ConfigurableMixin } from '../../../mixins/configurable';\nimport { DialogHideEvent } from '../../private/Dialog/DialogHideEvent';\nimport { EditableList } from '../../private/EditableList/EditableList';\nimport { FormDialog } from '../FormDialog';\nimport { FrequencyInput } from '../../private/FrequencyInput/FrequencyInput';\nimport { FrequencyInputChangeEvent } from '../../private/FrequencyInput/FrequencyInputChangeEvent';\nimport { Group } from '../../private/Group/Group';\nimport { InternalConfirmDialog } from '../../internal/InternalConfirmDialog/InternalConfirmDialog';\nimport { NucleonElement } from '../NucleonElement/NucleonElement';\nimport { NucleonV8N } from '../NucleonElement/types';\nimport { PropertyTable } from '../../private/PropertyTable/PropertyTable';\nimport { QueryBuilder } from '../QueryBuilder/QueryBuilder';\nimport { Rels } from '@foxy.io/sdk/backend';\nimport { Resource } from '@foxy.io/sdk/core';\nimport { ResponsiveMixin } from '../../../mixins/responsive';\nimport { TextFieldElement } from '@vaadin/vaadin-text-field';\nimport { ThemeableMixin } from '../../../mixins/themeable';\nimport { TranslatableMixin } from '../../../mixins/translatable';\nimport { classMap } from '../../../utils/class-map';\nimport { currencies } from './currencies';\nimport { ifDefined } from 'lit-html/directives/if-defined';\n\nconst NS = 'gift-card-form';\nconst Base = ScopedElementsMixin(\n ThemeableMixin(ConfigurableMixin(ResponsiveMixin(TranslatableMixin(NucleonElement, NS))))\n);\n\n/**\n * Form element for creating or editing gift cards (`fx:gift_card`).\n *\n * @slot name:before\n * @slot name:after\n *\n * @slot currency:before\n * @slot currency:after\n *\n * @slot expires:before\n * @slot expires:after\n *\n * @slot codes:before\n * @slot codes:after\n *\n * @slot product-restrictions:before\n * @slot product-restrictions:after\n *\n * @slot category-restrictions:before\n * @slot category-restrictions: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-gift-card-form\n * @since 1.15.0\n */\nexport class GiftCardForm extends Base<Data> {\n static get scopedElements(): ScopedElementsMap {\n return {\n 'vaadin-text-field': customElements.get('vaadin-text-field'),\n 'vaadin-combo-box': customElements.get('vaadin-combo-box'),\n 'vaadin-button': customElements.get('vaadin-button'),\n\n 'iron-icon': customElements.get('iron-icon'),\n\n 'foxy-internal-gift-card-form-provisioning-control': customElements.get(\n 'foxy-internal-gift-card-form-provisioning-control'\n ),\n\n 'foxy-internal-confirm-dialog': customElements.get('foxy-internal-confirm-dialog'),\n 'foxy-internal-sandbox': customElements.get('foxy-internal-sandbox'),\n 'foxy-query-builder': customElements.get('foxy-query-builder'),\n 'foxy-form-dialog': customElements.get('foxy-form-dialog'),\n 'foxy-pagination': customElements.get('foxy-pagination'),\n 'foxy-spinner': customElements.get('foxy-spinner'),\n 'foxy-table': customElements.get('foxy-table'),\n 'foxy-i18n': customElements.get('foxy-i18n'),\n\n 'x-category-restrictions-page': CategoryRestrictionsPage,\n 'x-frequency-input': FrequencyInput,\n 'x-property-table': PropertyTable,\n 'x-editable-list': EditableList,\n 'x-group': Group,\n };\n }\n\n static get properties(): PropertyDeclarations {\n return {\n ...super.properties,\n __codesTableQuery: { attribute: false },\n __itemCategories: { attribute: false },\n };\n }\n\n static get v8n(): NucleonV8N<Data> {\n return [\n ({ name: v }) => !!v || 'name_required',\n ({ name: v }) => !v || v.length <= 50 || 'name_too_long',\n\n form => {\n if (form.provisioning_config?.allow_autoprovisioning) {\n if (!form.sku) return 'sku:v8n_required';\n if (form.sku.length > 200) return 'sku:v8n_too_long';\n }\n\n return true;\n },\n\n form => {\n const v = form.provisioning_config?.initial_balance_min;\n return typeof v === 'number' && v <= 0 ? 'min-balance:v8n_negative' : true;\n },\n\n form => {\n const v = form.provisioning_config?.initial_balance_max;\n return typeof v === 'number' && v <= 0 ? 'max-balance:v8n_negative' : true;\n },\n ];\n }\n\n private __codesTableColumns: Column<GiftCardCodes>[] = [\n {\n header: ctx => html`<foxy-i18n lang=${ctx.lang} key=\"code\" ns=${ctx.ns}></foxy-i18n>`,\n cell: ctx => {\n const isDisabled = !this.in('idle') || this.disabledSelector.matches('codes', true);\n\n return html`\n <div class=\"flex items-center gap-xs\">\n <vaadin-button\n theme=\"tertiary-inline contrast\"\n class=\"p-0\"\n ?disabled=${isDisabled}\n @click=${(evt: CustomEvent) => {\n const dialog = this.renderRoot.querySelector<FormDialog>('#code-dialog')!;\n const button = evt.currentTarget as ButtonElement;\n\n dialog.href = ctx.data._links.self.href;\n dialog.show(button);\n }}\n >\n <span class=\"font-tnum\">${ctx.data.code}</span>\n </vaadin-button>\n\n <foxy-copy-to-clipboard\n ?disabled=${isDisabled}\n text=${ctx.data.code}\n lang=${ctx.lang}\n ns=\"${ctx.ns} copy-to-clipboard\"\n >\n </foxy-copy-to-clipboard>\n </div>\n `;\n },\n },\n {\n header: ctx => html`<foxy-i18n lang=${ctx.lang} key=\"date_created\" ns=${ctx.ns}></foxy-i18n>`,\n cell: ctx => html`\n <foxy-i18n\n options=${JSON.stringify({ value: ctx.data.date_created })}\n class=\"text-tertiary\"\n lang=${ctx.lang}\n key=\"date\"\n ns=${ctx.ns}\n >\n </foxy-i18n>\n `,\n },\n {\n hideBelow: 'sm',\n header: c => html`<foxy-i18n lang=${c.lang} key=\"end_date\" ns=${c.ns}></foxy-i18n>`,\n cell: ctx => html`\n <foxy-i18n\n options=${JSON.stringify({ value: ctx.data.end_date })}\n class=\"text-tertiary\"\n lang=${ctx.lang}\n key=\"date\"\n ns=${ctx.ns}\n >\n </foxy-i18n>\n `,\n },\n {\n header: c => html`<foxy-i18n lang=${c.lang} key=\"current_balance\" ns=${c.ns}></foxy-i18n>`,\n cell: ctx => html`\n <foxy-i18n\n options=${JSON.stringify({\n amount: `${ctx.data.current_balance} ${this.data?.currency_code}`,\n currencyDisplay: this.__currencyDisplay,\n })}\n lang=${ctx.lang}\n key=\"price\"\n ns=${ctx.ns}\n >\n </foxy-i18n>\n `,\n },\n ];\n\n private static readonly __codesQueryOptions: Option[] = [\n { label: 'code', path: 'code', type: Type.String },\n { label: 'current_balance', path: 'current_balance', type: Type.Number },\n { label: 'end_date', path: 'end_date', type: Type.Date },\n { label: 'date_created', path: 'date_created', type: Type.Date },\n { label: 'date_modified', path: 'date_modified', type: Type.Date },\n ];\n\n private __codesTableQuery: string | null = null;\n\n private __currencyDisplay = '';\n\n private __itemCategories = '';\n\n render(): TemplateResult {\n const hidden = this.hiddenSelector;\n const isNameHidden = hidden.matches('name', true);\n const isCurrencyHidden = hidden.matches('currency', true);\n const isExpiresHidden = hidden.matches('expires', true);\n\n return html`\n <div class=\"relative space-y-l\">\n ${isNameHidden && isCurrencyHidden && isExpiresHidden\n ? ''\n : html`\n <div class=\"grid grid-cols-1 sm-grid-cols-3 md-grid-cols-4 gap-m\">\n ${isNameHidden ? '' : html`<div class=\"md-col-span-2\">${this.__renderName()}</div>`}\n ${isCurrencyHidden ? '' : this.__renderCurrency()}\n ${isExpiresHidden ? '' : this.__renderExpires()}\n </div>\n `}\n\n <foxy-internal-gift-card-form-provisioning-control infer=\"provisioning\">\n </foxy-internal-gift-card-form-provisioning-control>\n\n ${hidden.matches('codes', true) || !this.data ? '' : this.__renderCodes()}\n ${hidden.matches('product-restrictions', true) ? '' : this.__renderProductRestrictions()}\n ${hidden.matches('category-restrictions', true) || !this.data\n ? ''\n : this.__renderCategoryRestrictions()}\n ${hidden.matches('timestamps', true) ? '' : this.__renderTimestamps()}\n ${hidden.matches('create', true) || !!this.data ? '' : this.__renderCreate()}\n ${hidden.matches('delete', true) || !this.data ? '' : this.__renderDelete()}\n\n <div\n data-testid=\"spinner\"\n class=${classMap({\n 'transition duration-500 ease-in-out absolute inset-0 flex': true,\n 'opacity-0 pointer-events-none': !this.in('busy') && !this.in('fail'),\n })}\n >\n <foxy-spinner\n layout=\"vertical\"\n class=\"m-auto p-m bg-base shadow-xs rounded-t-l rounded-b-l\"\n state=${this.in('fail') ? 'error' : this.in('busy') ? 'busy' : 'empty'}\n lang=${this.lang}\n ns=\"${this.ns} ${customElements.get('foxy-spinner')?.defaultNS ?? ''}\"\n >\n </foxy-spinner>\n </div>\n </div>\n `;\n }\n\n protected async _sendGet(): Promise<Data> {\n type Store = Resource<Rels.Store>;\n\n const giftCard = await super._sendGet();\n const store = await super._fetch<Store>(giftCard._links['fx:store'].href);\n const categoriesURL = new URL(store._links['fx:item_categories'].href);\n\n categoriesURL.searchParams.set('limit', '5');\n this.__currencyDisplay = store.use_international_currency_symbol ? 'code' : 'symbol';\n this.__itemCategories = categoriesURL.toString();\n\n return giftCard;\n }\n\n private __getErrorMessage(prefix: string) {\n const error = this.errors.find(err => err.startsWith(prefix));\n return error ? this.t(error.replace(prefix, 'v8n')).toString() : '';\n }\n\n private __getValidator(prefix: string) {\n return () => !this.errors.some(err => err.startsWith(prefix));\n }\n\n private __renderName() {\n return html`\n <div>\n ${this.renderTemplateOrSlot('name:before')}\n\n <vaadin-text-field\n error-message=${this.__getErrorMessage('name')}\n helper-text=${this.t('gift_card_name_helper_text')}\n data-testid=\"name\"\n class=\"w-full\"\n label=${this.t('name')}\n .checkValidity=${this.__getValidator('name')}\n .value=${this.form.name ?? ''}\n ?disabled=${!this.in('idle') || this.disabledSelector.matches('name', true)}\n ?readonly=${this.readonlySelector.matches('name', true)}\n required\n @keydown=${(evt: KeyboardEvent) => evt.key === 'Enter' && this.submit()}\n @input=${(evt: CustomEvent) => {\n const newName = (evt.currentTarget as TextFieldElement).value;\n this.edit({ name: newName });\n }}\n >\n </vaadin-text-field>\n\n ${this.renderTemplateOrSlot('name:after')}\n </div>\n `;\n }\n\n private __renderCurrency() {\n return html`\n <div>\n ${this.renderTemplateOrSlot('currency:before')}\n\n <vaadin-combo-box\n item-label-path=\"label\"\n item-value-path=\"value\"\n item-id-path=\"value\"\n data-testid=\"currency\"\n class=\"w-full\"\n label=${this.t('currency')}\n ?disabled=${!this.in('idle') || this.disabledSelector.matches('currency', true)}\n ?readonly=${this.readonlySelector.matches('currency', true)}\n .value=${this.form.currency_code?.toLowerCase() ?? ''}\n .items=${currencies.map(code => ({\n label: `${this.t(`currency_${code}`)} (${code.toUpperCase()})`,\n value: code,\n }))}\n @change=${(evt: CustomEvent) => {\n const comboBox = evt.currentTarget as ComboBoxElement;\n this.edit({ currency_code: comboBox.value });\n }}\n >\n </vaadin-combo-box>\n\n ${this.renderTemplateOrSlot('currency:after')}\n </div>\n `;\n }\n\n private __renderExpires() {\n return html`\n <div>\n ${this.renderTemplateOrSlot('expires:before')}\n\n <x-frequency-input\n placeholder=${this.t('select')}\n data-testid=\"expires\"\n label=${this.t('expires_after')}\n class=\"w-full\"\n lang=${this.lang}\n ns=${this.ns}\n ?disabled=${!this.in('idle') || this.disabledSelector.matches('expires', true)}\n ?readonly=${this.readonlySelector.matches('expires', true)}\n .value=${this.form.expires_after ?? ''}\n @change=${(evt: FrequencyInputChangeEvent) => {\n const input = evt.currentTarget as FrequencyInput;\n this.edit({ expires_after: input.value });\n }}\n >\n </x-frequency-input>\n\n ${this.renderTemplateOrSlot('expires:after')}\n </div>\n `;\n }\n\n private __renderCodes() {\n const { disabledSelector, readonlySelector, hiddenSelector, group, data, lang, ns } = this;\n\n const isDisabled = !this.in('idle') || disabledSelector.matches('codes', true);\n const filters = this.__codesTableQuery;\n const url = new URL(data!._links['fx:gift_card_codes'].href);\n\n new URLSearchParams(filters ?? '').forEach((value, name) => url.searchParams.set(name, value));\n url.searchParams.set('limit', '5');\n\n const filterButtonLabel = filters === null ? 'filter' : 'clear_filters';\n const filterButtonIcon = `icons:${filters === null ? 'filter-list' : 'clear'}`;\n\n return html`\n <div data-testid=\"codes\">\n <foxy-form-dialog\n disabledcontrols=${disabledSelector.zoom('codes:generate:form').toString()}\n readonlycontrols=${readonlySelector.zoom('codes:generate:form').toString()}\n hiddencontrols=\"save-button ${hiddenSelector.zoom('codes:generate:form').toString()}\"\n header=\"generate\"\n parent=${data?._links['fx:generate_codes'].href ?? ''}\n group=${group}\n lang=${lang}\n form=\"foxy-generate-codes-form\"\n ns=${ns}\n id=\"generate-codes-dialog\"\n alert\n .related=${[url.toString()]}\n >\n </foxy-form-dialog>\n\n <foxy-form-dialog\n disabledcontrols=${disabledSelector.zoom('codes:form').toString()}\n readonlycontrols=${readonlySelector.zoom('codes:form').toString()}\n hiddencontrols=${hiddenSelector.zoom('codes:form').toString()}\n header=\"code\"\n parent=${url.toString()}\n group=${group}\n lang=${lang}\n form=\"foxy-gift-card-code-form\"\n ns=${ns}\n id=\"code-dialog\"\n >\n </foxy-form-dialog>\n\n <foxy-form-dialog\n disabledcontrols=${disabledSelector.zoom('codes:import:form').toString()}\n readonlycontrols=${readonlySelector.zoom('codes:import:form').toString()}\n hiddencontrols=\"save-button ${hiddenSelector.zoom('codes:import:form').toString()}\"\n header=\"import\"\n parent=${data!._links['fx:gift_card_codes'].href}\n group=${group}\n lang=${lang}\n form=\"foxy-gift-card-codes-form\"\n ns=${ns}\n id=\"import-dialog\"\n >\n </foxy-form-dialog>\n\n ${this.renderTemplateOrSlot('codes:before')}\n\n <div class=\"flex items-center justify-between mb-xs space-x-s\">\n <foxy-i18n\n class=\"text-s font-medium text-secondary leading-none flex-1\"\n lang=${lang}\n key=\"code_plural\"\n ns=${ns}\n >\n </foxy-i18n>\n\n <vaadin-button\n data-testid=\"codes:generate-button\"\n theme=\"success tertiary small\"\n ?disabled=${isDisabled}\n @click=${(evt: CustomEvent) => {\n const dialog = this.renderRoot.querySelector<FormDialog>('#generate-codes-dialog');\n const button = evt.currentTarget as ButtonElement;\n dialog?.show(button);\n }}\n >\n <foxy-i18n class=\"text-s\" lang=${lang} key=\"generate\" ns=${ns}></foxy-i18n>\n <iron-icon class=\"icon-inline text-s\" icon=\"icons:add\"></iron-icon>\n </vaadin-button>\n\n <vaadin-button\n data-testid=\"codes:import-button\"\n theme=\"contrast tertiary small\"\n ?disabled=${isDisabled}\n @click=${(evt: CustomEvent) => {\n const dialog = this.renderRoot.querySelector<FormDialog>('#import-dialog');\n const button = evt.currentTarget as ButtonElement;\n dialog?.show(button);\n }}\n >\n <foxy-i18n class=\"text-s\" lang=${lang} key=\"import\" ns=${ns}></foxy-i18n>\n <iron-icon class=\"icon-inline text-s\" icon=\"icons:open-in-browser\"></iron-icon>\n </vaadin-button>\n\n <vaadin-button\n data-testid=\"codes:filter-button\"\n theme=\"contrast ${filters === null ? 'tertiary' : ''} small\"\n ?disabled=${isDisabled}\n @click=${() => (this.__codesTableQuery = filters === null ? '' : null)}\n >\n <foxy-i18n class=\"text-s\" lang=${lang} key=${filterButtonLabel} ns=${ns}></foxy-i18n>\n <iron-icon class=\"icon-inline text-s\" icon=${filterButtonIcon}></iron-icon>\n </vaadin-button>\n </div>\n\n <foxy-query-builder\n class=\"bg-contrast-5 rounded-tl-l rounded-tr-s rounded-b-l p-m mb-s\"\n lang=${lang}\n ns=\"${ns} ${customElements.get('foxy-query-builder')?.defaultNS ?? ''}\"\n ?disabled=${isDisabled}\n ?hidden=${filters === null}\n .options=${GiftCardForm.__codesQueryOptions}\n .value=${filters ?? ''}\n @change=${(evt: CustomEvent) => {\n const queryBuilder = evt.currentTarget as QueryBuilder;\n this.__codesTableQuery = queryBuilder.value;\n }}\n >\n </foxy-query-builder>\n\n <foxy-pagination\n first=${url.toString()}\n lang=${lang}\n ns=\"${ns} ${customElements.get('foxy-pagination')?.defaultNS ?? ''}\"\n ?disabled=${isDisabled}\n >\n <foxy-table\n class=\"px-m mb-s border border-contrast-10 rounded-t-l rounded-b-l\"\n group=${group}\n lang=${lang}\n ns=${ns}\n .columns=${this.__codesTableColumns}\n >\n </foxy-table>\n </foxy-pagination>\n\n ${this.renderTemplateOrSlot('codes:after')}\n </div>\n `;\n }\n\n private __renderProductRestrictions() {\n const scope = 'product-restrictions';\n const isDisabled = !this.in('idle') || this.disabledSelector.matches(scope, true);\n const isReadonly = this.readonlySelector.matches(scope, true);\n const restrictions = this.form.product_code_restrictions ?? '';\n\n const groups = [\n { header: 'allow', items: [] as { label?: string; value: string }[] },\n { header: 'block', items: [] as { label?: string; value: string }[] },\n ];\n\n if (restrictions) {\n restrictions.split(',').forEach(value => {\n const isBlocklistValue = value.startsWith('-');\n const target = isBlocklistValue ? 1 : 0;\n const label = isBlocklistValue ? value.substring(1) : value;\n\n groups[target].items.push({ label, value });\n });\n }\n\n return html`\n <div data-testid=\"product-restrictions\">\n ${this.renderTemplateOrSlot('product-restrictions:before')}\n\n <div class=\"space-y-s\">\n <x-group frame>\n <foxy-i18n\n class=${isDisabled ? 'text-disabled' : 'text-secondary'}\n slot=\"header\"\n lang=${this.lang}\n key=\"product_restrictions\"\n ns=${this.ns}\n >\n </foxy-i18n>\n\n <div class=\"grid sm-grid-cols-2 bg-contrast-10\" style=\"gap: 1px\">\n ${groups.map((group, index) => {\n return html`\n <x-group class=\"bg-base pt-m\">\n <foxy-i18n\n class=${isDisabled ? 'text-disabled' : 'text-tertiary'}\n slot=\"header\"\n lang=${this.lang}\n key=${group.header}\n ns=${this.ns}\n >\n </foxy-i18n>\n\n <x-editable-list\n data-testid=\"product-restrictions:${group.header}\"\n lang=${this.lang}\n ns=${this.ns}\n ?disabled=${isDisabled}\n ?readonly=${isReadonly}\n .items=${group.items}\n @change=${(evt: CustomEvent) => {\n const newItemsByGroup = [\n index === 0 ? (evt.currentTarget as EditableList).items : groups[0].items,\n index === 1 ? (evt.currentTarget as EditableList).items : groups[1].items,\n ];\n\n const newSanitizedItemsByGroup = newItemsByGroup\n .map(list => list.map(v => v.value.replace(/^[\\s-]*/, '').trimEnd()))\n .map(list => list.filter(v => !!v))\n .map(list => Array.from(new Set(list)));\n\n const newRestrictions = newSanitizedItemsByGroup[0]\n .concat(newSanitizedItemsByGroup[1].map(v => `-${v}`))\n .join(',');\n\n this.edit({ product_code_restrictions: newRestrictions });\n }}\n >\n </x-editable-list>\n </x-group>\n `;\n })}\n </div>\n </x-group>\n\n <foxy-i18n\n class=${classMap({\n 'block text-xs leading-s transition-colors': true,\n 'text-secondary': !isDisabled,\n 'text-disabled': isDisabled,\n })}\n lang=${this.lang}\n key=\"gift_card_product_restrictions_explainer\"\n ns=${this.ns}\n >\n </foxy-i18n>\n </div>\n\n ${this.renderTemplateOrSlot('product-restrictions:after')}\n </div>\n `;\n }\n\n private __renderCategoryRestrictions() {\n const scope = 'category-restrictions';\n const isDisabled = !this.in('idle') || this.disabledSelector.matches(scope, true);\n const isReadonly = this.readonlySelector.matches(scope, true);\n const giftCardItemCategories = this.data?._links['fx:gift_card_item_categories'].href;\n\n return html`\n <div data-testid=\"category-restrictions\">\n ${this.renderTemplateOrSlot(`${scope}:before`)}\n\n <div class=\"space-y-xs\">\n <foxy-pagination\n first=${this.__itemCategories}\n lang=${this.lang}\n ns=\"${this.ns} ${customElements.get('foxy-pagination')?.defaultNS ?? ''}\"\n ?disabled=${isDisabled}\n >\n <foxy-i18n\n class=\"block text-s font-medium text-secondary leading-none mb-s\"\n lang=${this.lang}\n key=\"category_restrictions\"\n ns=${this.ns}\n >\n </foxy-i18n>\n\n <x-category-restrictions-page\n gift-card-item-categories=${ifDefined(giftCardItemCategories)}\n data-testid=\"category-restrictions:page\"\n gift-card=${this.href}\n class=\"border border-contrast-10 rounded-t-l rounded-b-l mb-s\"\n group=${this.group}\n lang=${this.lang}\n ns=${this.ns}\n ?disabled=${isDisabled}\n ?readonly=${isReadonly}\n >\n </x-category-restrictions-page>\n </foxy-pagination>\n\n <foxy-i18n\n class=\"block text-xs leading-s text-secondary\"\n lang=${this.lang}\n key=\"gift_card_category_restrictions_helper_text\"\n ns=${this.ns}\n >\n </foxy-i18n>\n </div>\n\n ${this.renderTemplateOrSlot(`${scope}:after`)}\n </div>\n `;\n }\n\n private __renderTimestamps() {\n return html`\n <div>\n ${this.renderTemplateOrSlot('timestamps:before')}\n\n <x-property-table\n data-testid=\"timestamps\"\n .items=${(['date_modified', 'date_created'] as const).map(field => ({\n name: this.t(field),\n value: this.data?.[field]\n ? this.t('date', { value: new Date(this.data[field] as string) })\n : '',\n }))}\n >\n </x-property-table>\n\n ${this.renderTemplateOrSlot('timestamps:after')}\n </div>\n `;\n }\n\n private __renderCreate() {\n const isCleanTemplateInvalid = this.in({ idle: { template: { clean: 'invalid' } } });\n const isDirtyTemplateInvalid = this.in({ idle: { template: { dirty: 'invalid' } } });\n const isCleanSnapshotInvalid = this.in({ idle: { snapshot: { clean: 'invalid' } } });\n const isDirtySnapshotInvalid = this.in({ idle: { snapshot: { dirty: 'invalid' } } });\n const isTemplateInvalid = isCleanTemplateInvalid || isDirtyTemplateInvalid;\n const isSnaphotInvalid = isCleanSnapshotInvalid || isDirtySnapshotInvalid;\n const isInvalid = isTemplateInvalid || isSnaphotInvalid;\n const isBusy = this.in('busy');\n\n return html`\n <div>\n ${this.renderTemplateOrSlot('create:before')}\n\n <vaadin-button\n data-testid=\"create\"\n class=\"w-full\"\n theme=\"primary success\"\n ?disabled=${isBusy || isInvalid || this.disabledSelector.matches('create', true)}\n @click=${this.submit}\n >\n <foxy-i18n ns=${this.ns} key=\"create\" lang=${this.lang}></foxy-i18n>\n </vaadin-button>\n\n ${this.renderTemplateOrSlot('create:after')}\n </div>\n `;\n }\n\n private __renderDelete() {\n return html`\n <div>\n <foxy-internal-confirm-dialog\n data-testid=\"confirm\"\n message=\"delete_prompt\"\n confirm=\"delete\"\n cancel=\"cancel\"\n header=\"delete\"\n theme=\"primary error\"\n lang=${this.lang}\n ns=${this.ns}\n id=\"confirm\"\n @hide=${(evt: DialogHideEvent) => !evt.detail.cancelled && this.delete()}\n >\n </foxy-internal-confirm-dialog>\n\n ${this.renderTemplateOrSlot('delete:before')}\n\n <vaadin-button\n data-testid=\"delete\"\n theme=\"error\"\n class=\"w-full\"\n ?disabled=${!this.in('idle') || this.disabledSelector.matches('delete', true)}\n @click=${(evt: CustomEvent) => {\n const confirm = this.renderRoot.querySelector('#confirm') as InternalConfirmDialog;\n confirm.show(evt.currentTarget as ButtonElement);\n }}\n >\n <foxy-i18n ns=${this.ns} key=\"delete\" lang=${this.lang}></foxy-i18n>\n </vaadin-button>\n\n ${this.renderTemplateOrSlot('delete:after')}\n </div>\n `;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"GiftCardForm.js","sourceRoot":"","sources":["../../../../src/elements/public/GiftCardForm/GiftCardForm.ts"],"names":[],"mappings":"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","sourcesContent":["import { Data, GiftCardCodes } from './types';\nimport { Option, Type } from '../QueryBuilder/types';\nimport { PropertyDeclarations, TemplateResult, html } from 'lit-element';\nimport { ScopedElementsMap, ScopedElementsMixin } from '@open-wc/scoped-elements';\n\nimport { ButtonElement } from '@vaadin/vaadin-button';\nimport { CategoryRestrictionsPage } from './private/CategoryRestrictionsPage';\nimport { Column } from '../Table/types';\nimport { ComboBoxElement } from '@vaadin/vaadin-combo-box';\nimport { ConfigurableMixin } from '../../../mixins/configurable';\nimport { DialogHideEvent } from '../../private/Dialog/DialogHideEvent';\nimport { EditableList } from '../../private/EditableList/EditableList';\nimport { FormDialog } from '../FormDialog';\nimport { FrequencyInput } from '../../private/FrequencyInput/FrequencyInput';\nimport { FrequencyInputChangeEvent } from '../../private/FrequencyInput/FrequencyInputChangeEvent';\nimport { Group } from '../../private/Group/Group';\nimport { InternalConfirmDialog } from '../../internal/InternalConfirmDialog/InternalConfirmDialog';\nimport { NucleonElement } from '../NucleonElement/NucleonElement';\nimport { NucleonV8N } from '../NucleonElement/types';\nimport { PropertyTable } from '../../private/PropertyTable/PropertyTable';\nimport { QueryBuilder } from '../QueryBuilder/QueryBuilder';\nimport { Rels } from '@foxy.io/sdk/backend';\nimport { Resource } from '@foxy.io/sdk/core';\nimport { ResponsiveMixin } from '../../../mixins/responsive';\nimport { TextFieldElement } from '@vaadin/vaadin-text-field';\nimport { ThemeableMixin } from '../../../mixins/themeable';\nimport { TranslatableMixin } from '../../../mixins/translatable';\nimport { classMap } from '../../../utils/class-map';\nimport { currencies } from './currencies';\nimport { ifDefined } from 'lit-html/directives/if-defined';\n\nconst NS = 'gift-card-form';\nconst Base = ScopedElementsMixin(\n ThemeableMixin(ConfigurableMixin(ResponsiveMixin(TranslatableMixin(NucleonElement, NS))))\n);\n\n/**\n * Form element for creating or editing gift cards (`fx:gift_card`).\n *\n * @slot name:before\n * @slot name:after\n *\n * @slot currency:before\n * @slot currency:after\n *\n * @slot expires:before\n * @slot expires:after\n *\n * @slot codes:before\n * @slot codes:after\n *\n * @slot product-restrictions:before\n * @slot product-restrictions:after\n *\n * @slot category-restrictions:before\n * @slot category-restrictions: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-gift-card-form\n * @since 1.15.0\n */\nexport class GiftCardForm extends Base<Data> {\n static get scopedElements(): ScopedElementsMap {\n return {\n 'vaadin-text-field': customElements.get('vaadin-text-field'),\n 'vaadin-combo-box': customElements.get('vaadin-combo-box'),\n 'vaadin-button': customElements.get('vaadin-button'),\n\n 'iron-icon': customElements.get('iron-icon'),\n\n 'foxy-internal-gift-card-form-provisioning-control': customElements.get(\n 'foxy-internal-gift-card-form-provisioning-control'\n ),\n\n 'foxy-internal-confirm-dialog': customElements.get('foxy-internal-confirm-dialog'),\n 'foxy-internal-sandbox': customElements.get('foxy-internal-sandbox'),\n 'foxy-query-builder': customElements.get('foxy-query-builder'),\n 'foxy-form-dialog': customElements.get('foxy-form-dialog'),\n 'foxy-pagination': customElements.get('foxy-pagination'),\n 'foxy-spinner': customElements.get('foxy-spinner'),\n 'foxy-table': customElements.get('foxy-table'),\n 'foxy-i18n': customElements.get('foxy-i18n'),\n\n 'x-category-restrictions-page': CategoryRestrictionsPage,\n 'x-frequency-input': FrequencyInput,\n 'x-property-table': PropertyTable,\n 'x-editable-list': EditableList,\n 'x-group': Group,\n };\n }\n\n static get properties(): PropertyDeclarations {\n return {\n ...super.properties,\n __codesTableQuery: { attribute: false },\n __itemCategories: { attribute: false },\n };\n }\n\n static get v8n(): NucleonV8N<Data> {\n return [\n ({ name: v }) => !!v || 'name_required',\n ({ name: v }) => !v || v.length <= 50 || 'name_too_long',\n\n form => {\n if (form.provisioning_config?.allow_autoprovisioning) {\n if (!form.sku) return 'sku:v8n_required';\n if (form.sku.length > 200) return 'sku:v8n_too_long';\n }\n\n return true;\n },\n\n form => {\n const v = form.provisioning_config?.initial_balance_min;\n return typeof v === 'number' && v <= 0 ? 'min-balance:v8n_negative' : true;\n },\n\n form => {\n const v = form.provisioning_config?.initial_balance_max;\n return typeof v === 'number' && v <= 0 ? 'max-balance:v8n_negative' : true;\n },\n ];\n }\n\n private __codesTableColumns: Column<GiftCardCodes>[] = [\n {\n header: ctx => html`<foxy-i18n lang=${ctx.lang} key=\"code\" ns=${ctx.ns}></foxy-i18n>`,\n cell: ctx => {\n const isDisabled = !this.in('idle') || this.disabledSelector.matches('codes', true);\n\n return html`\n <div class=\"flex items-center gap-xs\">\n <vaadin-button\n theme=\"tertiary-inline contrast\"\n class=\"p-0\"\n ?disabled=${isDisabled}\n @click=${(evt: CustomEvent) => {\n const dialog = this.renderRoot.querySelector<FormDialog>('#code-dialog')!;\n const button = evt.currentTarget as ButtonElement;\n\n dialog.href = ctx.data._links.self.href;\n dialog.show(button);\n }}\n >\n <span class=\"font-tnum\">${ctx.data.code}</span>\n </vaadin-button>\n\n <foxy-copy-to-clipboard\n ?disabled=${isDisabled}\n text=${ctx.data.code}\n lang=${ctx.lang}\n ns=\"${ctx.ns} copy-to-clipboard\"\n >\n </foxy-copy-to-clipboard>\n </div>\n `;\n },\n },\n {\n header: ctx => html`<foxy-i18n lang=${ctx.lang} key=\"date_created\" ns=${ctx.ns}></foxy-i18n>`,\n cell: ctx => html`\n <foxy-i18n\n options=${JSON.stringify({ value: ctx.data.date_created })}\n class=\"text-tertiary\"\n lang=${ctx.lang}\n key=\"date\"\n ns=${ctx.ns}\n >\n </foxy-i18n>\n `,\n },\n {\n hideBelow: 'sm',\n header: c => html`<foxy-i18n lang=${c.lang} key=\"end_date\" ns=${c.ns}></foxy-i18n>`,\n cell: ctx => html`\n <foxy-i18n\n options=${JSON.stringify({ value: ctx.data.end_date })}\n class=\"text-tertiary\"\n lang=${ctx.lang}\n key=\"date\"\n ns=${ctx.ns}\n >\n </foxy-i18n>\n `,\n },\n {\n header: c => html`<foxy-i18n lang=${c.lang} key=\"current_balance\" ns=${c.ns}></foxy-i18n>`,\n cell: ctx => html`\n <foxy-i18n\n options=${JSON.stringify({\n amount: `${ctx.data.current_balance} ${this.data?.currency_code}`,\n currencyDisplay: this.__currencyDisplay,\n })}\n lang=${ctx.lang}\n key=\"price\"\n ns=${ctx.ns}\n >\n </foxy-i18n>\n `,\n },\n ];\n\n private static readonly __codesQueryOptions: Option[] = [\n { label: 'code', path: 'code', type: Type.String },\n { label: 'current_balance', path: 'current_balance', type: Type.Number },\n { label: 'end_date', path: 'end_date', type: Type.Date },\n { label: 'date_created', path: 'date_created', type: Type.Date },\n { label: 'date_modified', path: 'date_modified', type: Type.Date },\n ];\n\n private __codesTableQuery: string | null = null;\n\n private __currencyDisplay = '';\n\n private __itemCategories = '';\n\n render(): TemplateResult {\n const hidden = this.hiddenSelector;\n const isNameHidden = hidden.matches('name', true);\n const isCurrencyHidden = hidden.matches('currency', true);\n const isExpiresHidden = hidden.matches('expires', true);\n\n return html`\n <div class=\"relative space-y-l\">\n ${isNameHidden && isCurrencyHidden && isExpiresHidden\n ? ''\n : html`\n <div class=\"grid grid-cols-1 sm-grid-cols-3 md-grid-cols-4 gap-m\">\n ${isNameHidden ? '' : html`<div class=\"md-col-span-2\">${this.__renderName()}</div>`}\n ${isCurrencyHidden ? '' : this.__renderCurrency()}\n ${isExpiresHidden ? '' : this.__renderExpires()}\n </div>\n `}\n\n <foxy-internal-gift-card-form-provisioning-control infer=\"provisioning\">\n </foxy-internal-gift-card-form-provisioning-control>\n\n ${hidden.matches('codes', true) || !this.data ? '' : this.__renderCodes()}\n ${hidden.matches('product-restrictions', true) ? '' : this.__renderProductRestrictions()}\n ${hidden.matches('category-restrictions', true) || !this.data\n ? ''\n : this.__renderCategoryRestrictions()}\n ${hidden.matches('timestamps', true) ? '' : this.__renderTimestamps()}\n ${hidden.matches('create', true) || !!this.data ? '' : this.__renderCreate()}\n ${hidden.matches('delete', true) || !this.data ? '' : this.__renderDelete()}\n\n <div\n data-testid=\"spinner\"\n class=${classMap({\n 'transition duration-500 ease-in-out absolute inset-0 flex': true,\n 'opacity-0 pointer-events-none': !this.in('busy') && !this.in('fail'),\n })}\n >\n <foxy-spinner\n layout=\"vertical\"\n class=\"m-auto p-m bg-base shadow-xs rounded-t-l rounded-b-l\"\n state=${this.in('fail') ? 'error' : this.in('busy') ? 'busy' : 'empty'}\n lang=${this.lang}\n ns=\"${this.ns} ${customElements.get('foxy-spinner')?.defaultNS ?? ''}\"\n >\n </foxy-spinner>\n </div>\n </div>\n `;\n }\n\n protected async _sendGet(): Promise<Data> {\n type Store = Resource<Rels.Store>;\n\n const giftCard = await super._sendGet();\n const store = await super._fetch<Store>(giftCard._links['fx:store'].href);\n const categoriesURL = new URL(store._links['fx:item_categories'].href);\n\n categoriesURL.searchParams.set('limit', '5');\n this.__currencyDisplay = store.use_international_currency_symbol ? 'code' : 'symbol';\n this.__itemCategories = categoriesURL.toString();\n\n return giftCard;\n }\n\n private __getErrorMessage(prefix: string) {\n const error = this.errors.find(err => err.startsWith(prefix));\n return error ? this.t(error.replace(prefix, 'v8n')).toString() : '';\n }\n\n private __getValidator(prefix: string) {\n return () => !this.errors.some(err => err.startsWith(prefix));\n }\n\n private __renderName() {\n return html`\n <div>\n ${this.renderTemplateOrSlot('name:before')}\n\n <vaadin-text-field\n error-message=${this.__getErrorMessage('name')}\n helper-text=${this.t('gift_card_name_helper_text')}\n data-testid=\"name\"\n class=\"w-full\"\n label=${this.t('name')}\n .checkValidity=${this.__getValidator('name')}\n .value=${this.form.name ?? ''}\n ?disabled=${!this.in('idle') || this.disabledSelector.matches('name', true)}\n ?readonly=${this.readonlySelector.matches('name', true)}\n required\n @keydown=${(evt: KeyboardEvent) => evt.key === 'Enter' && this.submit()}\n @input=${(evt: CustomEvent) => {\n const newName = (evt.currentTarget as TextFieldElement).value;\n this.edit({ name: newName });\n }}\n >\n </vaadin-text-field>\n\n ${this.renderTemplateOrSlot('name:after')}\n </div>\n `;\n }\n\n private __renderCurrency() {\n return html`\n <div>\n ${this.renderTemplateOrSlot('currency:before')}\n\n <vaadin-combo-box\n item-label-path=\"label\"\n item-value-path=\"value\"\n item-id-path=\"value\"\n data-testid=\"currency\"\n class=\"w-full\"\n label=${this.t('currency')}\n ?disabled=${!this.in('idle') || this.disabledSelector.matches('currency', true)}\n ?readonly=${this.readonlySelector.matches('currency', true)}\n .value=${this.form.currency_code?.toLowerCase() ?? ''}\n .items=${currencies.map(code => ({\n label: `${this.t(`currency_${code}`)} (${code.toUpperCase()})`,\n value: code,\n }))}\n @change=${(evt: CustomEvent) => {\n const comboBox = evt.currentTarget as ComboBoxElement;\n this.edit({ currency_code: comboBox.value });\n }}\n >\n </vaadin-combo-box>\n\n ${this.renderTemplateOrSlot('currency:after')}\n </div>\n `;\n }\n\n private __renderExpires() {\n return html`\n <div>\n ${this.renderTemplateOrSlot('expires:before')}\n\n <x-frequency-input\n placeholder=${this.t('select')}\n data-testid=\"expires\"\n label=${this.t('expires_after')}\n class=\"w-full\"\n lang=${this.lang}\n ns=${this.ns}\n ?disabled=${!this.in('idle') || this.disabledSelector.matches('expires', true)}\n ?readonly=${this.readonlySelector.matches('expires', true)}\n .value=${this.form.expires_after ?? ''}\n @change=${(evt: FrequencyInputChangeEvent) => {\n const input = evt.currentTarget as FrequencyInput;\n this.edit({ expires_after: input.value });\n }}\n >\n </x-frequency-input>\n\n ${this.renderTemplateOrSlot('expires:after')}\n </div>\n `;\n }\n\n private __renderCodes() {\n const { disabledSelector, readonlySelector, hiddenSelector, group, data, lang, ns } = this;\n\n const isDisabled = !this.in('idle') || disabledSelector.matches('codes', true);\n const filters = this.__codesTableQuery;\n const url = new URL(data!._links['fx:gift_card_codes'].href);\n\n new URLSearchParams(filters ?? '').forEach((value, name) => url.searchParams.set(name, value));\n url.searchParams.set('limit', '5');\n\n const filterButtonLabel = filters === null ? 'filter' : 'clear_filters';\n const filterButtonIcon = `icons:${filters === null ? 'filter-list' : 'clear'}`;\n\n return html`\n <div data-testid=\"codes\">\n <foxy-form-dialog\n disabledcontrols=${disabledSelector.zoom('codes:generate:form').toString()}\n readonlycontrols=${readonlySelector.zoom('codes:generate:form').toString()}\n hiddencontrols=\"save-button ${hiddenSelector.zoom('codes:generate:form').toString()}\"\n header=\"generate\"\n parent=${data?._links['fx:generate_codes'].href ?? ''}\n group=${group}\n lang=${lang}\n form=\"foxy-generate-codes-form\"\n ns=${ns}\n id=\"generate-codes-dialog\"\n alert\n .related=${[url.toString()]}\n >\n </foxy-form-dialog>\n\n <foxy-form-dialog\n disabledcontrols=${disabledSelector.zoom('codes:form').toString()}\n readonlycontrols=${readonlySelector.zoom('codes:form').toString()}\n hiddencontrols=${hiddenSelector.zoom('codes:form').toString()}\n header=\"code\"\n parent=${url.toString()}\n group=${group}\n lang=${lang}\n form=\"foxy-gift-card-code-form\"\n ns=${ns}\n id=\"code-dialog\"\n >\n </foxy-form-dialog>\n\n <foxy-form-dialog\n disabledcontrols=${disabledSelector.zoom('codes:import:form').toString()}\n readonlycontrols=${readonlySelector.zoom('codes:import:form').toString()}\n hiddencontrols=\"save-button ${hiddenSelector.zoom('codes:import:form').toString()}\"\n header=\"import\"\n parent=${data!._links['fx:gift_card_codes'].href}\n group=${group}\n lang=${lang}\n form=\"foxy-gift-card-codes-form\"\n ns=${ns}\n id=\"import-dialog\"\n >\n </foxy-form-dialog>\n\n ${this.renderTemplateOrSlot('codes:before')}\n\n <div class=\"flex items-center justify-between mb-xs space-x-s\">\n <foxy-i18n\n class=\"text-s font-medium text-secondary leading-none flex-1\"\n lang=${lang}\n key=\"code_plural\"\n ns=${ns}\n >\n </foxy-i18n>\n\n <vaadin-button\n data-testid=\"codes:generate-button\"\n theme=\"success tertiary small\"\n ?disabled=${isDisabled}\n @click=${(evt: CustomEvent) => {\n const dialog = this.renderRoot.querySelector<FormDialog>('#generate-codes-dialog');\n const button = evt.currentTarget as ButtonElement;\n dialog?.show(button);\n }}\n >\n <foxy-i18n class=\"text-s\" lang=${lang} key=\"generate\" ns=${ns}></foxy-i18n>\n <iron-icon class=\"icon-inline text-s\" icon=\"icons:add\"></iron-icon>\n </vaadin-button>\n\n <vaadin-button\n data-testid=\"codes:import-button\"\n theme=\"contrast tertiary small\"\n ?disabled=${isDisabled}\n @click=${(evt: CustomEvent) => {\n const dialog = this.renderRoot.querySelector<FormDialog>('#import-dialog');\n const button = evt.currentTarget as ButtonElement;\n dialog?.show(button);\n }}\n >\n <foxy-i18n class=\"text-s\" lang=${lang} key=\"import\" ns=${ns}></foxy-i18n>\n <iron-icon class=\"icon-inline text-s\" icon=\"icons:open-in-browser\"></iron-icon>\n </vaadin-button>\n\n <vaadin-button\n data-testid=\"codes:filter-button\"\n theme=\"contrast ${filters === null ? 'tertiary' : ''} small\"\n ?disabled=${isDisabled}\n @click=${() => (this.__codesTableQuery = filters === null ? '' : null)}\n >\n <foxy-i18n class=\"text-s\" lang=${lang} key=${filterButtonLabel} ns=${ns}></foxy-i18n>\n <iron-icon class=\"icon-inline text-s\" icon=${filterButtonIcon}></iron-icon>\n </vaadin-button>\n </div>\n\n <foxy-query-builder\n class=\"my-s\"\n lang=${lang}\n ns=\"${ns} ${customElements.get('foxy-query-builder')?.defaultNS ?? ''}\"\n ?disabled=${isDisabled}\n ?hidden=${filters === null}\n .options=${GiftCardForm.__codesQueryOptions}\n .value=${filters ?? ''}\n @change=${(evt: CustomEvent) => {\n const queryBuilder = evt.currentTarget as QueryBuilder;\n this.__codesTableQuery = queryBuilder.value;\n }}\n >\n </foxy-query-builder>\n\n <foxy-pagination\n first=${url.toString()}\n lang=${lang}\n ns=\"${ns} ${customElements.get('foxy-pagination')?.defaultNS ?? ''}\"\n ?disabled=${isDisabled}\n >\n <foxy-table\n class=\"px-m mb-s border border-contrast-10 rounded\"\n group=${group}\n lang=${lang}\n ns=${ns}\n .columns=${this.__codesTableColumns}\n >\n </foxy-table>\n </foxy-pagination>\n\n ${this.renderTemplateOrSlot('codes:after')}\n </div>\n `;\n }\n\n private __renderProductRestrictions() {\n const scope = 'product-restrictions';\n const isDisabled = !this.in('idle') || this.disabledSelector.matches(scope, true);\n const isReadonly = this.readonlySelector.matches(scope, true);\n const restrictions = this.form.product_code_restrictions ?? '';\n\n const groups = [\n { header: 'allow', items: [] as { label?: string; value: string }[] },\n { header: 'block', items: [] as { label?: string; value: string }[] },\n ];\n\n if (restrictions) {\n restrictions.split(',').forEach(value => {\n const isBlocklistValue = value.startsWith('-');\n const target = isBlocklistValue ? 1 : 0;\n const label = isBlocklistValue ? value.substring(1) : value;\n\n groups[target].items.push({ label, value });\n });\n }\n\n return html`\n <div data-testid=\"product-restrictions\">\n ${this.renderTemplateOrSlot('product-restrictions:before')}\n\n <div class=\"space-y-s\">\n <x-group frame>\n <foxy-i18n\n class=${isDisabled ? 'text-disabled' : 'text-secondary'}\n slot=\"header\"\n lang=${this.lang}\n key=\"product_restrictions\"\n ns=${this.ns}\n >\n </foxy-i18n>\n\n <div class=\"grid sm-grid-cols-2 bg-contrast-10\" style=\"gap: 1px\">\n ${groups.map((group, index) => {\n return html`\n <x-group class=\"bg-base pt-m\">\n <foxy-i18n\n class=${isDisabled ? 'text-disabled' : 'text-tertiary'}\n slot=\"header\"\n lang=${this.lang}\n key=${group.header}\n ns=${this.ns}\n >\n </foxy-i18n>\n\n <x-editable-list\n data-testid=\"product-restrictions:${group.header}\"\n lang=${this.lang}\n ns=${this.ns}\n ?disabled=${isDisabled}\n ?readonly=${isReadonly}\n .items=${group.items}\n @change=${(evt: CustomEvent) => {\n const newItemsByGroup = [\n index === 0 ? (evt.currentTarget as EditableList).items : groups[0].items,\n index === 1 ? (evt.currentTarget as EditableList).items : groups[1].items,\n ];\n\n const newSanitizedItemsByGroup = newItemsByGroup\n .map(list => list.map(v => v.value.replace(/^[\\s-]*/, '').trimEnd()))\n .map(list => list.filter(v => !!v))\n .map(list => Array.from(new Set(list)));\n\n const newRestrictions = newSanitizedItemsByGroup[0]\n .concat(newSanitizedItemsByGroup[1].map(v => `-${v}`))\n .join(',');\n\n this.edit({ product_code_restrictions: newRestrictions });\n }}\n >\n </x-editable-list>\n </x-group>\n `;\n })}\n </div>\n </x-group>\n\n <foxy-i18n\n class=${classMap({\n 'block text-xs leading-s transition-colors': true,\n 'text-secondary': !isDisabled,\n 'text-disabled': isDisabled,\n })}\n lang=${this.lang}\n key=\"gift_card_product_restrictions_explainer\"\n ns=${this.ns}\n >\n </foxy-i18n>\n </div>\n\n ${this.renderTemplateOrSlot('product-restrictions:after')}\n </div>\n `;\n }\n\n private __renderCategoryRestrictions() {\n const scope = 'category-restrictions';\n const isDisabled = !this.in('idle') || this.disabledSelector.matches(scope, true);\n const isReadonly = this.readonlySelector.matches(scope, true);\n const giftCardItemCategories = this.data?._links['fx:gift_card_item_categories'].href;\n\n return html`\n <div data-testid=\"category-restrictions\">\n ${this.renderTemplateOrSlot(`${scope}:before`)}\n\n <div class=\"space-y-xs\">\n <foxy-pagination\n first=${this.__itemCategories}\n lang=${this.lang}\n ns=\"${this.ns} ${customElements.get('foxy-pagination')?.defaultNS ?? ''}\"\n ?disabled=${isDisabled}\n >\n <foxy-i18n\n class=\"block text-s font-medium text-secondary leading-none mb-s\"\n lang=${this.lang}\n key=\"category_restrictions\"\n ns=${this.ns}\n >\n </foxy-i18n>\n\n <x-category-restrictions-page\n gift-card-item-categories=${ifDefined(giftCardItemCategories)}\n data-testid=\"category-restrictions:page\"\n gift-card=${this.href}\n class=\"border border-contrast-10 rounded mb-s\"\n group=${this.group}\n lang=${this.lang}\n ns=${this.ns}\n ?disabled=${isDisabled}\n ?readonly=${isReadonly}\n >\n </x-category-restrictions-page>\n </foxy-pagination>\n\n <foxy-i18n\n class=\"block text-xs leading-s text-secondary\"\n lang=${this.lang}\n key=\"gift_card_category_restrictions_helper_text\"\n ns=${this.ns}\n >\n </foxy-i18n>\n </div>\n\n ${this.renderTemplateOrSlot(`${scope}:after`)}\n </div>\n `;\n }\n\n private __renderTimestamps() {\n return html`\n <div>\n ${this.renderTemplateOrSlot('timestamps:before')}\n\n <x-property-table\n data-testid=\"timestamps\"\n .items=${(['date_modified', 'date_created'] as const).map(field => ({\n name: this.t(field),\n value: this.data?.[field]\n ? this.t('date', { value: new Date(this.data[field] as string) })\n : '',\n }))}\n >\n </x-property-table>\n\n ${this.renderTemplateOrSlot('timestamps:after')}\n </div>\n `;\n }\n\n private __renderCreate() {\n const isCleanTemplateInvalid = this.in({ idle: { template: { clean: 'invalid' } } });\n const isDirtyTemplateInvalid = this.in({ idle: { template: { dirty: 'invalid' } } });\n const isCleanSnapshotInvalid = this.in({ idle: { snapshot: { clean: 'invalid' } } });\n const isDirtySnapshotInvalid = this.in({ idle: { snapshot: { dirty: 'invalid' } } });\n const isTemplateInvalid = isCleanTemplateInvalid || isDirtyTemplateInvalid;\n const isSnaphotInvalid = isCleanSnapshotInvalid || isDirtySnapshotInvalid;\n const isInvalid = isTemplateInvalid || isSnaphotInvalid;\n const isBusy = this.in('busy');\n\n return html`\n <div>\n ${this.renderTemplateOrSlot('create:before')}\n\n <vaadin-button\n data-testid=\"create\"\n class=\"w-full\"\n theme=\"primary success\"\n ?disabled=${isBusy || isInvalid || this.disabledSelector.matches('create', true)}\n @click=${this.submit}\n >\n <foxy-i18n ns=${this.ns} key=\"create\" lang=${this.lang}></foxy-i18n>\n </vaadin-button>\n\n ${this.renderTemplateOrSlot('create:after')}\n </div>\n `;\n }\n\n private __renderDelete() {\n return html`\n <div>\n <foxy-internal-confirm-dialog\n data-testid=\"confirm\"\n message=\"delete_prompt\"\n confirm=\"delete\"\n cancel=\"cancel\"\n header=\"delete\"\n theme=\"primary error\"\n lang=${this.lang}\n ns=${this.ns}\n id=\"confirm\"\n @hide=${(evt: DialogHideEvent) => !evt.detail.cancelled && this.delete()}\n >\n </foxy-internal-confirm-dialog>\n\n ${this.renderTemplateOrSlot('delete:before')}\n\n <vaadin-button\n data-testid=\"delete\"\n theme=\"error\"\n class=\"w-full\"\n ?disabled=${!this.in('idle') || this.disabledSelector.matches('delete', true)}\n @click=${(evt: CustomEvent) => {\n const confirm = this.renderRoot.querySelector('#confirm') as InternalConfirmDialog;\n confirm.show(evt.currentTarget as ButtonElement);\n }}\n >\n <foxy-i18n ns=${this.ns} key=\"delete\" lang=${this.lang}></foxy-i18n>\n </vaadin-button>\n\n ${this.renderTemplateOrSlot('delete:after')}\n </div>\n `;\n }\n}\n"]}
|
|
@@ -6,9 +6,18 @@ declare const Base: typeof NucleonElement & {
|
|
|
6
6
|
} & import("lit-element").Constructor<import("../../../mixins/configurable").ConfigurableMixinHost> & import("lit-element").Constructor<import("../../../mixins/translatable").TranslatableMixinHost> & {
|
|
7
7
|
defaultNS: string;
|
|
8
8
|
};
|
|
9
|
+
/**
|
|
10
|
+
* Editor for language string overrides. Loads language strings
|
|
11
|
+
* property helper (`fx:language_strings`) as main resource.
|
|
12
|
+
*
|
|
13
|
+
* @since 1.21.0
|
|
14
|
+
* @element foxy-i18n-editor
|
|
15
|
+
*/
|
|
9
16
|
export declare class I18nEditor extends Base<Data> {
|
|
10
17
|
static get properties(): PropertyDeclarations;
|
|
18
|
+
/** URL of the `fx:language_overrides` resource for a template set. */
|
|
11
19
|
languageOverrides: string | null;
|
|
20
|
+
/** Language from the `fx:language_strings` property helper for which the default values will be pulled from. */
|
|
12
21
|
selectedLanguage: string | null;
|
|
13
22
|
private __selectedTabIndex;
|
|
14
23
|
render(): TemplateResult;
|
|
@@ -8,11 +8,20 @@ import { repeat } from 'lit-html/directives/repeat';
|
|
|
8
8
|
import { html } from 'lit-html';
|
|
9
9
|
const NS = 'i18n-editor';
|
|
10
10
|
const Base = TranslatableMixin(ConfigurableMixin(ThemeableMixin(NucleonElement)), NS);
|
|
11
|
+
/**
|
|
12
|
+
* Editor for language string overrides. Loads language strings
|
|
13
|
+
* property helper (`fx:language_strings`) as main resource.
|
|
14
|
+
*
|
|
15
|
+
* @since 1.21.0
|
|
16
|
+
* @element foxy-i18n-editor
|
|
17
|
+
*/
|
|
11
18
|
export class I18nEditor extends Base {
|
|
12
19
|
constructor() {
|
|
13
20
|
super(...arguments);
|
|
14
|
-
|
|
15
|
-
this.
|
|
21
|
+
/** URL of the `fx:language_overrides` resource for a template set. */
|
|
22
|
+
this.languageOverrides = null;
|
|
23
|
+
/** Language from the `fx:language_strings` property helper for which the default values will be pulled from. */
|
|
24
|
+
this.selectedLanguage = null;
|
|
16
25
|
this.__selectedTabIndex = 0;
|
|
17
26
|
}
|
|
18
27
|
static get properties() {
|
|
@@ -75,7 +84,7 @@ export class I18nEditor extends Base {
|
|
|
75
84
|
})}
|
|
76
85
|
</vaadin-tabs>
|
|
77
86
|
|
|
78
|
-
${repeat(Object.entries(filteredValues), ([keyOrGroup]) => keyOrGroup, ([keyOrGroup,
|
|
87
|
+
${repeat(Object.entries(filteredValues), ([keyOrGroup]) => keyOrGroup, ([keyOrGroup, defaultValue]) => {
|
|
79
88
|
var _a;
|
|
80
89
|
let code;
|
|
81
90
|
let gateway;
|
|
@@ -92,7 +101,7 @@ export class I18nEditor extends Base {
|
|
|
92
101
|
}
|
|
93
102
|
return html `
|
|
94
103
|
<foxy-internal-i18n-editor-entry
|
|
95
|
-
default-value=${
|
|
104
|
+
default-value=${defaultValue}
|
|
96
105
|
gateway=${ifDefined(gateway)}
|
|
97
106
|
parent=${ifDefined((_a = this.languageOverrides) !== null && _a !== void 0 ? _a : void 0)}
|
|
98
107
|
code=${code}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"I18nEditor.js","sourceRoot":"","sources":["../../../../src/elements/public/I18nEditor/I18nEditor.ts"],"names":[],"mappings":"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","sourcesContent":["import type { PropertyDeclarations, TemplateResult } from 'lit-element';\nimport type { Data, Overrides } from './types';\nimport type { TabsElement } from '@vaadin/vaadin-tabs';\nimport type { Resource } from '@foxy.io/sdk/core';\nimport type { Rels } from '@foxy.io/sdk/backend';\n\nimport { ConfigurableMixin } from '../../../mixins/configurable';\nimport { TranslatableMixin } from '../../../mixins/translatable';\nimport { ThemeableMixin } from '../../../mixins/themeable';\nimport { NucleonElement } from '../NucleonElement/NucleonElement';\nimport { ifDefined } from 'lit-html/directives/if-defined';\nimport { classMap } from '../../../utils/class-map';\nimport { repeat } from 'lit-html/directives/repeat';\nimport { html } from 'lit-html';\n\nconst NS = 'i18n-editor';\nconst Base = TranslatableMixin(ConfigurableMixin(ThemeableMixin(NucleonElement)), NS);\n\nexport class I18nEditor extends Base<Data> {\n static get properties(): PropertyDeclarations {\n return {\n ...super.properties,\n languageOverrides: { attribute: 'language-overrides' },\n selectedLanguage: { attribute: 'selected-language' },\n __selectedTabIndex: { attribute: false },\n };\n }\n\n languageOverrides: string | null = 'https://demo.api/hapi/language_overrides';\n\n selectedLanguage: string | null = 'english';\n\n private __selectedTabIndex = 0;\n\n render(): TemplateResult {\n const tabs = this.__tabs;\n const prefix = tabs[this.__selectedTabIndex] as string | undefined;\n const valuesForLang = this.data?.values[this.selectedLanguage ?? ''] ?? {};\n const filteredValues: Record<string, string> = {};\n const isSpinnerVisible = !this.in({ idle: 'snapshot' });\n\n if (prefix) {\n if (prefix.includes('_')) {\n const group = prefix.substring(0, prefix.indexOf('_'));\n const subGroup = prefix.substring(prefix.indexOf('_') + 1);\n const values = (valuesForLang[group] as Record<string, Record<string, string>>)[subGroup];\n\n for (const key in values) {\n filteredValues[`${group}_${subGroup}_${key}`] = values[key];\n }\n } else {\n for (const key in valuesForLang) {\n if (key.startsWith(prefix)) filteredValues[key] = valuesForLang[key] as string;\n }\n }\n }\n\n const overridesLoader = this.__renderOverridesLoader();\n const overrides = overridesLoader.overrides;\n\n return html`\n ${overridesLoader.template}\n\n <div aria-busy=${this.in('busy')} aria-live=\"polite\" class=\"relative\">\n <div\n class=${classMap({\n 'transition-opacity grid grid-cols-1 gap-s': true,\n 'opacity-0 pointer-events-none': isSpinnerVisible,\n })}\n >\n <vaadin-tabs\n selected=${this.__selectedTabIndex}\n class=\"-mx-l\"\n theme=\"minimal\"\n @selected-changed=${(evt: CustomEvent) => {\n const tabsElement = evt.currentTarget as TabsElement;\n this.__selectedTabIndex = tabsElement.selected ?? 0;\n }}\n >\n ${tabs.map(name => {\n const shortName = name.substring(name.indexOf('_') + 1).replace(/_/g, ' ');\n const label = html`<span class=\"capitalize\">${shortName}</span>`;\n return html`<vaadin-tab>${label}</vaadin-tab>`;\n })}\n </vaadin-tabs>\n\n ${repeat(\n Object.entries(filteredValues),\n ([keyOrGroup]) => keyOrGroup,\n ([keyOrGroup, translationOrDictionary]) => {\n let code: string;\n let gateway: string | undefined;\n let override: Overrides['_embedded']['fx:language_overrides'][number] | undefined;\n\n if (keyOrGroup.startsWith('gateways_')) {\n code = keyOrGroup.substring(prefix!.length + 1);\n gateway = prefix!.substring(9);\n override = overrides.find(o => o.code === code && o.gateway === gateway);\n } else {\n code = keyOrGroup;\n gateway = undefined;\n override = overrides.find(o => o.code === code);\n }\n\n return html`\n <foxy-internal-i18n-editor-entry\n default-value=${translationOrDictionary}\n gateway=${ifDefined(gateway)}\n parent=${ifDefined(this.languageOverrides ?? void 0)}\n code=${code}\n infer=\"\"\n .data=${override ?? null}\n >\n </foxy-internal-i18n-editor-entry>\n `;\n }\n )}\n </div>\n\n <div\n data-testid=\"spinner\"\n class=${classMap({\n 'transition-opacity absolute inset-0 flex': true,\n 'opacity-0 pointer-events-none': !isSpinnerVisible,\n })}\n >\n <foxy-spinner\n layout=${this.in('busy') ? 'no-label' : 'horizontal'}\n class=\"m-auto\"\n state=${this.in('fail') ? 'error' : this.in({ idle: 'template' }) ? 'empty' : 'busy'}\n infer=\"spinner\"\n >\n </foxy-spinner>\n </div>\n </div>\n `;\n }\n\n private get __tabs() {\n const values = this.selectedLanguage ? this.data?.values[this.selectedLanguage] : undefined;\n\n const tabs = Object.entries(values ?? {}).reduce((allKeys, [key, value]) => {\n if (typeof value === 'string') {\n const prefix = key.substring(0, key.indexOf('_'));\n allKeys.add(prefix || key);\n } else {\n Object.entries(value).forEach(([subKey, subValue]) => {\n if (Object.keys(subValue).length === 0) return;\n allKeys.add(`${key}_${subKey}`);\n });\n }\n\n return allKeys;\n }, new Set<string>());\n\n return Array.from(tabs);\n }\n\n private __renderOverridesLoader() {\n type Loader = NucleonElement<Overrides>;\n\n const loaders = Array.from(this.renderRoot.querySelectorAll<Loader>('foxy-nucleon'));\n const overrides = loaders.reduce(\n (result, loader) => [...result, ...(loader.data?._embedded['fx:language_overrides'] ?? [])],\n [] as Resource<Rels.LanguageOverride>[]\n );\n\n const firstLoader = loaders[0] as Loader | undefined;\n\n const loaderTemplates = new Array(Math.ceil((firstLoader?.data?.total_items || 300) / 300))\n .fill(0)\n .map((_, index) => {\n try {\n const url = new URL(this.languageOverrides ?? '');\n\n url.searchParams.set('offset', String(index * 300));\n url.searchParams.set('limit', '300');\n\n return html`\n <foxy-nucleon infer=\"\" href=${url.toString()} @update=${() => this.requestUpdate()}>\n </foxy-nucleon>\n `;\n } catch {\n return undefined;\n }\n });\n\n return {\n template: html`<div class=\"hidden\">${loaderTemplates}</div>`,\n overrides,\n loaders,\n };\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"I18nEditor.js","sourceRoot":"","sources":["../../../../src/elements/public/I18nEditor/I18nEditor.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,iBAAiB,EAAE,wCAAqC;AACjE,OAAO,EAAE,iBAAiB,EAAE,wCAAqC;AACjE,OAAO,EAAE,cAAc,EAAE,qCAAkC;AAC3D,OAAO,EAAE,cAAc,EAAE,4CAAyC;AAClE,OAAO,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAE,oCAAiC;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAEhC,MAAM,EAAE,GAAG,aAAa,CAAC;AACzB,MAAM,IAAI,GAAG,iBAAiB,CAAC,iBAAiB,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAEtF;;;;;;GAMG;AACH,MAAM,OAAO,UAAW,SAAQ,IAAU;IAA1C;;QAUE,sEAAsE;QACtE,sBAAiB,GAAkB,IAAI,CAAC;QAExC,gHAAgH;QAChH,qBAAgB,GAAkB,IAAI,CAAC;QAE/B,uBAAkB,GAAG,CAAC,CAAC;IAiKjC,CAAC;IAhLC,MAAM,KAAK,UAAU;QACnB,OAAO;YACL,GAAG,KAAK,CAAC,UAAU;YACnB,iBAAiB,EAAE,EAAE,SAAS,EAAE,oBAAoB,EAAE;YACtD,gBAAgB,EAAE,EAAE,SAAS,EAAE,mBAAmB,EAAE;YACpD,kBAAkB,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE;SACzC,CAAC;IACJ,CAAC;IAUD,MAAM;;QACJ,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC;QACzB,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAuB,CAAC;QACnE,MAAM,aAAa,eAAG,IAAI,CAAC,IAAI,0CAAE,MAAM,OAAC,IAAI,CAAC,gBAAgB,mCAAI,EAAE,oCAAK,EAAE,CAAC;QAC3E,MAAM,cAAc,GAA2B,EAAE,CAAC;QAClD,MAAM,gBAAgB,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;QAExD,IAAI,MAAM,EAAE;YACV,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;gBACxB,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;gBACvD,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC3D,MAAM,MAAM,GAAI,aAAa,CAAC,KAAK,CAA4C,CAAC,QAAQ,CAAC,CAAC;gBAE1F,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE;oBACxB,cAAc,CAAC,GAAG,KAAK,IAAI,QAAQ,IAAI,GAAG,EAAE,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;iBAC7D;aACF;iBAAM;gBACL,KAAK,MAAM,GAAG,IAAI,aAAa,EAAE;oBAC/B,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC;wBAAE,cAAc,CAAC,GAAG,CAAC,GAAG,aAAa,CAAC,GAAG,CAAW,CAAC;iBAChF;aACF;SACF;QAED,MAAM,eAAe,GAAG,IAAI,CAAC,uBAAuB,EAAE,CAAC;QACvD,MAAM,SAAS,GAAG,eAAe,CAAC,SAAS,CAAC;QAE5C,OAAO,IAAI,CAAA;QACP,eAAe,CAAC,QAAQ;;uBAET,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC;;kBAEpB,QAAQ,CAAC;YACf,2CAA2C,EAAE,IAAI;YACjD,+BAA+B,EAAE,gBAAgB;SAClD,CAAC;;;uBAGW,IAAI,CAAC,kBAAkB;;;gCAGd,CAAC,GAAgB,EAAE,EAAE;;YACvC,MAAM,WAAW,GAAG,GAAG,CAAC,aAA4B,CAAC;YACrD,IAAI,CAAC,kBAAkB,SAAG,WAAW,CAAC,QAAQ,mCAAI,CAAC,CAAC;QACtD,CAAC;;cAEC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;YAChB,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YAC3E,MAAM,KAAK,GAAG,IAAI,CAAA,4BAA4B,SAAS,SAAS,CAAC;YACjE,OAAO,IAAI,CAAA,eAAe,KAAK,eAAe,CAAC;QACjD,CAAC,CAAC;;;YAGF,MAAM,CACN,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,EAC9B,CAAC,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC,UAAU,EAC5B,CAAC,CAAC,UAAU,EAAE,YAAY,CAAC,EAAE,EAAE;;YAC7B,IAAI,IAAY,CAAC;YACjB,IAAI,OAA2B,CAAC;YAChC,IAAI,QAA6E,CAAC;YAElF,IAAI,UAAU,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE;gBACtC,IAAI,GAAG,UAAU,CAAC,SAAS,CAAC,MAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gBAChD,OAAO,GAAG,MAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;gBAC/B,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC;aAC1E;iBAAM;gBACL,IAAI,GAAG,UAAU,CAAC;gBAClB,OAAO,GAAG,SAAS,CAAC;gBACpB,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;aACjD;YAED,OAAO,IAAI,CAAA;;kCAES,YAAY;4BAClB,SAAS,CAAC,OAAO,CAAC;2BACnB,SAAS,OAAC,IAAI,CAAC,iBAAiB,mCAAI,KAAK,CAAC,CAAC;yBAC7C,IAAI;;0BAEH,QAAQ,aAAR,QAAQ,cAAR,QAAQ,GAAI,IAAI;;;eAG3B,CAAC;QACJ,CAAC,CACF;;;;;kBAKO,QAAQ,CAAC;YACf,0CAA0C,EAAE,IAAI;YAChD,+BAA+B,EAAE,CAAC,gBAAgB;SACnD,CAAC;;;qBAGS,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY;;oBAE5C,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM;;;;;;KAM3F,CAAC;IACJ,CAAC;IAED,IAAY,MAAM;;QAChB,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAAC,OAAC,IAAI,CAAC,IAAI,0CAAE,MAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC,SAAS,CAAC;QAE5F,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,aAAN,MAAM,cAAN,MAAM,GAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;YACzE,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;gBAC7B,MAAM,MAAM,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;gBAClD,OAAO,CAAC,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC;aAC5B;iBAAM;gBACL,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,EAAE;oBACnD,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,KAAK,CAAC;wBAAE,OAAO;oBAC/C,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,IAAI,MAAM,EAAE,CAAC,CAAC;gBAClC,CAAC,CAAC,CAAC;aACJ;YAED,OAAO,OAAO,CAAC;QACjB,CAAC,EAAE,IAAI,GAAG,EAAU,CAAC,CAAC;QAEtB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAEO,uBAAuB;;QAG7B,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAS,cAAc,CAAC,CAAC,CAAC;QACrF,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAC9B,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,eAAC,OAAA,CAAC,GAAG,MAAM,EAAE,GAAG,aAAC,MAAM,CAAC,IAAI,0CAAE,SAAS,CAAC,uBAAuB,oCAAK,EAAE,CAAC,CAAC,CAAA,EAAA,EAC3F,EAAuC,CACxC,CAAC;QAEF,MAAM,WAAW,GAAG,OAAO,CAAC,CAAC,CAAuB,CAAC;QAErD,MAAM,eAAe,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,IAAI,0CAAE,WAAW,KAAI,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;aACxF,IAAI,CAAC,CAAC,CAAC;aACP,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE;;YAChB,IAAI;gBACF,MAAM,GAAG,GAAG,IAAI,GAAG,OAAC,IAAI,CAAC,iBAAiB,mCAAI,EAAE,CAAC,CAAC;gBAElD,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC;gBACpD,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;gBAErC,OAAO,IAAI,CAAA;0CACqB,GAAG,CAAC,QAAQ,EAAE,YAAY,GAAG,EAAE,CAAC,IAAI,CAAC,aAAa,EAAE;;WAEnF,CAAC;aACH;YAAC,WAAM;gBACN,OAAO,SAAS,CAAC;aAClB;QACH,CAAC,CAAC,CAAC;QAEL,OAAO;YACL,QAAQ,EAAE,IAAI,CAAA,uBAAuB,eAAe,QAAQ;YAC5D,SAAS;YACT,OAAO;SACR,CAAC;IACJ,CAAC;CACF","sourcesContent":["import type { PropertyDeclarations, TemplateResult } from 'lit-element';\nimport type { Data, Overrides } from './types';\nimport type { TabsElement } from '@vaadin/vaadin-tabs';\nimport type { Resource } from '@foxy.io/sdk/core';\nimport type { Rels } from '@foxy.io/sdk/backend';\n\nimport { ConfigurableMixin } from '../../../mixins/configurable';\nimport { TranslatableMixin } from '../../../mixins/translatable';\nimport { ThemeableMixin } from '../../../mixins/themeable';\nimport { NucleonElement } from '../NucleonElement/NucleonElement';\nimport { ifDefined } from 'lit-html/directives/if-defined';\nimport { classMap } from '../../../utils/class-map';\nimport { repeat } from 'lit-html/directives/repeat';\nimport { html } from 'lit-html';\n\nconst NS = 'i18n-editor';\nconst Base = TranslatableMixin(ConfigurableMixin(ThemeableMixin(NucleonElement)), NS);\n\n/**\n * Editor for language string overrides. Loads language strings\n * property helper (`fx:language_strings`) as main resource.\n *\n * @since 1.21.0\n * @element foxy-i18n-editor\n */\nexport class I18nEditor extends Base<Data> {\n static get properties(): PropertyDeclarations {\n return {\n ...super.properties,\n languageOverrides: { attribute: 'language-overrides' },\n selectedLanguage: { attribute: 'selected-language' },\n __selectedTabIndex: { attribute: false },\n };\n }\n\n /** URL of the `fx:language_overrides` resource for a template set. */\n languageOverrides: string | null = null;\n\n /** Language from the `fx:language_strings` property helper for which the default values will be pulled from. */\n selectedLanguage: string | null = null;\n\n private __selectedTabIndex = 0;\n\n render(): TemplateResult {\n const tabs = this.__tabs;\n const prefix = tabs[this.__selectedTabIndex] as string | undefined;\n const valuesForLang = this.data?.values[this.selectedLanguage ?? ''] ?? {};\n const filteredValues: Record<string, string> = {};\n const isSpinnerVisible = !this.in({ idle: 'snapshot' });\n\n if (prefix) {\n if (prefix.includes('_')) {\n const group = prefix.substring(0, prefix.indexOf('_'));\n const subGroup = prefix.substring(prefix.indexOf('_') + 1);\n const values = (valuesForLang[group] as Record<string, Record<string, string>>)[subGroup];\n\n for (const key in values) {\n filteredValues[`${group}_${subGroup}_${key}`] = values[key];\n }\n } else {\n for (const key in valuesForLang) {\n if (key.startsWith(prefix)) filteredValues[key] = valuesForLang[key] as string;\n }\n }\n }\n\n const overridesLoader = this.__renderOverridesLoader();\n const overrides = overridesLoader.overrides;\n\n return html`\n ${overridesLoader.template}\n\n <div aria-busy=${this.in('busy')} aria-live=\"polite\" class=\"relative\">\n <div\n class=${classMap({\n 'transition-opacity grid grid-cols-1 gap-s': true,\n 'opacity-0 pointer-events-none': isSpinnerVisible,\n })}\n >\n <vaadin-tabs\n selected=${this.__selectedTabIndex}\n class=\"-mx-l\"\n theme=\"minimal\"\n @selected-changed=${(evt: CustomEvent) => {\n const tabsElement = evt.currentTarget as TabsElement;\n this.__selectedTabIndex = tabsElement.selected ?? 0;\n }}\n >\n ${tabs.map(name => {\n const shortName = name.substring(name.indexOf('_') + 1).replace(/_/g, ' ');\n const label = html`<span class=\"capitalize\">${shortName}</span>`;\n return html`<vaadin-tab>${label}</vaadin-tab>`;\n })}\n </vaadin-tabs>\n\n ${repeat(\n Object.entries(filteredValues),\n ([keyOrGroup]) => keyOrGroup,\n ([keyOrGroup, defaultValue]) => {\n let code: string;\n let gateway: string | undefined;\n let override: Overrides['_embedded']['fx:language_overrides'][number] | undefined;\n\n if (keyOrGroup.startsWith('gateways_')) {\n code = keyOrGroup.substring(prefix!.length + 1);\n gateway = prefix!.substring(9);\n override = overrides.find(o => o.code === code && o.gateway === gateway);\n } else {\n code = keyOrGroup;\n gateway = undefined;\n override = overrides.find(o => o.code === code);\n }\n\n return html`\n <foxy-internal-i18n-editor-entry\n default-value=${defaultValue}\n gateway=${ifDefined(gateway)}\n parent=${ifDefined(this.languageOverrides ?? void 0)}\n code=${code}\n infer=\"\"\n .data=${override ?? null}\n >\n </foxy-internal-i18n-editor-entry>\n `;\n }\n )}\n </div>\n\n <div\n data-testid=\"spinner\"\n class=${classMap({\n 'transition-opacity absolute inset-0 flex': true,\n 'opacity-0 pointer-events-none': !isSpinnerVisible,\n })}\n >\n <foxy-spinner\n layout=${this.in('busy') ? 'no-label' : 'horizontal'}\n class=\"m-auto\"\n state=${this.in('fail') ? 'error' : this.in({ idle: 'template' }) ? 'empty' : 'busy'}\n infer=\"spinner\"\n >\n </foxy-spinner>\n </div>\n </div>\n `;\n }\n\n private get __tabs() {\n const values = this.selectedLanguage ? this.data?.values[this.selectedLanguage] : undefined;\n\n const tabs = Object.entries(values ?? {}).reduce((allKeys, [key, value]) => {\n if (typeof value === 'string') {\n const prefix = key.substring(0, key.indexOf('_'));\n allKeys.add(prefix || key);\n } else {\n Object.entries(value).forEach(([subKey, subValue]) => {\n if (Object.keys(subValue).length === 0) return;\n allKeys.add(`${key}_${subKey}`);\n });\n }\n\n return allKeys;\n }, new Set<string>());\n\n return Array.from(tabs);\n }\n\n private __renderOverridesLoader() {\n type Loader = NucleonElement<Overrides>;\n\n const loaders = Array.from(this.renderRoot.querySelectorAll<Loader>('foxy-nucleon'));\n const overrides = loaders.reduce(\n (result, loader) => [...result, ...(loader.data?._embedded['fx:language_overrides'] ?? [])],\n [] as Resource<Rels.LanguageOverride>[]\n );\n\n const firstLoader = loaders[0] as Loader | undefined;\n\n const loaderTemplates = new Array(Math.ceil((firstLoader?.data?.total_items || 300) / 300))\n .fill(0)\n .map((_, index) => {\n try {\n const url = new URL(this.languageOverrides ?? '');\n\n url.searchParams.set('offset', String(index * 300));\n url.searchParams.set('limit', '300');\n\n return html`\n <foxy-nucleon infer=\"\" href=${url.toString()} @update=${() => this.requestUpdate()}>\n </foxy-nucleon>\n `;\n } catch {\n return undefined;\n }\n });\n\n return {\n template: html`<div class=\"hidden\">${loaderTemplates}</div>`,\n overrides,\n loaders,\n };\n }\n}\n"]}
|
|
@@ -101,26 +101,25 @@ export class ItemCard extends Base {
|
|
|
101
101
|
>
|
|
102
102
|
</foxy-nucleon>
|
|
103
103
|
|
|
104
|
-
<div
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
104
|
+
<div
|
|
105
|
+
class="flex items-start leading-xs"
|
|
106
|
+
style="gap: calc(0.625em + (var(--lumo-border-radius) / 4) - 1px)"
|
|
107
|
+
>
|
|
108
|
+
<img
|
|
109
|
+
class="relative h-s w-s object-cover rounded-full bg-contrast-20 flex-shrink-0 shadow-xs"
|
|
110
|
+
src=${ifDefined((_g = this.data) === null || _g === void 0 ? void 0 : _g.image)}
|
|
111
|
+
alt=""
|
|
112
|
+
@error=${(evt) => {
|
|
111
113
|
const img = evt.currentTarget;
|
|
112
114
|
img.src = ItemCard.__placeholder;
|
|
113
115
|
}}
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
<div class="border border-contrast-10 absolute inset-0 rounded-s"></div>
|
|
117
|
-
</div>
|
|
116
|
+
/>
|
|
118
117
|
|
|
119
118
|
<div class="flex-1 min-w-0">
|
|
120
|
-
<div class="flex-1 h-
|
|
121
|
-
<div class="flex-1
|
|
119
|
+
<div class="flex-1 h-s flex items-center">
|
|
120
|
+
<div class="flex-1">
|
|
122
121
|
<div class="font-semibold text-m truncate">${(_h = this.data) === null || _h === void 0 ? void 0 : _h.name}</div>
|
|
123
|
-
<div class="text-
|
|
122
|
+
<div class="text-tertiary text-s truncate">
|
|
124
123
|
${quantity} ×
|
|
125
124
|
|
|
126
125
|
<foxy-i18n
|
|
@@ -165,7 +164,7 @@ export class ItemCard extends Base {
|
|
|
165
164
|
${options.map(option => html `
|
|
166
165
|
<div
|
|
167
166
|
data-testclass="option"
|
|
168
|
-
class="flex items-center text-
|
|
167
|
+
class="flex items-center text-s space-x-xs leading-m"
|
|
169
168
|
>
|
|
170
169
|
<div class="flex-1 text-tertiary truncate">
|
|
171
170
|
${option.name}: ${option.value}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ItemCard.js","sourceRoot":"","sources":["../../../../src/elements/public/ItemCard/ItemCard.ts"],"names":[],"mappings":"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","sourcesContent":["import type { PropertyDeclarations } from 'lit-element';\nimport type { NucleonElement } from '../NucleonElement/NucleonElement';\nimport type { TemplateResult } from 'lit-html';\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 { ConfigurableMixin } from '../../../mixins/configurable';\nimport { InternalCard } from '../../internal/InternalCard/InternalCard';\nimport { ifDefined } from 'lit-html/directives/if-defined';\nimport { html } from 'lit-html';\n\nconst NS = 'item-card';\nconst Base = ConfigurableMixin(TranslatableMixin(InternalCard, NS));\n\n/**\n * Basic card displaying an item.\n *\n * @element foxy-item-card\n * @since 1.17.0\n */\nexport class ItemCard 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 static readonly __placeholder =\n 'data:image/svg+xml,%3Csvg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"%3E%3Crect width=\"40\" height=\"40\" fill=\"%23E8E8E8\"/%3E%3Cpath d=\"M31.5143 0H24.5476L0 24.5476V31.5143L11.7046 19.8097L11.9841 17.0782C12.0983 15.9624 13.0131 15.1154 14.1038 15.1154H15.7373V12.1923C15.7373 10.9815 16.6915 10 17.8687 10H21.5143L31.5143 0Z\" fill=\"white\"/%3E%3Cpath d=\"M11.5434 21.3852L0 32.9285V39.8953L11.5822 28.3131C11.172 27.8663 10.9438 27.2444 11.012 26.5782L11.5434 21.3852Z\" fill=\"white\"/%3E%3Cpath d=\"M12.4305 28.879L1.30951 40H8.27631L19.2763 29H13.1316C12.8853 29 12.6495 28.9573 12.4305 28.879Z\" fill=\"white\"/%3E%3Cpath d=\"M28.3113 19.965L28.0159 17.0782C27.9116 16.0591 27.1395 15.2642 26.1754 15.1341L40 1.3095V8.27627L28.3113 19.965Z\" fill=\"white\"/%3E%3Cpath d=\"M20.6905 29L9.69049 40H16.6572L27.9755 28.6817C27.6541 28.8832 27.2756 29 26.8684 29H20.6905Z\" fill=\"white\"/%3E%3Cpath d=\"M28.6572 28C28.9128 27.5952 29.0415 27.1003 28.988 26.5782L28.4426 21.2479L40 9.69053V16.6572L28.6572 28Z\" fill=\"white\"/%3E%3Cpath d=\"M25.0381 40H18.0715L40 18.0715V25.0381L25.0381 40Z\" fill=\"white\"/%3E%3Cpath d=\"M26.4524 40H33.4191L40 33.4191V26.4524L26.4524 40Z\" fill=\"white\"/%3E%3Cpath d=\"M40 40H34.8333L40 34.8333V40Z\" fill=\"white\"/%3E%3Cpath d=\"M16.1666 0H23.1334L0 23.1334V16.1666L16.1666 0Z\" fill=\"white\"/%3E%3Cpath d=\"M14.7524 0H7.78571L0 7.78573V14.7524L14.7524 0Z\" fill=\"white\"/%3E%3Cpath d=\"M0 0H6.37152L0 6.37151V0Z\" fill=\"white\"/%3E%3Cpath d=\"M21.467 11.4615H17.8687C17.4763 11.4615 17.1582 11.7887 17.1582 12.1923V15.1154H22.8418V12.1923C22.8418 11.7887 22.5237 11.4615 22.1313 11.4615H21.467Z\" fill=\"white\"/%3E%3Cpath d=\"M24.7798 15.1154H24.2627V12.1923C24.2627 11.227 23.6562 10.4075 22.8138 10.1148L32.9286 0H39.89L24.7798 15.1154Z\" fill=\"white\"/%3E%3C/svg%3E';\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 renderBody(): TemplateResult {\n const quantity = this.data?.quantity ?? 0;\n const options = this.data?._embedded?.['fx:item_options'];\n const price = this.data?.price ?? 0;\n\n const currencyDisplay = this.__currencyDisplay;\n const currencyCode = this.__currencyCode;\n const totalPrice = quantity * price;\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 <div class=\"flex items-start space-x-m leading-m\">\n <div class=\"w-l h-l relative flex-shrink-0\">\n <img\n class=\"relative w-full h-full object-cover rounded-s\"\n src=${ifDefined(this.data?.image)}\n alt=\"\"\n @error=${(evt: Event) => {\n const img = evt.currentTarget as HTMLImageElement;\n img.src = ItemCard.__placeholder;\n }}\n />\n\n <div class=\"border border-contrast-10 absolute inset-0 rounded-s\"></div>\n </div>\n\n <div class=\"flex-1 min-w-0\">\n <div class=\"flex-1 h-l flex items-center\">\n <div class=\"flex-1 leading-s\">\n <div class=\"font-semibold text-m truncate\">${this.data?.name}</div>\n <div class=\"text-secondary text-m truncate\">\n ${quantity} ×\n\n <foxy-i18n\n options=${JSON.stringify({\n amount: `${price} ${currencyCode}`,\n currencyDisplay,\n })}\n key=\"price\"\n infer=\"\"\n >\n </foxy-i18n>\n\n =\n\n <foxy-i18n\n options=${JSON.stringify({\n amount: `${totalPrice} ${currencyCode}`,\n currencyDisplay,\n })}\n key=\"price\"\n infer=\"\"\n >\n </foxy-i18n>\n </div>\n </div>\n\n ${this.data?.subscription_frequency &&\n !this.hiddenSelector.matches('autorenew-icon', true)\n ? html`\n <div\n class=\"w-xs h-xs flex items-center justify-center rounded-full bg-contrast-5\"\n >\n <iron-icon icon=\"icons:autorenew\" class=\"icon-inline text-s\"></iron-icon>\n </div>\n `\n : ''}\n </div>\n\n ${options && options.length > 0\n ? html`\n <div class=\"mt-s\">\n ${options.map(\n option => html`\n <div\n data-testclass=\"option\"\n class=\"flex items-center text-m space-x-xs leading-m\"\n >\n <div class=\"flex-1 text-tertiary truncate\">\n ${option.name}: ${option.value}\n </div>\n ${option.price_mod\n ? html`\n <div\n class=\"${option.price_mod > 0\n ? 'text-success'\n : 'text-error'} rounded px-xs truncate\"\n >\n <foxy-i18n\n options=${JSON.stringify({\n amount: `${option.price_mod} ${currencyCode}`,\n currencyDisplay: currencyDisplay,\n })}\n key=\"price\"\n infer=\"\"\n >\n </foxy-i18n>\n </div>\n `\n : ''}\n ${option.weight_mod\n ? html`\n <div\n class=\"${option.price_mod > 0\n ? 'text-success'\n : 'text-error'} rounded px-xs truncate\"\n >\n ${option.weight_mod}\n <foxy-i18n key=\"wgt\" infer=\"\"></foxy-i18n>\n </div>\n `\n : ''}\n </div>\n `\n )}\n </div>\n `\n : ''}\n </div>\n </div>\n `;\n }\n\n get isBodyReady(): boolean {\n const isLoaded = !!this.__currencyDisplay && !!this.__currencyCode;\n return super.isBodyReady && isLoaded;\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 private get __currencyDisplay() {\n const useCode = this.__store?.use_international_currency_symbol;\n\n if (useCode === true) return 'code';\n if (useCode === false) return 'symbol';\n if (this.data && !this.data._links['fx:store']) return 'symbol';\n }\n\n private get __currencyCode() {\n const transaction = this.__transaction;\n\n if (transaction) {\n return 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 return cart.currency_code as string;\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) return /Currency: ([A-Z]{3})/g.exec(localeInfo)?.[1];\n }\n }\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"ItemCard.js","sourceRoot":"","sources":["../../../../src/elements/public/ItemCard/ItemCard.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,iBAAiB,EAAE,wCAAqC;AACjE,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,MAAM,EAAE,GAAG,WAAW,CAAC;AACvB,MAAM,IAAI,GAAG,iBAAiB,CAAC,iBAAiB,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC,CAAC;AAEpE;;;;;GAKG;AACH,MAAM,OAAO,QAAS,SAAQ,IAAU;IAAxC;;QAQE,gBAAW,GAAkB,IAAI,CAAC;QAKjB,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;IA6TjD,CAAC;IArVC,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;IAqBD,UAAU;;QACR,MAAM,QAAQ,eAAG,IAAI,CAAC,IAAI,0CAAE,QAAQ,mCAAI,CAAC,CAAC;QAC1C,MAAM,OAAO,eAAG,IAAI,CAAC,IAAI,0CAAE,SAAS,0CAAG,iBAAiB,CAAC,CAAC;QAC1D,MAAM,KAAK,eAAG,IAAI,CAAC,IAAI,0CAAE,KAAK,mCAAI,CAAC,CAAC;QAEpC,MAAM,eAAe,GAAG,IAAI,CAAC,iBAAiB,CAAC;QAC/C,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC;QACzC,MAAM,UAAU,GAAG,QAAQ,GAAG,KAAK,CAAC;QAEpC,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;;;;;;;;;;gBAU5B,SAAS,OAAC,IAAI,CAAC,IAAI,0CAAE,KAAK,CAAC;;mBAExB,CAAC,GAAU,EAAE,EAAE;YACtB,MAAM,GAAG,GAAG,GAAG,CAAC,aAAiC,CAAC;YAClD,GAAG,CAAC,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC;QACnC,CAAC;;;;;;2DAMgD,MAAA,IAAI,CAAC,IAAI,0CAAE,IAAI;;kBAExD,QAAQ;;;4BAGE,IAAI,CAAC,SAAS,CAAC;YACvB,MAAM,EAAE,GAAG,KAAK,IAAI,YAAY,EAAE;YAClC,eAAe;SAChB,CAAC;;;;;;;;;4BASQ,IAAI,CAAC,SAAS,CAAC;YACvB,MAAM,EAAE,GAAG,UAAU,IAAI,YAAY,EAAE;YACvC,eAAe;SAChB,CAAC;;;;;;;;cAQN,OAAA,IAAI,CAAC,IAAI,0CAAE,sBAAsB;YACnC,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,gBAAgB,EAAE,IAAI,CAAC;YAClD,CAAC,CAAC,IAAI,CAAA;;;;;;iBAMH;YACH,CAAC,CAAC,EAAE;;;YAGN,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;YAC7B,CAAC,CAAC,IAAI,CAAA;;oBAEE,OAAO,CAAC,GAAG,CACX,MAAM,CAAC,EAAE,CAAC,IAAI,CAAA;;;;;;4BAMN,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,KAAK;;0BAE9B,MAAM,CAAC,SAAS;gBAChB,CAAC,CAAC,IAAI,CAAA;;yCAES,MAAM,CAAC,SAAS,GAAG,CAAC;oBAC3B,CAAC,CAAC,cAAc;oBAChB,CAAC,CAAC,YAAY;;;4CAGJ,IAAI,CAAC,SAAS,CAAC;oBACvB,MAAM,EAAE,GAAG,MAAM,CAAC,SAAS,IAAI,YAAY,EAAE;oBAC7C,eAAe,EAAE,eAAe;iBACjC,CAAC;;;;;;6BAMP;gBACH,CAAC,CAAC,EAAE;0BACJ,MAAM,CAAC,UAAU;gBACjB,CAAC,CAAC,IAAI,CAAA;;yCAES,MAAM,CAAC,SAAS,GAAG,CAAC;oBAC3B,CAAC,CAAC,cAAc;oBAChB,CAAC,CAAC,YAAY;;kCAEd,MAAM,CAAC,UAAU;;;6BAGtB;gBACH,CAAC,CAAC,EAAE;;qBAET,CACF;;eAEJ;YACH,CAAC,CAAC,EAAE;;;KAGX,CAAC;IACJ,CAAC;IAED,IAAI,WAAW;QACb,MAAM,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC,iBAAiB,IAAI,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC;QACnE,OAAO,KAAK,CAAC,WAAW,IAAI,QAAQ,CAAC;IACvC,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;IAED,IAAY,iBAAiB;;QAC3B,MAAM,OAAO,SAAG,IAAI,CAAC,OAAO,0CAAE,iCAAiC,CAAC;QAEhE,IAAI,OAAO,KAAK,IAAI;YAAE,OAAO,MAAM,CAAC;QACpC,IAAI,OAAO,KAAK,KAAK;YAAE,OAAO,QAAQ,CAAC;QACvC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC;YAAE,OAAO,QAAQ,CAAC;IAClE,CAAC;IAED,IAAY,cAAc;;QACxB,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC;QAEvC,IAAI,WAAW,EAAE;YACf,OAAO,WAAW,CAAC,aAAa,CAAC;SAClC;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,OAAO,IAAI,CAAC,aAAuB,CAAC;aACrC;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,aAAO,uBAAuB,CAAC,IAAI,CAAC,UAAU,CAAC,0CAAG,CAAC,EAAE;aACtE;SACF;IACH,CAAC;;AA3UuB,sBAAa,GACnC,+wDAA+wD,CAAC","sourcesContent":["import type { PropertyDeclarations } from 'lit-element';\nimport type { NucleonElement } from '../NucleonElement/NucleonElement';\nimport type { TemplateResult } from 'lit-html';\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 { ConfigurableMixin } from '../../../mixins/configurable';\nimport { InternalCard } from '../../internal/InternalCard/InternalCard';\nimport { ifDefined } from 'lit-html/directives/if-defined';\nimport { html } from 'lit-html';\n\nconst NS = 'item-card';\nconst Base = ConfigurableMixin(TranslatableMixin(InternalCard, NS));\n\n/**\n * Basic card displaying an item.\n *\n * @element foxy-item-card\n * @since 1.17.0\n */\nexport class ItemCard 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 static readonly __placeholder =\n 'data:image/svg+xml,%3Csvg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"%3E%3Crect width=\"40\" height=\"40\" fill=\"%23E8E8E8\"/%3E%3Cpath d=\"M31.5143 0H24.5476L0 24.5476V31.5143L11.7046 19.8097L11.9841 17.0782C12.0983 15.9624 13.0131 15.1154 14.1038 15.1154H15.7373V12.1923C15.7373 10.9815 16.6915 10 17.8687 10H21.5143L31.5143 0Z\" fill=\"white\"/%3E%3Cpath d=\"M11.5434 21.3852L0 32.9285V39.8953L11.5822 28.3131C11.172 27.8663 10.9438 27.2444 11.012 26.5782L11.5434 21.3852Z\" fill=\"white\"/%3E%3Cpath d=\"M12.4305 28.879L1.30951 40H8.27631L19.2763 29H13.1316C12.8853 29 12.6495 28.9573 12.4305 28.879Z\" fill=\"white\"/%3E%3Cpath d=\"M28.3113 19.965L28.0159 17.0782C27.9116 16.0591 27.1395 15.2642 26.1754 15.1341L40 1.3095V8.27627L28.3113 19.965Z\" fill=\"white\"/%3E%3Cpath d=\"M20.6905 29L9.69049 40H16.6572L27.9755 28.6817C27.6541 28.8832 27.2756 29 26.8684 29H20.6905Z\" fill=\"white\"/%3E%3Cpath d=\"M28.6572 28C28.9128 27.5952 29.0415 27.1003 28.988 26.5782L28.4426 21.2479L40 9.69053V16.6572L28.6572 28Z\" fill=\"white\"/%3E%3Cpath d=\"M25.0381 40H18.0715L40 18.0715V25.0381L25.0381 40Z\" fill=\"white\"/%3E%3Cpath d=\"M26.4524 40H33.4191L40 33.4191V26.4524L26.4524 40Z\" fill=\"white\"/%3E%3Cpath d=\"M40 40H34.8333L40 34.8333V40Z\" fill=\"white\"/%3E%3Cpath d=\"M16.1666 0H23.1334L0 23.1334V16.1666L16.1666 0Z\" fill=\"white\"/%3E%3Cpath d=\"M14.7524 0H7.78571L0 7.78573V14.7524L14.7524 0Z\" fill=\"white\"/%3E%3Cpath d=\"M0 0H6.37152L0 6.37151V0Z\" fill=\"white\"/%3E%3Cpath d=\"M21.467 11.4615H17.8687C17.4763 11.4615 17.1582 11.7887 17.1582 12.1923V15.1154H22.8418V12.1923C22.8418 11.7887 22.5237 11.4615 22.1313 11.4615H21.467Z\" fill=\"white\"/%3E%3Cpath d=\"M24.7798 15.1154H24.2627V12.1923C24.2627 11.227 23.6562 10.4075 22.8138 10.1148L32.9286 0H39.89L24.7798 15.1154Z\" fill=\"white\"/%3E%3C/svg%3E';\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 renderBody(): TemplateResult {\n const quantity = this.data?.quantity ?? 0;\n const options = this.data?._embedded?.['fx:item_options'];\n const price = this.data?.price ?? 0;\n\n const currencyDisplay = this.__currencyDisplay;\n const currencyCode = this.__currencyCode;\n const totalPrice = quantity * price;\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 <div\n class=\"flex items-start leading-xs\"\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=${ifDefined(this.data?.image)}\n alt=\"\"\n @error=${(evt: Event) => {\n const img = evt.currentTarget as HTMLImageElement;\n img.src = ItemCard.__placeholder;\n }}\n />\n\n <div class=\"flex-1 min-w-0\">\n <div class=\"flex-1 h-s flex items-center\">\n <div class=\"flex-1\">\n <div class=\"font-semibold text-m truncate\">${this.data?.name}</div>\n <div class=\"text-tertiary text-s truncate\">\n ${quantity} ×\n\n <foxy-i18n\n options=${JSON.stringify({\n amount: `${price} ${currencyCode}`,\n currencyDisplay,\n })}\n key=\"price\"\n infer=\"\"\n >\n </foxy-i18n>\n\n =\n\n <foxy-i18n\n options=${JSON.stringify({\n amount: `${totalPrice} ${currencyCode}`,\n currencyDisplay,\n })}\n key=\"price\"\n infer=\"\"\n >\n </foxy-i18n>\n </div>\n </div>\n\n ${this.data?.subscription_frequency &&\n !this.hiddenSelector.matches('autorenew-icon', true)\n ? html`\n <div\n class=\"w-xs h-xs flex items-center justify-center rounded-full bg-contrast-5\"\n >\n <iron-icon icon=\"icons:autorenew\" class=\"icon-inline text-s\"></iron-icon>\n </div>\n `\n : ''}\n </div>\n\n ${options && options.length > 0\n ? html`\n <div class=\"mt-s\">\n ${options.map(\n option => html`\n <div\n data-testclass=\"option\"\n class=\"flex items-center text-s space-x-xs leading-m\"\n >\n <div class=\"flex-1 text-tertiary truncate\">\n ${option.name}: ${option.value}\n </div>\n ${option.price_mod\n ? html`\n <div\n class=\"${option.price_mod > 0\n ? 'text-success'\n : 'text-error'} rounded px-xs truncate\"\n >\n <foxy-i18n\n options=${JSON.stringify({\n amount: `${option.price_mod} ${currencyCode}`,\n currencyDisplay: currencyDisplay,\n })}\n key=\"price\"\n infer=\"\"\n >\n </foxy-i18n>\n </div>\n `\n : ''}\n ${option.weight_mod\n ? html`\n <div\n class=\"${option.price_mod > 0\n ? 'text-success'\n : 'text-error'} rounded px-xs truncate\"\n >\n ${option.weight_mod}\n <foxy-i18n key=\"wgt\" infer=\"\"></foxy-i18n>\n </div>\n `\n : ''}\n </div>\n `\n )}\n </div>\n `\n : ''}\n </div>\n </div>\n `;\n }\n\n get isBodyReady(): boolean {\n const isLoaded = !!this.__currencyDisplay && !!this.__currencyCode;\n return super.isBodyReady && isLoaded;\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 private get __currencyDisplay() {\n const useCode = this.__store?.use_international_currency_symbol;\n\n if (useCode === true) return 'code';\n if (useCode === false) return 'symbol';\n if (this.data && !this.data._links['fx:store']) return 'symbol';\n }\n\n private get __currencyCode() {\n const transaction = this.__transaction;\n\n if (transaction) {\n return 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 return cart.currency_code as string;\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) return /Currency: ([A-Z]{3})/g.exec(localeInfo)?.[1];\n }\n }\n }\n}\n"]}
|
|
@@ -16,8 +16,8 @@ const Base = TranslatableMixin(TwoLineCard, NS);
|
|
|
16
16
|
* @since 1.21.0
|
|
17
17
|
*/
|
|
18
18
|
export class ItemCategoryCard extends Base {
|
|
19
|
-
|
|
20
|
-
return super.
|
|
19
|
+
renderBody() {
|
|
20
|
+
return super.renderBody({
|
|
21
21
|
title: data => html `${data.name}`,
|
|
22
22
|
subtitle: data => html `${data.code}`,
|
|
23
23
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ItemCategoryCard.js","sourceRoot":"","sources":["../../../../src/elements/public/ItemCategoryCard/ItemCategoryCard.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,iBAAiB,EAAE,wCAAqC;AACjE,OAAO,EAAE,WAAW,EAAE,0CAAuC;AAC7D,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAEhC,MAAM,EAAE,GAAG,oBAAoB,CAAC;AAChC,MAAM,IAAI,GAAG,iBAAiB,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;AAEhD;;;;;;;;;;;GAWG;AACH,MAAM,OAAO,gBAAiB,SAAQ,IAAU;IAC9C,
|
|
1
|
+
{"version":3,"file":"ItemCategoryCard.js","sourceRoot":"","sources":["../../../../src/elements/public/ItemCategoryCard/ItemCategoryCard.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,iBAAiB,EAAE,wCAAqC;AACjE,OAAO,EAAE,WAAW,EAAE,0CAAuC;AAC7D,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAEhC,MAAM,EAAE,GAAG,oBAAoB,CAAC;AAChC,MAAM,IAAI,GAAG,iBAAiB,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;AAEhD;;;;;;;;;;;GAWG;AACH,MAAM,OAAO,gBAAiB,SAAQ,IAAU;IAC9C,UAAU;QACR,OAAO,KAAK,CAAC,UAAU,CAAC;YACtB,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAA,GAAG,IAAI,CAAC,IAAI,EAAE;YACjC,QAAQ,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAA,GAAG,IAAI,CAAC,IAAI,EAAE;SACrC,CAAC,CAAC;IACL,CAAC;CACF","sourcesContent":["import 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 = 'item-category-card';\nconst Base = TranslatableMixin(TwoLineCard, NS);\n\n/**\n * Card element representing an item category (`fx:item_category`).\n *\n * @slot title:before\n * @slot title:after\n *\n * @slot subtitle:before\n * @slot subtitle:after\n *\n * @element foxy-item-category-card\n * @since 1.21.0\n */\nexport class ItemCategoryCard extends Base<Data> {\n renderBody(): TemplateResult {\n return super.renderBody({\n title: data => html`${data.name}`,\n subtitle: data => html`${data.code}`,\n });\n }\n}\n"]}
|
|
@@ -26,7 +26,7 @@ export declare class ItemOptionCard extends Base<Data> {
|
|
|
26
26
|
private readonly __templateSetLoaderId;
|
|
27
27
|
private readonly __storeLoaderId;
|
|
28
28
|
private readonly __cartLoaderId;
|
|
29
|
-
|
|
29
|
+
renderBody(): TemplateResult;
|
|
30
30
|
private get __transactionTemplateHref();
|
|
31
31
|
private get __defaultTemplateSetHref();
|
|
32
32
|
private get __localeCodesHelperHref();
|
|
@@ -34,7 +34,7 @@ export class ItemOptionCard extends Base {
|
|
|
34
34
|
localeCodes: { type: String, attribute: 'locale-codes' },
|
|
35
35
|
};
|
|
36
36
|
}
|
|
37
|
-
|
|
37
|
+
renderBody() {
|
|
38
38
|
var _a, _b, _c, _d, _e, _f;
|
|
39
39
|
const currencyDisplay = ((_a = this.__store) === null || _a === void 0 ? void 0 : _a.use_international_currency_symbol) ? 'code' : 'symbol';
|
|
40
40
|
const transaction = this.__transaction;
|
|
@@ -121,7 +121,7 @@ export class ItemOptionCard extends Base {
|
|
|
121
121
|
>
|
|
122
122
|
</foxy-nucleon>
|
|
123
123
|
|
|
124
|
-
${super.
|
|
124
|
+
${super.renderBody({
|
|
125
125
|
title: data => {
|
|
126
126
|
if (!currencyCode || !currencyDisplay)
|
|
127
127
|
return html `​`;
|