@foxy.io/elements 1.21.0-beta.1 → 1.21.0-beta.3
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 +4 -0
- 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-api.js +1 -1
- package/dist/cdn/foxy-customer-card.js +1 -1
- package/dist/cdn/foxy-customer-form.js +1 -1
- package/dist/cdn/foxy-customer-portal-settings.js +1 -1
- package/dist/cdn/foxy-customer-portal.js +1 -1
- package/dist/cdn/foxy-customer.js +6 -6
- package/dist/cdn/foxy-customers-table.js +1 -1
- package/dist/cdn/foxy-discount-builder.js +1 -1
- package/dist/cdn/foxy-discount-card.js +1 -1
- package/dist/cdn/foxy-discount-detail-card.js +1 -1
- package/dist/cdn/foxy-donation.js +1 -1
- package/dist/cdn/foxy-email-template-card.js +1 -1
- package/dist/cdn/foxy-email-template-form.js +1 -1
- package/dist/cdn/foxy-error-entry-card.js +1 -1
- package/dist/cdn/foxy-form-dialog.js +1 -1
- package/dist/cdn/foxy-generate-codes-form.js +1 -1
- package/dist/cdn/foxy-gift-card-card.js +1 -1
- package/dist/cdn/foxy-gift-card-code-form.js +1 -1
- package/dist/cdn/foxy-gift-card-code-log-card.js +1 -1
- package/dist/cdn/foxy-gift-card-codes-form.js +1 -1
- package/dist/cdn/foxy-gift-card-form.js +1 -1
- package/dist/cdn/foxy-i18n-editor.js +2 -2
- package/dist/cdn/foxy-i18n.js +1 -1
- package/dist/cdn/foxy-integration-card.js +1 -1
- package/dist/cdn/foxy-integration-form.js +1 -1
- package/dist/cdn/foxy-item-card.js +1 -1
- package/dist/cdn/foxy-item-category-card.js +1 -1
- package/dist/cdn/foxy-item-category-form.js +1 -1
- package/dist/cdn/foxy-item-form.js +1 -1
- package/dist/cdn/foxy-item-option-card.js +1 -1
- package/dist/cdn/foxy-item-option-form.js +1 -1
- package/dist/cdn/foxy-items-form.js +1 -1
- package/dist/cdn/foxy-nucleon-element.js +1 -1
- package/dist/cdn/foxy-pagination.js +1 -1
- package/dist/cdn/foxy-payment-card.js +1 -1
- package/dist/cdn/foxy-payment-method-card.js +1 -1
- package/dist/cdn/foxy-payments-api-fraud-protection-card.js +1 -1
- package/dist/cdn/foxy-payments-api-fraud-protection-form.js +1 -1
- package/dist/cdn/foxy-payments-api-payment-method-card.js +1 -1
- package/dist/cdn/foxy-payments-api-payment-method-form.js +1 -1
- package/dist/cdn/foxy-payments-api-payment-preset-card.js +1 -1
- package/dist/cdn/foxy-payments-api-payment-preset-form.js +1 -1
- package/dist/cdn/foxy-payments-api.js +1 -1
- package/dist/cdn/foxy-query-builder.js +1 -1
- package/dist/cdn/foxy-report-form.js +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 +2 -2
- 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-11438c42.js +1 -0
- package/dist/cdn/{shared-868065de.js → shared-1433fc29.js} +1 -1
- package/dist/cdn/{shared-a37abe4c.js → shared-242b3ee9.js} +1 -1
- package/dist/cdn/{shared-988ec916.js → shared-274c49b0.js} +1 -1
- package/dist/cdn/{shared-ea67b3f3.js → shared-38b37888.js} +1 -1
- package/dist/cdn/{shared-8dd0af4d.js → shared-3d241b7f.js} +1 -1
- package/dist/cdn/{shared-d518bd55.js → shared-3dbe9aaa.js} +1 -1
- package/dist/cdn/{shared-de036570.js → shared-454f172e.js} +1 -1
- package/dist/cdn/shared-45926e43.js +1 -0
- package/dist/cdn/{shared-839dd3a8.js → shared-531bb690.js} +1 -1
- package/dist/cdn/{shared-d61b3e4f.js → shared-5c804971.js} +1 -1
- package/dist/cdn/{shared-4f9d2417.js → shared-61e74612.js} +2 -2
- package/dist/cdn/{shared-486d7bb5.js → shared-62d636b5.js} +1 -1
- package/dist/cdn/{shared-43bcce74.js → shared-67546e10.js} +1 -1
- package/dist/cdn/{shared-bb0e33c3.js → shared-6f5c3101.js} +1 -1
- package/dist/cdn/{shared-0821cfdc.js → shared-7097364f.js} +1 -1
- package/dist/cdn/{shared-2add595d.js → shared-747b6d74.js} +1 -1
- package/dist/cdn/{shared-8b6addec.js → shared-758859b5.js} +1 -1
- package/dist/cdn/{shared-af226a9a.js → shared-81f9dc9a.js} +1 -1
- package/dist/cdn/{shared-6581241a.js → shared-8c11a711.js} +1 -1
- package/dist/cdn/{shared-80fc2b6a.js → shared-8f8abcd6.js} +1 -1
- package/dist/cdn/shared-94fc438b.js +1 -0
- package/dist/cdn/{shared-a85afa33.js → shared-955db6b4.js} +1 -1
- package/dist/cdn/{shared-62a54a6c.js → shared-9f905d9f.js} +1 -1
- package/dist/cdn/{shared-39c10b22.js → shared-a01b5597.js} +1 -1
- package/dist/cdn/shared-a29b600a.js +1 -0
- package/dist/cdn/{shared-b40cf0dd.js → shared-a2d619b4.js} +1 -1
- package/dist/cdn/{shared-63139d9e.js → shared-a5364194.js} +1 -1
- package/dist/cdn/{shared-1c94a156.js → shared-be99323d.js} +1 -1
- package/dist/cdn/{shared-c774d080.js → shared-c6a01446.js} +1 -1
- package/dist/cdn/{shared-c95c17e6.js → shared-c8f5c306.js} +1 -1
- package/dist/cdn/{shared-a41234b4.js → shared-ca87cf22.js} +1 -1
- package/dist/cdn/{shared-4979dca4.js → shared-cbdf08d8.js} +1 -1
- package/dist/cdn/{shared-f80f402a.js → shared-d3bf404a.js} +1 -1
- package/dist/cdn/{shared-744cf66b.js → shared-d807ae5c.js} +1 -1
- package/dist/cdn/shared-dc91f7ae.js +1 -0
- package/dist/cdn/{shared-76b3d76a.js → shared-dcdb6ea1.js} +1 -1
- package/dist/cdn/{shared-9bdacf65.js → shared-e262920d.js} +1 -1
- package/dist/cdn/{shared-2f7dcefa.js → shared-e3ab56d1.js} +1 -1
- package/dist/cdn/{shared-cba08e1c.js → shared-ee5a7812.js} +1 -1
- package/dist/cdn/shared-efa137cd.js +1 -0
- package/dist/cdn/{shared-71f2ef1f.js → shared-efc1aeae.js} +1 -1
- package/dist/cdn/{shared-101d1234.js → shared-f621ccee.js} +1 -1
- package/dist/cdn/translations/cart-form/en.json +5 -5
- package/dist/cdn/translations/customer/en.json +2 -2
- package/dist/cdn/translations/customer-portal/de.json +1 -1
- package/dist/cdn/translations/customer-portal/en.json +1 -1
- package/dist/cdn/translations/customer-portal/es.json +1 -1
- package/dist/cdn/translations/customer-portal/fr.json +2 -2
- package/dist/cdn/translations/customer-portal/nl.json +1 -1
- package/dist/cdn/translations/customer-portal/pl.json +1 -1
- package/dist/cdn/translations/customer-portal/se.json +1 -1
- package/dist/cdn/translations/item-category-form/en.json +2 -2
- package/dist/cdn/translations/item-form/en.json +1 -1
- package/dist/cdn/translations/shipment-card/en.json +1 -1
- package/dist/cdn/translations/subscription-form/en.json +1 -1
- package/dist/cdn/translations/transaction/en.json +3 -3
- package/dist/cdn/translations/transaction-card/en.json +1 -1
- package/dist/cdn/translations/transactions-table/en.json +1 -1
- package/dist/elements/internal/InternalAsyncDetailsControl/InternalAsyncDetailsControl.js +13 -7
- package/dist/elements/internal/InternalAsyncDetailsControl/InternalAsyncDetailsControl.js.map +1 -1
- package/dist/elements/internal/InternalAsyncListControl/InternalAsyncListControl.d.ts +2 -2
- package/dist/elements/internal/InternalAsyncListControl/InternalAsyncListControl.js +33 -33
- package/dist/elements/internal/InternalAsyncListControl/InternalAsyncListControl.js.map +1 -1
- package/dist/elements/internal/InternalAsyncListControl/index.d.ts +0 -2
- package/dist/elements/internal/InternalAsyncListControl/index.js +0 -2
- package/dist/elements/internal/InternalAsyncListControl/index.js.map +1 -1
- package/dist/elements/internal/InternalCalendar/InternalCalendar.js +2 -2
- package/dist/elements/internal/InternalCalendar/InternalCalendar.js.map +1 -1
- package/dist/elements/public/AdminSubscriptionCard/AdminSubscriptionCard.js +2 -7
- package/dist/elements/public/AdminSubscriptionCard/AdminSubscriptionCard.js.map +1 -1
- package/dist/elements/public/AppliedCouponCodeForm/types.d.ts +1 -3
- package/dist/elements/public/AppliedCouponCodeForm/types.js.map +1 -1
- package/dist/elements/public/CartCard/CartCard.js +2 -7
- package/dist/elements/public/CartCard/CartCard.js.map +1 -1
- package/dist/elements/public/CartForm/CartForm.js +1 -3
- package/dist/elements/public/CartForm/CartForm.js.map +1 -1
- package/dist/elements/public/CollectionPage/CollectionPage.d.ts +2 -2
- package/dist/elements/public/CollectionPage/CollectionPage.js +6 -5
- package/dist/elements/public/CollectionPage/CollectionPage.js.map +1 -1
- package/dist/elements/public/CouponForm/CouponForm.js +5 -1
- package/dist/elements/public/CouponForm/CouponForm.js.map +1 -1
- package/dist/elements/public/Customer/Customer.js +2 -2
- package/dist/elements/public/Customer/Customer.js.map +1 -1
- package/dist/elements/public/CustomerPortal/InternalCustomerPortalSubscriptions.js +0 -1
- package/dist/elements/public/CustomerPortal/InternalCustomerPortalSubscriptions.js.map +1 -1
- package/dist/elements/public/ItemCard/ItemCard.js +2 -7
- package/dist/elements/public/ItemCard/ItemCard.js.map +1 -1
- package/dist/elements/public/ItemForm/ItemForm.js +6 -23
- package/dist/elements/public/ItemForm/ItemForm.js.map +1 -1
- package/dist/elements/public/ItemOptionCard/ItemOptionCard.d.ts +3 -0
- package/dist/elements/public/ItemOptionCard/ItemOptionCard.js +31 -27
- package/dist/elements/public/ItemOptionCard/ItemOptionCard.js.map +1 -1
- package/dist/elements/public/ItemOptionCard/index.d.ts +0 -2
- package/dist/elements/public/ItemOptionCard/index.js +0 -2
- package/dist/elements/public/ItemOptionCard/index.js.map +1 -1
- package/dist/elements/public/NucleonElement/NucleonElement.js +4 -4
- package/dist/elements/public/NucleonElement/NucleonElement.js.map +1 -1
- package/dist/elements/public/PaymentsApi/PaymentsApi.d.ts +21 -2
- package/dist/elements/public/PaymentsApi/PaymentsApi.js +22 -3
- package/dist/elements/public/PaymentsApi/PaymentsApi.js.map +1 -1
- package/dist/elements/public/QueryBuilder/components/RangeValue.js +6 -6
- package/dist/elements/public/QueryBuilder/components/RangeValue.js.map +1 -1
- package/dist/elements/public/ReportForm/utils.js +3 -2
- package/dist/elements/public/ReportForm/utils.js.map +1 -1
- package/dist/elements/public/StoreForm/StoreForm.js +1 -1
- package/dist/elements/public/StoreForm/StoreForm.js.map +1 -1
- package/dist/elements/public/StoreShippingMethodForm/StoreShippingMethodForm.d.ts +2 -1
- package/dist/elements/public/StoreShippingMethodForm/StoreShippingMethodForm.js.map +1 -1
- package/dist/elements/public/SubscriptionCard/SubscriptionCard.js +1 -0
- package/dist/elements/public/SubscriptionCard/SubscriptionCard.js.map +1 -1
- package/dist/elements/public/SubscriptionForm/SubscriptionForm.js +2 -7
- package/dist/elements/public/SubscriptionForm/SubscriptionForm.js.map +1 -1
- package/dist/elements/public/SubscriptionForm/types.d.ts +1 -1
- package/dist/elements/public/SubscriptionForm/types.js.map +1 -1
- package/dist/elements/public/SubscriptionSettingsForm/internal/InternalSubscriptionSettingsFormReattemptBypass/globalStyles.js.map +1 -1
- package/dist/elements/public/SubscriptionsTable/SubscriptionsTable.d.ts +2 -2
- package/dist/elements/public/SubscriptionsTable/SubscriptionsTable.js +3 -2
- package/dist/elements/public/SubscriptionsTable/SubscriptionsTable.js.map +1 -1
- package/dist/elements/public/SubscriptionsTable/types.d.ts +2 -2
- package/dist/elements/public/SubscriptionsTable/types.js.map +1 -1
- package/dist/elements/public/TaxCard/TaxCard.js +6 -2
- package/dist/elements/public/TaxCard/TaxCard.js.map +1 -1
- package/dist/elements/public/TransactionCard/TransactionCard.js +1 -0
- package/dist/elements/public/TransactionCard/TransactionCard.js.map +1 -1
- package/dist/elements/public/TransactionsTable/TransactionsTable.js +1 -0
- package/dist/elements/public/TransactionsTable/TransactionsTable.js.map +1 -1
- package/package.json +5 -4
- package/dist/cdn/shared-09eb558f.js +0 -1
- package/dist/cdn/shared-1000b848.js +0 -1
- package/dist/cdn/shared-181f51bd.js +0 -1
- package/dist/cdn/shared-21679ebd.js +0 -1
- package/dist/cdn/shared-a0c8faf2.js +0 -1
- package/dist/cdn/shared-bcc6e13b.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Customer.js","sourceRoot":"","sources":["../../../../src/elements/public/Customer/Customer.ts"],"names":[],"mappings":"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","sourcesContent":["import { Attributes, CustomerAddresses, Data, Tab, Templates } from './types';\nimport { CSSResultArray, TemplateResult, html } from 'lit-element';\nimport { ScopedElementsMap, ScopedElementsMixin } from '@open-wc/scoped-elements';\n\nimport { Data as Attribute } from '../AttributeCard/types';\nimport { ButtonElement } from '@vaadin/vaadin-button';\nimport { Column } from '../Table/types';\nimport { ConfigurableMixin } from '../../../mixins/configurable';\nimport { Data as CustomerAddress } from '../AddressCard/types';\nimport { FormDialog } from '../FormDialog/FormDialog';\nimport { Group } from '../../private/index';\nimport { ItemRenderer } from '../CollectionPage/types';\nimport { NucleonElement } from '../NucleonElement/NucleonElement';\nimport { PageRenderer } from '../CollectionPages/types';\nimport { Skeleton } from '../../private/Skeleton/Skeleton';\nimport { Data as Subscriptions } from '../SubscriptionsTable/types';\nimport { SubscriptionsTable } from '../SubscriptionsTable/SubscriptionsTable';\nimport { Tabs } from '../../private/Tabs/Tabs';\nimport { ThemeableMixin } from '../../../mixins/themeable';\nimport { TranslatableMixin } from '../../../mixins/translatable';\nimport { classMap } from '../../../utils/class-map';\nimport { ifDefined } from 'lit-html/directives/if-defined';\nimport { styles } from './styles';\n\nconst NS = 'customer';\nconst Base = ScopedElementsMixin(\n ConfigurableMixin(ThemeableMixin(TranslatableMixin(NucleonElement, NS)))\n);\n\n/**\n * All-in-one element for customer management.\n *\n * @slot header:before - **new in v1.4.0**\n * @slot header:after - **new in v1.4.0**\n * @slot header:actions:before - **new in v1.4.0**\n * @slot header:actions:after - **new in v1.4.0**\n * @slot header:actions:edit:before - **new in v1.4.0**\n * @slot header:actions:edit:after - **new in v1.4.0**\n *\n * @slot addresses:before - **new in v1.4.0**\n * @slot addresses:after - **new in v1.4.0**\n * @slot addresses:actions:before - **new in v1.4.0**\n * @slot addresses:actions:after - **new in v1.4.0**\n * @slot addresses:actions:create:before - **new in v1.4.0**\n * @slot addresses:actions:create:after - **new in v1.4.0**\n * @slot addresses:list:before - **new in v1.4.0**\n * @slot addresses:list:after - **new in v1.4.0**\n *\n * @slot payment-methods:before - **new in v1.4.0**\n * @slot payment-methods:after - **new in v1.4.0**\n * @slot payment-methods:list:before - **new in v1.4.0**\n * @slot payment-methods:list:after - **new in v1.4.0**\n *\n * @slot attributes:before - **new in v1.4.0**\n * @slot attributes:after - **new in v1.4.0**\n * @slot attributes:actions:before - **new in v1.4.0**\n * @slot attributes:actions:after - **new in v1.4.0**\n * @slot attributes:actions:create:before - **new in v1.4.0**\n * @slot attributes:actions:create:after - **new in v1.4.0**\n * @slot attributes:list:before - **new in v1.4.0**\n * @slot attributes:list:after - **new in v1.4.0**\n *\n * @slot transactions:before - **new in v1.4.0**\n * @slot transactions:after - **new in v1.4.0**\n *\n * @slot subscriptions:before - **new in v1.4.0**\n * @slot subscriptions:after - **new in v1.4.0**\n *\n * @element foxy-customer\n * @since 1.2.0\n */\nexport class Customer extends Base<Data> {\n static get scopedElements(): ScopedElementsMap {\n return {\n 'foxy-payment-method-card': customElements.get('foxy-payment-method-card'),\n 'foxy-transactions-table': customElements.get('foxy-transactions-table'),\n 'foxy-collection-pages': customElements.get('foxy-collection-pages'),\n 'foxy-internal-sandbox': customElements.get('foxy-internal-sandbox'),\n 'foxy-attribute-card': customElements.get('foxy-attribute-card'),\n 'foxy-address-card': customElements.get('foxy-address-card'),\n 'foxy-form-dialog': customElements.get('foxy-form-dialog'),\n 'vaadin-button': customElements.get('vaadin-button'),\n 'foxy-spinner': customElements.get('foxy-spinner'),\n 'foxy-table': customElements.get('foxy-table'),\n 'x-skeleton': Skeleton,\n 'iron-icon': customElements.get('iron-icon'),\n 'foxy-i18n': customElements.get('foxy-i18n'),\n 'x-group': Group,\n 'x-tabs': Tabs,\n };\n }\n\n static get styles(): CSSResultArray {\n return [super.styles, styles];\n }\n\n templates: Templates = {};\n\n // #region header\n\n private readonly __renderHeaderActionsEdit = () => {\n const { readonlySelector, disabledSelector, hiddenSelector } = this;\n\n const actionId = 'header:actions:edit';\n const formId = 'header:actions:edit:form';\n const dialogId = 'customer-dialog';\n\n const isLoaded = this.in({ idle: 'snapshot' });\n const isEditActionDisabled = !isLoaded || disabledSelector.matches(actionId, true);\n\n return html`\n ${this.renderTemplateOrSlot('header:actions:edit:before')}\n\n <foxy-form-dialog\n data-testid=\"header:actions:edit:form\"\n header=\"update\"\n parent=${this.parent}\n group=${this.group}\n href=${this.href}\n form=\"foxy-customer-form\"\n lang=${this.lang}\n ns=${this.ns}\n id=${dialogId}\n readonlycontrols=${readonlySelector.zoom(formId).toString()}\n disabledcontrols=${disabledSelector.zoom(formId).toString()}\n hiddencontrols=${hiddenSelector.zoom(formId).toString()}\n .templates=${this.getNestedTemplates('header:actions:edit:form')}\n >\n </foxy-form-dialog>\n\n <vaadin-button\n data-testid=\"header:actions:edit\"\n aria-label=${this.t('update').toString()}\n class=\"px-xs rounded-full\"\n theme=\"icon\"\n ?disabled=${isEditActionDisabled}\n @click=${(evt: Event) => {\n const dialog = this.renderRoot.querySelector(`#${dialogId}`) as FormDialog;\n dialog.show(evt.currentTarget as HTMLElement);\n }}\n >\n <iron-icon icon=\"editor:mode-edit\"></iron-icon>\n </vaadin-button>\n\n ${this.renderTemplateOrSlot('header:actions:edit:after')}\n `;\n };\n\n private readonly __renderHeaderActions = () => {\n const hiddenSelector = this.hiddenSelector.zoom('header:actions');\n\n return html`\n <div class=\"flex\" data-testid=\"header:actions\">\n ${this.renderTemplateOrSlot('header:actions:before')}\n ${hiddenSelector.matches('edit', true) ? '' : this.__renderHeaderActionsEdit()}\n ${this.renderTemplateOrSlot('header:actions:after')}\n </div>\n `;\n };\n\n private readonly __renderHeader = () => {\n const variant = ifDefined(this.in('busy') ? undefined : 'static');\n\n return html`\n ${this.renderTemplateOrSlot('header:before')}\n\n <header\n class=\"flex items-center justify-between space-x-m pb-s border-b border-contrast-10\"\n data-testid=\"header\"\n >\n <h1 class=\"text-xxl font-bold truncate min-w-0 flex-1\">\n ${this.in({ idle: 'snapshot' })\n ? html`${this.data.first_name} ${this.data.last_name}`\n : html`<x-skeleton class=\"w-full\" variant=${variant}> </x-skeleton>`}\n </h1>\n\n ${this.hiddenSelector.matches('header:actions', true) ? '' : this.__renderHeaderActions()}\n </header>\n\n ${this.renderTemplateOrSlot('header:after')}\n `;\n };\n\n // #endregion\n\n // #region addresses\n\n private readonly __renderAddressesActionsCreate = () => {\n const { data, lang, ns } = this;\n\n const disabledSelector = this.disabledSelector.zoom('addresses:actions');\n const readonlySelector = this.readonlySelector.zoom('addresses:actions');\n const hiddenSelector = this.hiddenSelector.zoom('addresses:actions');\n\n const isLoaded = this.in({ idle: 'snapshot' });\n const isDisabled = !isLoaded || disabledSelector.matches('create', true);\n\n return html`\n ${this.renderTemplateOrSlot('addresses:actions:create:before')}\n\n <vaadin-button\n data-testid=\"addresses:actions:create\"\n aria-label=${this.t('create').toString()}\n class=\"px-xs rounded-full\"\n theme=\"small icon\"\n ?disabled=${isDisabled}\n @click=${(evt: Event) => {\n if (data === null) return;\n const button = evt.target as HTMLButtonElement;\n const dialog = button.firstElementChild as FormDialog;\n dialog.show(button);\n }}\n >\n <foxy-form-dialog\n readonlycontrols=${readonlySelector.zoom('create:form').toString()}\n disabledcontrols=${disabledSelector.zoom('create:form').toString()}\n hiddencontrols=${hiddenSelector.zoom('create:form').toString()}\n data-testid=\"addresses:actions:create:form\"\n parent=${data?._links['fx:customer_addresses'].href ?? ''}\n header=\"create\"\n group=${this.group}\n form=\"foxy-address-form\"\n lang=${lang}\n ns=${ns}\n id=\"address-dialog\"\n .templates=${this.getNestedTemplates('addresses:actions:create:form')}\n >\n </foxy-form-dialog>\n\n <iron-icon slot=\"suffix\" icon=\"icons:add\"></iron-icon>\n </vaadin-button>\n\n ${this.renderTemplateOrSlot('addresses:actions:create:after')}\n `;\n };\n\n private readonly __renderAddressesActions = () => {\n const hiddenSelector = this.hiddenSelector.zoom('addresses:actions');\n\n return html`\n <div data-testid=\"addresses:actions\">\n ${this.renderTemplateOrSlot('addresses:actions:before')}\n ${hiddenSelector.matches('create', true) ? '' : this.__renderAddressesActionsCreate()}\n ${this.renderTemplateOrSlot('addresses:actions:after')}\n </div>\n `;\n };\n\n private readonly __renderAddressesListCard: ItemRenderer<CustomerAddress> = ctx => {\n const handleClick = (evt: Event) => {\n if (ctx.data === null) return;\n\n const button = evt.target as HTMLButtonElement;\n const root = button.getRootNode() as Element | DocumentFragment;\n const form = root.querySelector('#addresses-list-form') as FormDialog;\n\n form.href = ctx.data._links.self.href;\n form.show(button);\n };\n\n const computedClass = classMap({\n 'snap-start text-left p-m rounded-t-l rounded-b-l flex-shrink-0': true,\n 'border border-contrast-10': true,\n 'hover-border-contrast-30 focus-outline-none focus-border-primary': ctx.data !== null,\n });\n\n const isReadonly = this.readonlySelector.matches('addresses:list:card', true);\n const isDisabled = this.disabledSelector.matches('addresses:list:card', true);\n\n return html`\n <button\n data-testclass=\"addresses:list:card\"\n class=${computedClass}\n ?disabled=${!ctx.data || isReadonly || isDisabled}\n @click=${handleClick}\n >\n <foxy-address-card\n hiddencontrols=${ctx.hiddenControls.toString()}\n parent=${ctx.parent}\n class=\"w-tile\"\n group=${ctx.group}\n lang=${ctx.lang}\n href=${ctx.href}\n ns=\"${ctx.ns} ${customElements.get('foxy-address-card')?.defaultNS ?? ''}\"\n .templates=${ctx.templates}\n >\n </foxy-address-card>\n </button>\n `;\n };\n\n private readonly __renderAddressesListPage: PageRenderer<CustomerAddresses> = ctx => {\n return ctx.html`\n <foxy-collection-page\n hiddencontrols=${ctx.hiddenControls.toString()}\n class=\"space-x-m flex\"\n group=${ctx.group}\n lang=${ctx.lang}\n href=${ctx.href}\n ns=${ctx.ns}\n .item=${this.__renderAddressesListCard}\n .templates=${ctx.templates}\n >\n </foxy-collection-page>\n `;\n };\n\n private readonly __renderAddressesList = () => {\n const formId = 'addresses:list:form';\n const cardId = 'addresses:list:card';\n\n return html`\n ${this.renderTemplateOrSlot('addresses:list:before')}\n\n <foxy-form-dialog\n readonlycontrols=${this.readonlySelector.zoom(formId).toString()}\n disabledcontrols=${this.disabledSelector.zoom(formId).toString()}\n hiddencontrols=${this.hiddenSelector.zoom(formId).toString()}\n data-testid=\"addresses:list:form\"\n parent=${this.data?._links['fx:customer_addresses'].href ?? ''}\n header=\"update\"\n group=${this.group}\n form=\"foxy-address-form\"\n lang=${this.lang}\n ns=${this.ns}\n id=\"addresses-list-form\"\n .templates=${this.getNestedTemplates(formId)}\n >\n </foxy-form-dialog>\n\n <foxy-collection-pages\n hiddencontrols=${this.hiddenSelector.zoom(cardId).toString()}\n data-testid=\"addresses:list\"\n first=${this.data?._links['fx:customer_addresses'].href ?? ''}\n class=\"snap-x-mandatory flex items-center space-x-m overflow-auto\"\n group=${this.group}\n lang=${this.lang}\n ns=${this.ns}\n .page=${this.__renderAddressesListPage}\n .templates=${this.getNestedTemplates(cardId)}\n >\n </foxy-collection-pages>\n\n ${this.renderTemplateOrSlot('addresses:list:after')}\n `;\n };\n\n private readonly __renderAddresses = () => {\n const { lang, ns } = this;\n const hiddenSelector = this.hiddenSelector.zoom('addresses');\n\n return html`\n ${this.renderTemplateOrSlot('addresses:before')}\n\n <section class=\"pt-m\" data-testid=\"addresses\">\n <header class=\"space-x-m flex items-center mb-s\">\n <h2 class=\"text-l font-semibold\">\n <foxy-i18n ns=${ns} lang=${lang} key=\"address_plural\"></foxy-i18n>\n </h2>\n\n ${hiddenSelector.matches('actions', true) ? '' : this.__renderAddressesActions()}\n </header>\n\n ${hiddenSelector.matches('list', true) ? '' : this.__renderAddressesList()}\n </section>\n\n ${this.renderTemplateOrSlot('addresses:after')}\n `;\n };\n\n // #endregion\n\n // #region payment-methods\n\n private readonly __renderPaymentMethodsList = () => {\n const cardId = 'payment-methods:list:card';\n\n return html`\n <div data-testid=\"payment-methods:list\">\n ${this.renderTemplateOrSlot('payment-methods:list:before')}\n\n <foxy-payment-method-card\n readonlycontrols=${this.readonlySelector.zoom(cardId).toString()}\n disabledcontrols=${this.disabledSelector.zoom(cardId).toString()}\n hiddencontrols=${this.hiddenSelector.zoom(cardId).toString()}\n data-testid=${cardId}\n group=${this.group}\n class=\"w-payment-method-card border-radius-overflow-fix rounded-t-l rounded-b-l overflow-hidden\"\n href=${this.data?._links['fx:default_payment_method'].href ?? ''}\n lang=${this.lang}\n ns=\"${this.ns} ${customElements.get('foxy-payment-method-card')?.defaultNS ?? ''}\"\n .templates=${this.getNestedTemplates(cardId)}\n >\n </foxy-payment-method-card>\n\n ${this.renderTemplateOrSlot('payment-methods:list:after')}\n </div>\n `;\n };\n\n private readonly __renderPaymentMethods = () => {\n const hiddenSelector = this.hiddenSelector.zoom('payment-methods');\n\n return html`\n ${this.renderTemplateOrSlot('payment-methods:before')}\n\n <div class=\"pt-m\" data-testid=\"payment-methods\">\n <h2 class=\"text-l font-semibold mb-s\">\n <foxy-i18n\n data-testclass=\"i18n\"\n lang=${this.lang}\n key=\"payment_method_plural\"\n ns=${this.ns}\n >\n </foxy-i18n>\n </h2>\n\n ${hiddenSelector.matches('list', true) ? '' : this.__renderPaymentMethodsList()}\n </div>\n\n ${this.renderTemplateOrSlot('payment-methods:after')}\n `;\n };\n\n // #endregion\n\n // #region attributes\n\n private readonly __renderAttributesActionsCreate = () => {\n const { data, lang, ns } = this;\n\n const disabledSelector = this.disabledSelector.zoom('attributes:actions');\n const readonlySelector = this.readonlySelector.zoom('attributes:actions');\n const hiddenSelector = this.hiddenSelector.zoom('attributes:actions');\n\n const isLoaded = this.in({ idle: 'snapshot' });\n const isDisabled = !isLoaded || disabledSelector.matches('create', true);\n\n return html`\n ${this.renderTemplateOrSlot('attributes:actions:create:before')}\n\n <vaadin-button\n data-testid=\"attributes:actions:create\"\n aria-label=${this.t('create').toString()}\n class=\"px-xs rounded-full\"\n theme=\"small icon\"\n ?disabled=${isDisabled}\n @click=${(evt: Event) => {\n if (data === null) return;\n const button = evt.target as HTMLButtonElement;\n const dialog = button.firstElementChild as FormDialog;\n dialog.show(button);\n }}\n >\n <foxy-form-dialog\n readonlycontrols=${readonlySelector.zoom('create:form').toString()}\n disabledcontrols=${disabledSelector.zoom('create:form').toString()}\n hiddencontrols=${hiddenSelector.zoom('create:form').toString()}\n data-testid=\"attributes:actions:create:form\"\n parent=${data?._links['fx:attributes'].href ?? ''}\n header=\"create\"\n group=${this.group}\n form=\"foxy-attribute-form\"\n lang=${lang}\n ns=${ns}\n .templates=${this.getNestedTemplates('attributes:actions:create:form')}\n >\n </foxy-form-dialog>\n\n <iron-icon slot=\"suffix\" icon=\"icons:add\"></iron-icon>\n </vaadin-button>\n\n ${this.renderTemplateOrSlot('attributes:actions:create:after')}\n `;\n };\n\n private readonly __renderAttributesActions = () => {\n const hiddenSelector = this.hiddenSelector.zoom('attributes:actions');\n\n return html`\n <div data-testid=\"attributes:actions\">\n ${this.renderTemplateOrSlot('attributes:actions:before')}\n ${hiddenSelector.matches('create', true) ? '' : this.__renderAttributesActionsCreate()}\n ${this.renderTemplateOrSlot('attributes:actions:after')}\n </div>\n `;\n };\n\n private readonly __renderAttributesListCard: ItemRenderer<Attribute> = ctx => {\n const handleClick = (evt: Event) => {\n if (ctx.data === null) return;\n\n const button = evt.target as HTMLButtonElement;\n const root = button.getRootNode() as Element | DocumentFragment;\n const form = root.querySelector('#attributes-list-form') as FormDialog;\n\n form.href = ctx.data._links.self.href;\n form.show(button);\n };\n\n const computedClass = classMap({\n 'snap-start text-left p-m rounded-t-l rounded-b-l flex-shrink-0 border border-contrast-10':\n true,\n 'hover-border-contrast-30 focus-outline-none focus-border-primary': ctx.data !== null,\n });\n\n return ctx.html`\n <button \n data-testclass=\"attributes:list:card\"\n class=${computedClass}\n ?disabled=${ctx.data === null}\n @click=${handleClick}\n >\n <foxy-attribute-card\n hiddencontrols=${ctx.hiddenControls.toString()}\n parent=${ctx.parent}\n group=${ctx.group}\n class=\"w-tile\"\n lang=${ctx.lang}\n href=${ctx.href}\n ns=\"${ctx.ns} ${customElements.get('foxy-attribute-card')?.defaultNS ?? ''}\"\n .templates=${ctx.templates}\n >\n </foxy-attribute-card>\n </button>\n `;\n };\n\n private readonly __renderAttributesListPage: PageRenderer<Attributes> = ctx => {\n return html`\n <foxy-collection-page\n hiddencontrols=${ctx.hiddenControls.toString()}\n class=\"space-x-m flex\"\n group=${ctx.group}\n lang=${ctx.lang}\n href=${ctx.href}\n ns=${ctx.ns}\n .item=${this.__renderAttributesListCard}\n .templates=${ctx.templates}\n >\n </foxy-collection-page>\n `;\n };\n\n private readonly __renderAttributesList = () => {\n const formId = 'attributes:list:form';\n const cardId = 'attributes:list:card';\n\n return html`\n ${this.renderTemplateOrSlot('attributes:list:before')}\n\n <foxy-form-dialog\n readonlycontrols=${this.readonlySelector.zoom(formId).toString()}\n disabledcontrols=${this.disabledSelector.zoom(formId).toString()}\n hiddencontrols=${this.hiddenSelector.zoom(formId).toString()}\n data-testclass=\"i18n\"\n data-testid=\"attributes:list:form\"\n parent=${this.data?._links['fx:attributes'].href ?? ''}\n header=\"update\"\n group=${this.group}\n form=\"foxy-attribute-form\"\n lang=${this.lang}\n ns=${this.ns}\n id=\"attributes-list-form\"\n .templates=${this.getNestedTemplates(formId)}\n >\n </foxy-form-dialog>\n\n <foxy-collection-pages\n hiddencontrols=${this.hiddenControls.zoom(cardId).toString()}\n data-testid=\"attributes:list\"\n first=${this.data?._links['fx:attributes'].href ?? ''}\n class=\"snap-x-mandatory flex items-center space-x-m overflow-auto\"\n group=${this.group}\n lang=${this.lang}\n ns=${this.ns}\n .page=${this.__renderAttributesListPage}\n .templates=${this.getNestedTemplates(cardId)}\n >\n </foxy-collection-pages>\n\n ${this.renderTemplateOrSlot('attributes:list:after')}\n `;\n };\n\n private readonly __renderAttributes = () => {\n const { lang, ns } = this;\n const hiddenSelector = this.hiddenSelector.zoom('attributes');\n\n return html`\n ${this.renderTemplateOrSlot('attributes:before')}\n\n <section class=\"pt-m\" data-testid=\"attributes\">\n <header class=\"space-x-m flex items-center mb-s\">\n <h2 class=\"text-l font-semibold\">\n <foxy-i18n ns=${ns} lang=${lang} key=\"attribute_plural\"></foxy-i18n>\n </h2>\n\n ${hiddenSelector.matches('actions', true) ? '' : this.__renderAttributesActions()}\n </header>\n\n ${hiddenSelector.matches('list', true) ? '' : this.__renderAttributesList()}\n </section>\n\n ${this.renderTemplateOrSlot('attributes:after')}\n `;\n };\n\n // #endregion\n\n // #region transactions\n\n private readonly __renderTransactions = () => {\n let transactionsLink = '';\n\n if (this.in({ idle: 'snapshot' })) {\n const transactionsURL = new URL(this.data._links['fx:transactions'].href);\n transactionsURL.searchParams.set('zoom', 'items');\n transactionsLink = transactionsURL.toString();\n }\n\n return html`\n ${this.renderTemplateOrSlot('transactions:before')}\n\n <x-group frame>\n <foxy-collection-pages\n data-testid=\"transactions\"\n spinner=\"foxy-spinner\"\n first=${transactionsLink}\n class=\"divide-y divide-contrast-10 block mx-m\"\n group=${this.group}\n page=\"foxy-transactions-table\"\n lang=${this.lang}\n ns=${this.ns}\n .templates=${this.getNestedTemplates('transactions:table')}\n >\n </foxy-collection-pages>\n </x-group>\n\n ${this.renderTemplateOrSlot('transactions:after')}\n `;\n };\n\n // #endregion\n\n // #region subscriptions\n\n private readonly __subscriptionsTableColumns: Column<Subscriptions>[] = [\n SubscriptionsTable.priceColumn,\n SubscriptionsTable.summaryColumn,\n SubscriptionsTable.statusColumn,\n {\n cell: ({ html, lang, data }) => html`\n <vaadin-button\n data-testclass=\"edit\"\n theme=\"small tertiary-inline\"\n @click=${(evt: Event) => {\n const link = new URL(data._links.self.href);\n const form = this.renderRoot.querySelector('#subscriptions-form') as FormDialog;\n const button = evt.target as ButtonElement;\n\n link.searchParams.set('zoom', 'last_transaction,transaction_template:items');\n form.href = link.toString();\n form.show(button);\n }}\n >\n <foxy-i18n class=\"text-m\" lang=${lang} key=\"update\" ns=${this.ns}></foxy-i18n>\n </vaadin-button>\n `,\n },\n ];\n\n private readonly __renderSubscriptionsPage: PageRenderer<Subscriptions> = ({ html, ...ctx }) => {\n return html`\n <foxy-table\n data-testclass=\"subscriptions:pages:table\"\n group=${ctx.group}\n href=${ctx.href}\n lang=${ctx.lang}\n ns=\"${ctx.ns} subscriptions-table\"\n .columns=${this.__subscriptionsTableColumns}\n .templates=${ctx.templates}\n >\n </foxy-table>\n `;\n };\n\n private readonly __renderSubscriptions = () => {\n const formId = 'subscriptions:form';\n let subscriptionsLink = '';\n\n if (this.in({ idle: 'snapshot' })) {\n const subscriptionsURL = new URL(this.data._links['fx:subscriptions'].href);\n subscriptionsURL.searchParams.set('zoom', 'last_transaction,transaction_template:items');\n subscriptionsLink = subscriptionsURL.toString();\n }\n\n return html`\n <div data-testid=\"subscriptions\">\n ${this.renderTemplateOrSlot('subscriptions:before')}\n\n <foxy-form-dialog\n readonlycontrols=${this.readonlySelector.zoom(formId).toString()}\n disabledcontrols=${this.disabledSelector.zoom(formId).toString()}\n hiddencontrols=${this.hiddenSelector.zoom(formId).toString()}\n data-testid=${formId}\n header=\"update\"\n group=${this.group}\n form=\"foxy-subscription-form\"\n lang=${this.lang}\n ns=${this.ns}\n id=\"subscriptions-form\"\n .templates=${this.getNestedTemplates(formId)}\n >\n </foxy-form-dialog>\n\n <x-group frame>\n <foxy-collection-pages\n data-testid=\"subscriptions:pages\"\n spinner=\"foxy-spinner\"\n first=${subscriptionsLink}\n class=\"divide-y divide-contrast-10 block mx-m\"\n group=${this.group}\n lang=${this.lang}\n ns=${this.ns}\n .page=${this.__renderSubscriptionsPage}\n .templates=${this.getNestedTemplates('subscriptions:table')}\n >\n </foxy-collection-pages>\n </x-group>\n\n ${this.renderTemplateOrSlot('subscriptions:after')}\n </div>\n `;\n };\n\n // #endregion\n\n // #region tabs\n\n private readonly __renderTabs = (tabs: Tab[]) => {\n return html`\n <div class=\"pt-m\">\n <x-tabs size=${tabs.length} ?disabled=${!this.in({ idle: 'snapshot' })}>\n ${tabs.map(\n (tab, index) => html`\n <foxy-i18n\n data-testclass=\"i18n\"\n slot=\"tab-${index}\"\n lang=${this.lang}\n key=${tab.title}\n ns=${this.ns}\n >\n </foxy-i18n>\n\n <div slot=\"panel-${index}\">${tab.content}</div>\n `\n )}\n </x-tabs>\n </div>\n `;\n };\n\n // #endregion\n\n render(): TemplateResult {\n const { hiddenSelector, lang, ns } = this;\n const isLoaded = this.in({ idle: 'snapshot' });\n const isBusy = this.in('busy');\n const tabs: Tab[] = [];\n\n if (!hiddenSelector.matches('transactions', true)) {\n tabs.push({ title: 'transaction_plural', content: this.__renderTransactions() });\n }\n\n if (!hiddenSelector.matches('subscriptions', true)) {\n tabs.push({ title: 'subscription_plural', content: this.__renderSubscriptions() });\n }\n\n return html`\n <div class=\"relative\" data-testid=\"wrapper\" aria-busy=${isBusy} aria-live=\"polite\">\n <div\n class=${classMap({\n 'font-lumo text-body text-m leading-m space-y-s': true,\n 'opacity-50': !isLoaded,\n })}\n >\n ${hiddenSelector.matches('header', true) ? '' : this.__renderHeader()}\n ${hiddenSelector.matches('default', true) ? '' : this.renderTemplateOrSlot()}\n ${hiddenSelector.matches('addresses', true) ? '' : this.__renderAddresses()}\n ${hiddenSelector.matches('payment-methods', true) ? '' : this.__renderPaymentMethods()}\n ${hiddenSelector.matches('attributes', true) ? '' : this.__renderAttributes()}\n ${tabs.length === 0 ? '' : this.__renderTabs(tabs)}\n </div>\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': isLoaded,\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' : isBusy ? 'busy' : 'empty'}\n lang=${lang}\n ns=\"${ns} ${customElements.get('foxy-spinner')?.defaultNS ?? ''}\"\n >\n </foxy-spinner>\n </div>\n </div>\n `;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"Customer.js","sourceRoot":"","sources":["../../../../src/elements/public/Customer/Customer.ts"],"names":[],"mappings":"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","sourcesContent":["import { Attributes, CustomerAddresses, Data, Tab, Templates } from './types';\nimport { CSSResultArray, TemplateResult, html } from 'lit-element';\nimport { ScopedElementsMap, ScopedElementsMixin } from '@open-wc/scoped-elements';\n\nimport { Data as Attribute } from '../AttributeCard/types';\nimport { ButtonElement } from '@vaadin/vaadin-button';\nimport { Column } from '../Table/types';\nimport { ConfigurableMixin } from '../../../mixins/configurable';\nimport { Data as CustomerAddress } from '../AddressCard/types';\nimport { FormDialog } from '../FormDialog/FormDialog';\nimport { Group } from '../../private/index';\nimport { ItemRenderer } from '../CollectionPage/types';\nimport { NucleonElement } from '../NucleonElement/NucleonElement';\nimport { PageRenderer } from '../CollectionPages/types';\nimport { Skeleton } from '../../private/Skeleton/Skeleton';\nimport { Data as Subscriptions } from '../SubscriptionsTable/types';\nimport { SubscriptionsTable } from '../SubscriptionsTable/SubscriptionsTable';\nimport { Tabs } from '../../private/Tabs/Tabs';\nimport { ThemeableMixin } from '../../../mixins/themeable';\nimport { TranslatableMixin } from '../../../mixins/translatable';\nimport { classMap } from '../../../utils/class-map';\nimport { ifDefined } from 'lit-html/directives/if-defined';\nimport { styles } from './styles';\n\nconst NS = 'customer';\nconst Base = ScopedElementsMixin(\n ConfigurableMixin(ThemeableMixin(TranslatableMixin(NucleonElement, NS)))\n);\n\n/**\n * All-in-one element for customer management.\n *\n * @slot header:before - **new in v1.4.0**\n * @slot header:after - **new in v1.4.0**\n * @slot header:actions:before - **new in v1.4.0**\n * @slot header:actions:after - **new in v1.4.0**\n * @slot header:actions:edit:before - **new in v1.4.0**\n * @slot header:actions:edit:after - **new in v1.4.0**\n *\n * @slot addresses:before - **new in v1.4.0**\n * @slot addresses:after - **new in v1.4.0**\n * @slot addresses:actions:before - **new in v1.4.0**\n * @slot addresses:actions:after - **new in v1.4.0**\n * @slot addresses:actions:create:before - **new in v1.4.0**\n * @slot addresses:actions:create:after - **new in v1.4.0**\n * @slot addresses:list:before - **new in v1.4.0**\n * @slot addresses:list:after - **new in v1.4.0**\n *\n * @slot payment-methods:before - **new in v1.4.0**\n * @slot payment-methods:after - **new in v1.4.0**\n * @slot payment-methods:list:before - **new in v1.4.0**\n * @slot payment-methods:list:after - **new in v1.4.0**\n *\n * @slot attributes:before - **new in v1.4.0**\n * @slot attributes:after - **new in v1.4.0**\n * @slot attributes:actions:before - **new in v1.4.0**\n * @slot attributes:actions:after - **new in v1.4.0**\n * @slot attributes:actions:create:before - **new in v1.4.0**\n * @slot attributes:actions:create:after - **new in v1.4.0**\n * @slot attributes:list:before - **new in v1.4.0**\n * @slot attributes:list:after - **new in v1.4.0**\n *\n * @slot transactions:before - **new in v1.4.0**\n * @slot transactions:after - **new in v1.4.0**\n *\n * @slot subscriptions:before - **new in v1.4.0**\n * @slot subscriptions:after - **new in v1.4.0**\n *\n * @element foxy-customer\n * @since 1.2.0\n */\nexport class Customer extends Base<Data> {\n static get scopedElements(): ScopedElementsMap {\n return {\n 'foxy-payment-method-card': customElements.get('foxy-payment-method-card'),\n 'foxy-transactions-table': customElements.get('foxy-transactions-table'),\n 'foxy-collection-pages': customElements.get('foxy-collection-pages'),\n 'foxy-internal-sandbox': customElements.get('foxy-internal-sandbox'),\n 'foxy-attribute-card': customElements.get('foxy-attribute-card'),\n 'foxy-address-card': customElements.get('foxy-address-card'),\n 'foxy-form-dialog': customElements.get('foxy-form-dialog'),\n 'vaadin-button': customElements.get('vaadin-button'),\n 'foxy-spinner': customElements.get('foxy-spinner'),\n 'foxy-table': customElements.get('foxy-table'),\n 'x-skeleton': Skeleton,\n 'iron-icon': customElements.get('iron-icon'),\n 'foxy-i18n': customElements.get('foxy-i18n'),\n 'x-group': Group,\n 'x-tabs': Tabs,\n };\n }\n\n static get styles(): CSSResultArray {\n return [super.styles, styles];\n }\n\n templates: Templates = {};\n\n // #region header\n\n private readonly __renderHeaderActionsEdit = () => {\n const { readonlySelector, disabledSelector, hiddenSelector } = this;\n\n const actionId = 'header:actions:edit';\n const formId = 'header:actions:edit:form';\n const dialogId = 'customer-dialog';\n\n const isLoaded = this.in({ idle: 'snapshot' });\n const isEditActionDisabled = !isLoaded || disabledSelector.matches(actionId, true);\n\n return html`\n ${this.renderTemplateOrSlot('header:actions:edit:before')}\n\n <foxy-form-dialog\n data-testid=\"header:actions:edit:form\"\n header=\"update\"\n parent=${this.parent}\n group=${this.group}\n href=${this.href}\n form=\"foxy-customer-form\"\n lang=${this.lang}\n ns=${this.ns}\n id=${dialogId}\n readonlycontrols=${readonlySelector.zoom(formId).toString()}\n disabledcontrols=${disabledSelector.zoom(formId).toString()}\n hiddencontrols=${hiddenSelector.zoom(formId).toString()}\n .templates=${this.getNestedTemplates('header:actions:edit:form')}\n >\n </foxy-form-dialog>\n\n <vaadin-button\n data-testid=\"header:actions:edit\"\n aria-label=${this.t('update').toString()}\n class=\"px-xs rounded-full\"\n theme=\"icon\"\n ?disabled=${isEditActionDisabled}\n @click=${(evt: Event) => {\n const dialog = this.renderRoot.querySelector(`#${dialogId}`) as FormDialog;\n dialog.show(evt.currentTarget as HTMLElement);\n }}\n >\n <iron-icon icon=\"editor:mode-edit\"></iron-icon>\n </vaadin-button>\n\n ${this.renderTemplateOrSlot('header:actions:edit:after')}\n `;\n };\n\n private readonly __renderHeaderActions = () => {\n const hiddenSelector = this.hiddenSelector.zoom('header:actions');\n\n return html`\n <div class=\"flex\" data-testid=\"header:actions\">\n ${this.renderTemplateOrSlot('header:actions:before')}\n ${hiddenSelector.matches('edit', true) ? '' : this.__renderHeaderActionsEdit()}\n ${this.renderTemplateOrSlot('header:actions:after')}\n </div>\n `;\n };\n\n private readonly __renderHeader = () => {\n const variant = ifDefined(this.in('busy') ? undefined : 'static');\n\n return html`\n ${this.renderTemplateOrSlot('header:before')}\n\n <header\n class=\"flex items-center justify-between space-x-m pb-s border-b border-contrast-10\"\n data-testid=\"header\"\n >\n <h1 class=\"text-xxl font-bold truncate min-w-0 flex-1\">\n ${this.in({ idle: 'snapshot' })\n ? html`${this.data.first_name} ${this.data.last_name}`\n : html`<x-skeleton class=\"w-full\" variant=${variant}> </x-skeleton>`}\n </h1>\n\n ${this.hiddenSelector.matches('header:actions', true) ? '' : this.__renderHeaderActions()}\n </header>\n\n ${this.renderTemplateOrSlot('header:after')}\n `;\n };\n\n // #endregion\n\n // #region addresses\n\n private readonly __renderAddressesActionsCreate = () => {\n const { data, lang, ns } = this;\n\n const disabledSelector = this.disabledSelector.zoom('addresses:actions');\n const readonlySelector = this.readonlySelector.zoom('addresses:actions');\n const hiddenSelector = this.hiddenSelector.zoom('addresses:actions');\n\n const isLoaded = this.in({ idle: 'snapshot' });\n const isDisabled = !isLoaded || disabledSelector.matches('create', true);\n\n return html`\n ${this.renderTemplateOrSlot('addresses:actions:create:before')}\n\n <vaadin-button\n data-testid=\"addresses:actions:create\"\n aria-label=${this.t('create').toString()}\n class=\"px-xs rounded-full\"\n theme=\"small icon\"\n ?disabled=${isDisabled}\n @click=${(evt: Event) => {\n if (data === null) return;\n const button = evt.target as HTMLButtonElement;\n const dialog = button.firstElementChild as FormDialog;\n dialog.show(button);\n }}\n >\n <foxy-form-dialog\n readonlycontrols=${readonlySelector.zoom('create:form').toString()}\n disabledcontrols=${disabledSelector.zoom('create:form').toString()}\n hiddencontrols=${hiddenSelector.zoom('create:form').toString()}\n data-testid=\"addresses:actions:create:form\"\n parent=${data?._links['fx:customer_addresses'].href ?? ''}\n header=\"create\"\n group=${this.group}\n form=\"foxy-address-form\"\n lang=${lang}\n ns=${ns}\n id=\"address-dialog\"\n .templates=${this.getNestedTemplates('addresses:actions:create:form')}\n >\n </foxy-form-dialog>\n\n <iron-icon slot=\"suffix\" icon=\"icons:add\"></iron-icon>\n </vaadin-button>\n\n ${this.renderTemplateOrSlot('addresses:actions:create:after')}\n `;\n };\n\n private readonly __renderAddressesActions = () => {\n const hiddenSelector = this.hiddenSelector.zoom('addresses:actions');\n\n return html`\n <div data-testid=\"addresses:actions\">\n ${this.renderTemplateOrSlot('addresses:actions:before')}\n ${hiddenSelector.matches('create', true) ? '' : this.__renderAddressesActionsCreate()}\n ${this.renderTemplateOrSlot('addresses:actions:after')}\n </div>\n `;\n };\n\n private readonly __renderAddressesListCard: ItemRenderer<CustomerAddress> = ctx => {\n const handleClick = (evt: Event) => {\n if (ctx.data === null) return;\n\n const button = evt.target as HTMLButtonElement;\n const root = button.getRootNode() as Element | DocumentFragment;\n const form = root.querySelector('#addresses-list-form') as FormDialog;\n\n form.href = ctx.data._links.self.href;\n form.show(button);\n };\n\n const computedClass = classMap({\n 'snap-start text-left p-m rounded-t-l rounded-b-l flex-shrink-0': true,\n 'border border-contrast-10': true,\n 'hover-border-contrast-30 focus-outline-none focus-border-primary': ctx.data !== null,\n });\n\n const isReadonly = this.readonlySelector.matches('addresses:list:card', true);\n const isDisabled = this.disabledSelector.matches('addresses:list:card', true);\n\n return html`\n <button\n data-testclass=\"addresses:list:card\"\n class=${computedClass}\n ?disabled=${!ctx.data || isReadonly || isDisabled}\n @click=${handleClick}\n >\n <foxy-address-card\n hiddencontrols=${ctx.hiddenControls.toString()}\n parent=${ctx.parent}\n class=\"w-tile\"\n group=${ctx.group}\n lang=${ctx.lang}\n href=${ctx.href}\n ns=\"${ctx.ns} ${customElements.get('foxy-address-card')?.defaultNS ?? ''}\"\n .templates=${ctx.templates}\n >\n </foxy-address-card>\n </button>\n `;\n };\n\n private readonly __renderAddressesListPage: PageRenderer<CustomerAddresses> = ctx => {\n return ctx.html`\n <foxy-collection-page\n hiddencontrols=${ctx.hiddenControls.toString()}\n class=\"space-x-m flex\"\n group=${ctx.group}\n lang=${ctx.lang}\n href=${ctx.href}\n ns=${ctx.ns}\n .item=${this.__renderAddressesListCard}\n .templates=${ctx.templates}\n >\n </foxy-collection-page>\n `;\n };\n\n private readonly __renderAddressesList = () => {\n const formId = 'addresses:list:form';\n const cardId = 'addresses:list:card';\n\n return html`\n ${this.renderTemplateOrSlot('addresses:list:before')}\n\n <foxy-form-dialog\n readonlycontrols=${this.readonlySelector.zoom(formId).toString()}\n disabledcontrols=${this.disabledSelector.zoom(formId).toString()}\n hiddencontrols=${this.hiddenSelector.zoom(formId).toString()}\n data-testid=\"addresses:list:form\"\n parent=${this.data?._links['fx:customer_addresses'].href ?? ''}\n header=\"update\"\n group=${this.group}\n form=\"foxy-address-form\"\n lang=${this.lang}\n ns=${this.ns}\n id=\"addresses-list-form\"\n .templates=${this.getNestedTemplates(formId)}\n >\n </foxy-form-dialog>\n\n <foxy-collection-pages\n hiddencontrols=${this.hiddenSelector.zoom(cardId).toString()}\n data-testid=\"addresses:list\"\n first=${this.data?._links['fx:customer_addresses'].href ?? ''}\n class=\"snap-x-mandatory flex items-center space-x-m overflow-auto\"\n group=${this.group}\n lang=${this.lang}\n ns=${this.ns}\n .page=${this.__renderAddressesListPage}\n .templates=${this.getNestedTemplates(cardId)}\n >\n </foxy-collection-pages>\n\n ${this.renderTemplateOrSlot('addresses:list:after')}\n `;\n };\n\n private readonly __renderAddresses = () => {\n const { lang, ns } = this;\n const hiddenSelector = this.hiddenSelector.zoom('addresses');\n\n return html`\n ${this.renderTemplateOrSlot('addresses:before')}\n\n <section class=\"pt-m\" data-testid=\"addresses\">\n <header class=\"space-x-m flex items-center mb-s\">\n <h2 class=\"text-l font-semibold\">\n <foxy-i18n ns=${ns} lang=${lang} key=\"address_plural\"></foxy-i18n>\n </h2>\n\n ${hiddenSelector.matches('actions', true) ? '' : this.__renderAddressesActions()}\n </header>\n\n ${hiddenSelector.matches('list', true) ? '' : this.__renderAddressesList()}\n </section>\n\n ${this.renderTemplateOrSlot('addresses:after')}\n `;\n };\n\n // #endregion\n\n // #region payment-methods\n\n private readonly __renderPaymentMethodsList = () => {\n const cardId = 'payment-methods:list:card';\n\n return html`\n <div data-testid=\"payment-methods:list\">\n ${this.renderTemplateOrSlot('payment-methods:list:before')}\n\n <foxy-payment-method-card\n readonlycontrols=${this.readonlySelector.zoom(cardId).toString()}\n disabledcontrols=${this.disabledSelector.zoom(cardId).toString()}\n hiddencontrols=${this.hiddenSelector.zoom(cardId).toString()}\n data-testid=${cardId}\n group=${this.group}\n class=\"w-payment-method-card border-radius-overflow-fix rounded-t-l rounded-b-l overflow-hidden\"\n href=${this.data?._links['fx:default_payment_method'].href ?? ''}\n lang=${this.lang}\n ns=\"${this.ns} ${customElements.get('foxy-payment-method-card')?.defaultNS ?? ''}\"\n .templates=${this.getNestedTemplates(cardId)}\n >\n </foxy-payment-method-card>\n\n ${this.renderTemplateOrSlot('payment-methods:list:after')}\n </div>\n `;\n };\n\n private readonly __renderPaymentMethods = () => {\n const hiddenSelector = this.hiddenSelector.zoom('payment-methods');\n\n return html`\n ${this.renderTemplateOrSlot('payment-methods:before')}\n\n <div class=\"pt-m\" data-testid=\"payment-methods\">\n <h2 class=\"text-l font-semibold mb-s\">\n <foxy-i18n\n data-testclass=\"i18n\"\n lang=${this.lang}\n key=\"payment_method_plural\"\n ns=${this.ns}\n >\n </foxy-i18n>\n </h2>\n\n ${hiddenSelector.matches('list', true) ? '' : this.__renderPaymentMethodsList()}\n </div>\n\n ${this.renderTemplateOrSlot('payment-methods:after')}\n `;\n };\n\n // #endregion\n\n // #region attributes\n\n private readonly __renderAttributesActionsCreate = () => {\n const { data, lang, ns } = this;\n\n const disabledSelector = this.disabledSelector.zoom('attributes:actions');\n const readonlySelector = this.readonlySelector.zoom('attributes:actions');\n const hiddenSelector = this.hiddenSelector.zoom('attributes:actions');\n\n const isLoaded = this.in({ idle: 'snapshot' });\n const isDisabled = !isLoaded || disabledSelector.matches('create', true);\n\n return html`\n ${this.renderTemplateOrSlot('attributes:actions:create:before')}\n\n <vaadin-button\n data-testid=\"attributes:actions:create\"\n aria-label=${this.t('create').toString()}\n class=\"px-xs rounded-full\"\n theme=\"small icon\"\n ?disabled=${isDisabled}\n @click=${(evt: Event) => {\n if (data === null) return;\n const button = evt.target as HTMLButtonElement;\n const dialog = button.firstElementChild as FormDialog;\n dialog.show(button);\n }}\n >\n <foxy-form-dialog\n readonlycontrols=${readonlySelector.zoom('create:form').toString()}\n disabledcontrols=${disabledSelector.zoom('create:form').toString()}\n hiddencontrols=${hiddenSelector.zoom('create:form').toString()}\n data-testid=\"attributes:actions:create:form\"\n parent=${data?._links['fx:attributes'].href ?? ''}\n header=\"create\"\n group=${this.group}\n form=\"foxy-attribute-form\"\n lang=${lang}\n ns=${ns}\n .templates=${this.getNestedTemplates('attributes:actions:create:form')}\n >\n </foxy-form-dialog>\n\n <iron-icon slot=\"suffix\" icon=\"icons:add\"></iron-icon>\n </vaadin-button>\n\n ${this.renderTemplateOrSlot('attributes:actions:create:after')}\n `;\n };\n\n private readonly __renderAttributesActions = () => {\n const hiddenSelector = this.hiddenSelector.zoom('attributes:actions');\n\n return html`\n <div data-testid=\"attributes:actions\">\n ${this.renderTemplateOrSlot('attributes:actions:before')}\n ${hiddenSelector.matches('create', true) ? '' : this.__renderAttributesActionsCreate()}\n ${this.renderTemplateOrSlot('attributes:actions:after')}\n </div>\n `;\n };\n\n private readonly __renderAttributesListCard: ItemRenderer<Attribute> = ctx => {\n const handleClick = (evt: Event) => {\n if (ctx.data === null) return;\n\n const button = evt.target as HTMLButtonElement;\n const root = button.getRootNode() as Element | DocumentFragment;\n const form = root.querySelector('#attributes-list-form') as FormDialog;\n\n form.href = ctx.data._links.self.href;\n form.show(button);\n };\n\n const computedClass = classMap({\n 'snap-start text-left p-m rounded-t-l rounded-b-l flex-shrink-0 border border-contrast-10':\n true,\n 'hover-border-contrast-30 focus-outline-none focus-border-primary': ctx.data !== null,\n });\n\n return ctx.html`\n <button \n data-testclass=\"attributes:list:card\"\n class=${computedClass}\n ?disabled=${ctx.data === null}\n @click=${handleClick}\n >\n <foxy-attribute-card\n hiddencontrols=${ctx.hiddenControls.toString()}\n parent=${ctx.parent}\n group=${ctx.group}\n class=\"w-tile\"\n lang=${ctx.lang}\n href=${ctx.href}\n ns=\"${ctx.ns} ${customElements.get('foxy-attribute-card')?.defaultNS ?? ''}\"\n .templates=${ctx.templates}\n >\n </foxy-attribute-card>\n </button>\n `;\n };\n\n private readonly __renderAttributesListPage: PageRenderer<Attributes> = ctx => {\n return html`\n <foxy-collection-page\n hiddencontrols=${ctx.hiddenControls.toString()}\n class=\"space-x-m flex\"\n group=${ctx.group}\n lang=${ctx.lang}\n href=${ctx.href}\n ns=${ctx.ns}\n .item=${this.__renderAttributesListCard}\n .templates=${ctx.templates}\n >\n </foxy-collection-page>\n `;\n };\n\n private readonly __renderAttributesList = () => {\n const formId = 'attributes:list:form';\n const cardId = 'attributes:list:card';\n\n return html`\n ${this.renderTemplateOrSlot('attributes:list:before')}\n\n <foxy-form-dialog\n readonlycontrols=${this.readonlySelector.zoom(formId).toString()}\n disabledcontrols=${this.disabledSelector.zoom(formId).toString()}\n hiddencontrols=${this.hiddenSelector.zoom(formId).toString()}\n data-testclass=\"i18n\"\n data-testid=\"attributes:list:form\"\n parent=${this.data?._links['fx:attributes'].href ?? ''}\n header=\"update\"\n group=${this.group}\n form=\"foxy-attribute-form\"\n lang=${this.lang}\n ns=${this.ns}\n id=\"attributes-list-form\"\n .templates=${this.getNestedTemplates(formId)}\n >\n </foxy-form-dialog>\n\n <foxy-collection-pages\n hiddencontrols=${this.hiddenControls.zoom(cardId).toString()}\n data-testid=\"attributes:list\"\n first=${this.data?._links['fx:attributes'].href ?? ''}\n class=\"snap-x-mandatory flex items-center space-x-m overflow-auto\"\n group=${this.group}\n lang=${this.lang}\n ns=${this.ns}\n .page=${this.__renderAttributesListPage}\n .templates=${this.getNestedTemplates(cardId)}\n >\n </foxy-collection-pages>\n\n ${this.renderTemplateOrSlot('attributes:list:after')}\n `;\n };\n\n private readonly __renderAttributes = () => {\n const { lang, ns } = this;\n const hiddenSelector = this.hiddenSelector.zoom('attributes');\n\n return html`\n ${this.renderTemplateOrSlot('attributes:before')}\n\n <section class=\"pt-m\" data-testid=\"attributes\">\n <header class=\"space-x-m flex items-center mb-s\">\n <h2 class=\"text-l font-semibold\">\n <foxy-i18n ns=${ns} lang=${lang} key=\"attribute_plural\"></foxy-i18n>\n </h2>\n\n ${hiddenSelector.matches('actions', true) ? '' : this.__renderAttributesActions()}\n </header>\n\n ${hiddenSelector.matches('list', true) ? '' : this.__renderAttributesList()}\n </section>\n\n ${this.renderTemplateOrSlot('attributes:after')}\n `;\n };\n\n // #endregion\n\n // #region transactions\n\n private readonly __renderTransactions = () => {\n let transactionsLink = '';\n\n if (this.in({ idle: 'snapshot' })) {\n const transactionsURL = new URL(this.data._links['fx:transactions'].href);\n transactionsURL.searchParams.set('zoom', 'items');\n transactionsLink = transactionsURL.toString();\n }\n\n return html`\n ${this.renderTemplateOrSlot('transactions:before')}\n\n <x-group frame>\n <foxy-collection-pages\n data-testid=\"transactions\"\n spinner=\"foxy-spinner\"\n first=${transactionsLink}\n class=\"divide-y divide-contrast-10 block mx-m\"\n group=${this.group}\n page=\"foxy-transactions-table\"\n lang=${this.lang}\n ns=${this.ns}\n .templates=${this.getNestedTemplates('transactions:table')}\n >\n </foxy-collection-pages>\n </x-group>\n\n ${this.renderTemplateOrSlot('transactions:after')}\n `;\n };\n\n // #endregion\n\n // #region subscriptions\n\n private readonly __subscriptionsTableColumns: Column<Subscriptions>[] = [\n SubscriptionsTable.priceColumn,\n SubscriptionsTable.summaryColumn,\n SubscriptionsTable.statusColumn,\n {\n cell: ({ html, lang, data }) => html`\n <vaadin-button\n data-testclass=\"edit\"\n theme=\"small tertiary-inline\"\n @click=${(evt: Event) => {\n const link = new URL(data._links.self.href);\n const form = this.renderRoot.querySelector('#subscriptions-form') as FormDialog;\n const button = evt.target as ButtonElement;\n\n link.searchParams.set('zoom', 'transaction_template:items');\n form.href = link.toString();\n form.show(button);\n }}\n >\n <foxy-i18n class=\"text-m\" lang=${lang} key=\"update\" ns=${this.ns}></foxy-i18n>\n </vaadin-button>\n `,\n },\n ];\n\n private readonly __renderSubscriptionsPage: PageRenderer<Subscriptions> = ({ html, ...ctx }) => {\n return html`\n <foxy-table\n data-testclass=\"subscriptions:pages:table\"\n group=${ctx.group}\n href=${ctx.href}\n lang=${ctx.lang}\n ns=\"${ctx.ns} subscriptions-table\"\n .columns=${this.__subscriptionsTableColumns}\n .templates=${ctx.templates}\n >\n </foxy-table>\n `;\n };\n\n private readonly __renderSubscriptions = () => {\n const formId = 'subscriptions:form';\n let subscriptionsLink = '';\n\n if (this.in({ idle: 'snapshot' })) {\n const subscriptionsURL = new URL(this.data._links['fx:subscriptions'].href);\n subscriptionsURL.searchParams.set('zoom', 'transaction_template:items');\n subscriptionsLink = subscriptionsURL.toString();\n }\n\n return html`\n <div data-testid=\"subscriptions\">\n ${this.renderTemplateOrSlot('subscriptions:before')}\n\n <foxy-form-dialog\n readonlycontrols=${this.readonlySelector.zoom(formId).toString()}\n disabledcontrols=${this.disabledSelector.zoom(formId).toString()}\n hiddencontrols=${this.hiddenSelector.zoom(formId).toString()}\n data-testid=${formId}\n header=\"update\"\n group=${this.group}\n form=\"foxy-subscription-form\"\n lang=${this.lang}\n ns=${this.ns}\n id=\"subscriptions-form\"\n .templates=${this.getNestedTemplates(formId)}\n >\n </foxy-form-dialog>\n\n <x-group frame>\n <foxy-collection-pages\n data-testid=\"subscriptions:pages\"\n spinner=\"foxy-spinner\"\n first=${subscriptionsLink}\n class=\"divide-y divide-contrast-10 block mx-m\"\n group=${this.group}\n lang=${this.lang}\n ns=${this.ns}\n .page=${this.__renderSubscriptionsPage}\n .templates=${this.getNestedTemplates('subscriptions:table')}\n >\n </foxy-collection-pages>\n </x-group>\n\n ${this.renderTemplateOrSlot('subscriptions:after')}\n </div>\n `;\n };\n\n // #endregion\n\n // #region tabs\n\n private readonly __renderTabs = (tabs: Tab[]) => {\n return html`\n <div class=\"pt-m\">\n <x-tabs size=${tabs.length} ?disabled=${!this.in({ idle: 'snapshot' })}>\n ${tabs.map(\n (tab, index) => html`\n <foxy-i18n\n data-testclass=\"i18n\"\n slot=\"tab-${index}\"\n lang=${this.lang}\n key=${tab.title}\n ns=${this.ns}\n >\n </foxy-i18n>\n\n <div slot=\"panel-${index}\">${tab.content}</div>\n `\n )}\n </x-tabs>\n </div>\n `;\n };\n\n // #endregion\n\n render(): TemplateResult {\n const { hiddenSelector, lang, ns } = this;\n const isLoaded = this.in({ idle: 'snapshot' });\n const isBusy = this.in('busy');\n const tabs: Tab[] = [];\n\n if (!hiddenSelector.matches('transactions', true)) {\n tabs.push({ title: 'transaction_plural', content: this.__renderTransactions() });\n }\n\n if (!hiddenSelector.matches('subscriptions', true)) {\n tabs.push({ title: 'subscription_plural', content: this.__renderSubscriptions() });\n }\n\n return html`\n <div class=\"relative\" data-testid=\"wrapper\" aria-busy=${isBusy} aria-live=\"polite\">\n <div\n class=${classMap({\n 'font-lumo text-body text-m leading-m space-y-s': true,\n 'opacity-50': !isLoaded,\n })}\n >\n ${hiddenSelector.matches('header', true) ? '' : this.__renderHeader()}\n ${hiddenSelector.matches('default', true) ? '' : this.renderTemplateOrSlot()}\n ${hiddenSelector.matches('addresses', true) ? '' : this.__renderAddresses()}\n ${hiddenSelector.matches('payment-methods', true) ? '' : this.__renderPaymentMethods()}\n ${hiddenSelector.matches('attributes', true) ? '' : this.__renderAttributes()}\n ${tabs.length === 0 ? '' : this.__renderTabs(tabs)}\n </div>\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': isLoaded,\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' : isBusy ? 'busy' : 'empty'}\n lang=${lang}\n ns=\"${ns} ${customElements.get('foxy-spinner')?.defaultNS ?? ''}\"\n >\n </foxy-spinner>\n </div>\n </div>\n `;\n }\n}\n"]}
|
|
@@ -90,7 +90,6 @@ export class InternalCustomerPortalSubscriptions extends Base {
|
|
|
90
90
|
};
|
|
91
91
|
this.__renderFormItemsActionsUpdate = (html, host) => {
|
|
92
92
|
var _a, _b, _c, _d;
|
|
93
|
-
// @ts-expect-error missing typedef in SDK
|
|
94
93
|
const itemsLink = (_c = (_b = (_a = host.data) === null || _a === void 0 ? void 0 : _a._links['fx:sub_modification_url']) === null || _b === void 0 ? void 0 : _b.href) !== null && _c !== void 0 ? _c : '';
|
|
95
94
|
const hasEnded = !!((_d = host.data) === null || _d === void 0 ? void 0 : _d.end_date) && new Date(host.data.end_date).getTime() <= Date.now();
|
|
96
95
|
return html `
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InternalCustomerPortalSubscriptions.js","sourceRoot":"","sources":["../../../../src/elements/public/CustomerPortal/InternalCustomerPortalSubscriptions.ts"],"names":[],"mappings":"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","sourcesContent":["import { ConfigurableMixin, Renderer } from '../../../mixins/configurable';\nimport { Graph, Rels } from '@foxy.io/sdk/customer';\nimport { LitElement, PropertyDeclarations, TemplateResult, html } from 'lit-element';\n\nimport { FormDialog } from '../FormDialog/FormDialog';\nimport { FormRendererContext } from '../FormDialog/types';\nimport { ItemRenderer } from '../CollectionPage/types';\nimport { PageRenderer } from '../CollectionPages/types';\nimport { BooleanSelector, Resource } from '@foxy.io/sdk/core';\nimport { SubscriptionForm } from '../SubscriptionForm/SubscriptionForm';\nimport { ThemeableMixin } from '../../../mixins/themeable';\nimport { TranslatableMixin } from '../../../mixins/translatable';\nimport { classMap } from '../../../utils/class-map';\nimport { ifDefined } from 'lit-html/directives/if-defined';\nimport { InferrableMixin } from '../../../mixins/inferrable';\n\nconst Base = TranslatableMixin(ConfigurableMixin(ThemeableMixin(InferrableMixin(LitElement))));\n\nexport class InternalCustomerPortalSubscriptions extends Base {\n static get properties(): PropertyDeclarations {\n return {\n ...super.properties,\n settings: { attribute: false },\n customer: { attribute: false },\n group: { type: String },\n };\n }\n\n settings: Resource<Rels.CustomerPortalSettings> | null = null;\n\n customer: Resource<Graph> | null = null;\n\n group = '';\n\n private readonly __renderFormHeaderActionsUpdate: Renderer<SubscriptionForm> = (html, host) => {\n const hasEnded = !!host.data?.end_date && new Date(host.data.end_date).getTime() <= Date.now();\n let billingLink = '';\n\n if (!hasEnded && host.in({ idle: 'snapshot' })) {\n const link = host.data._links['fx:sub_token_url'].href;\n const updateBillingURL = new URL(link);\n\n updateBillingURL.searchParams.set('cart', 'checkout');\n updateBillingURL.searchParams.set('sub_restart', 'auto');\n billingLink = updateBillingURL.toString();\n }\n\n return html`\n ${host.renderTemplateOrSlot('header:actions:update:before')}\n\n <foxy-internal-customer-portal-link\n data-testid=\"header:actions:update\"\n href=${billingLink}\n icon=\"icons:credit-card\"\n ?disabled=${hasEnded || !host.in('idle')}\n >\n <foxy-i18n lang=${host.lang} key=\"update_billing\" ns=${host.ns}></foxy-i18n>\n </foxy-internal-customer-portal-link>\n\n ${host.renderTemplateOrSlot('header:actions:update:after')}\n `;\n };\n\n private readonly __renderFormHeaderActionsEnd: Renderer<SubscriptionForm> = (html, host) => {\n const hasEndDate = !!host.data?.end_date;\n let cancelLink = '';\n\n if (!hasEndDate && host.in({ idle: 'snapshot' })) {\n const cancelURL = new URL(host.data._links['fx:sub_token_url'].href);\n\n cancelURL.searchParams.set('sub_cancel', 'true');\n cancelLink = cancelURL.toString();\n }\n\n return html`\n ${host.renderTemplateOrSlot('header:actions:end:before')}\n\n <foxy-internal-customer-portal-link\n data-testid=\"header:actions:end\"\n href=${cancelLink}\n icon=\"icons:block\"\n ?disabled=${hasEndDate || !host.in('idle')}\n >\n <foxy-i18n lang=${host.lang} key=\"end_subscription\" ns=${host.ns}></foxy-i18n>\n </foxy-internal-customer-portal-link>\n\n ${host.renderTemplateOrSlot('header:actions:end:after')}\n `;\n };\n\n private readonly __renderFormHeaderActions: Renderer<SubscriptionForm> = (html, host) => {\n const isUpdateActionHidden = host.hiddenSelector.matches('header:actions:update');\n const isEndActionHidden = host.hiddenSelector.matches('header:actions:end');\n\n return html`\n <style>\n main {\n display: flex;\n justify-content: space-between;\n padding-top: var(--lumo-space-xs);\n margin-top: var(--lumo-space-s);\n border-top: 1px solid var(--lumo-contrast-10pct);\n color: var(--lumo-secondary-color);\n }\n </style>\n\n ${host.renderTemplateOrSlot('header:actions:before')}\n\n <main data-testid=\"header:actions\">\n ${isUpdateActionHidden ? '' : this.__renderFormHeaderActionsUpdate(html, host)}\n ${isEndActionHidden ? '' : this.__renderFormHeaderActionsEnd(html, host)}\n </main>\n\n ${host.renderTemplateOrSlot('header:actions:after')}\n `;\n };\n\n private readonly __renderFormItemsActionsUpdate: Renderer<SubscriptionForm> = (html, host) => {\n // @ts-expect-error missing typedef in SDK\n const itemsLink = host.data?._links['fx:sub_modification_url']?.href ?? '';\n const hasEnded = !!host.data?.end_date && new Date(host.data.end_date).getTime() <= Date.now();\n\n return html`\n ${host.renderTemplateOrSlot('items:actions:update:before')}\n\n <foxy-internal-customer-portal-link\n data-testid=\"items:actions:update\"\n class=\"text-primary\"\n href=${itemsLink}\n ?disabled=${hasEnded || !host.in('idle')}\n >\n <foxy-i18n lang=${host.lang} key=\"update_items\" ns=${host.ns}></foxy-i18n>\n </foxy-internal-customer-portal-link>\n\n ${host.renderTemplateOrSlot('items:actions:update:after')}\n `;\n };\n\n private readonly __renderForm = (ctx: FormRendererContext) => {\n const templates = { ...ctx.dialog.templates };\n const originalHeaderAfterRenderer = templates['header:after'];\n const originalItemsActionsAfterRenderer = templates['items:actions:after'];\n\n templates['header:after'] = (html, host) => {\n const actionsHidden = host.hiddenSelector.matches('header:actions', true);\n return html`\n ${actionsHidden ? '' : this.__renderFormHeaderActions(html, host)}\n ${originalHeaderAfterRenderer?.(html, host)}\n `;\n };\n\n templates['items:actions:after'] = (html, host) => {\n const hasUpdateLink = !!host.data?._links['fx:sub_modification_url'];\n const isUpdateHidden = host.hiddenSelector.matches('items:actions:update', true);\n const isUpdateRendered = hasUpdateLink && !isUpdateHidden;\n\n return html`\n ${isUpdateRendered ? this.__renderFormItemsActionsUpdate(html, host) : ''}\n ${originalItemsActionsAfterRenderer?.(html, host)}\n `;\n };\n\n return html`\n <foxy-subscription-form\n disabledcontrols=${ctx.dialog.disabledControls.toString()}\n readonlycontrols=${ctx.dialog.readonlyControls.toString()}\n hiddencontrols=${new BooleanSelector(\n `attributes timestamps start-date past-due-amount ${ctx.dialog.hiddenSelector}`\n )}\n settings=${JSON.stringify(this.settings)}\n parent=${ctx.dialog.parent}\n group=${ctx.dialog.group}\n lang=${ctx.dialog.lang}\n href=${ctx.dialog.href}\n ns=\"${ctx.dialog.ns} ${customElements.get('foxy-subscription-form')?.defaultNS ?? ''}\"\n id=\"form\"\n .templates=${templates}\n @update=${ctx.handleUpdate}\n @fetch=${ctx.handleFetch}\n >\n </foxy-subscription-form>\n `;\n };\n\n private readonly __renderPageItem: ItemRenderer = ({ html, ...ctx }) => {\n return html`\n <button\n class=${classMap({\n 'block w-full border border-contrast-10 p-m rounded-t-l rounded-b-l': true,\n 'focus-outline-none focus-border-primary': true,\n 'hover-border-contrast-30': ctx.data !== null,\n })}\n ?disabled=${ctx.data === null}\n @click=${(evt: Event) => {\n const url = new URL(ctx.href);\n url.searchParams.set('zoom', 'last_transaction,transaction_template:items');\n this.__subscriptionDialog.href = url.toString();\n this.__subscriptionDialog.show(evt.currentTarget as HTMLButtonElement);\n }}\n >\n <foxy-subscription-card\n hiddencontrols=\"email\"\n parent=${ctx.parent}\n group=${ctx.group}\n lang=${ctx.lang}\n href=${ctx.href}\n ns=\"${ctx.ns} ${customElements.get('foxy-subscription-card')?.defaultNS ?? ''}\"\n .templates=${ctx.templates}\n >\n </foxy-subscription-card>\n </button>\n `;\n };\n\n private readonly __renderPage: PageRenderer<any> = ({ html, ...ctx }) => {\n return html`\n <foxy-collection-page\n ns=${ctx.ns}\n href=${ctx.href}\n lang=${ctx.lang}\n group=${ctx.group}\n class=\"space-y-m\"\n .item=${this.__renderPageItem}\n .templates=${ctx.templates}\n >\n </foxy-collection-page>\n `;\n };\n\n private readonly __renderHeader = () => {\n return html`\n ${this.renderTemplateOrSlot('header:before')}\n\n <foxy-i18n\n class=\"block text-l font-semibold\"\n lang=${this.lang}\n key=\"subscription_plural\"\n ns=${this.ns}\n >\n </foxy-i18n>\n\n ${this.renderTemplateOrSlot('header:after')}\n `;\n };\n\n private readonly __renderList = () => {\n const disabledSelector = this.disabledSelector.zoom('list');\n const readonlySelector = this.readonlySelector.zoom('list');\n const hiddenSelector = this.hiddenSelector.zoom('list');\n const extendedHiddenControlsArray = [hiddenSelector.zoom('form').toString(), 'end-date'];\n\n return html`\n ${this.renderTemplateOrSlot('list:before')}\n\n <foxy-form-dialog\n readonlycontrols=${readonlySelector.zoom('form').toString()}\n disabledcontrols=${disabledSelector.zoom('form').toString()}\n hiddencontrols=${extendedHiddenControlsArray.join(' ').trim()}\n header=\"update\"\n parent=${ifDefined(this.customer?._links['fx:subscriptions'].href)}\n group=${this.group}\n lang=${this.lang}\n ns=${this.ns}\n id=\"subscription-dialog\"\n .form=${this.__renderForm}\n .templates=${this.getNestedTemplates('list:form')}\n >\n </foxy-form-dialog>\n\n <foxy-collection-pages\n class=\"block space-y-m\"\n first=${this.__activeSubscriptionsLink}\n group=${this.group}\n lang=${this.lang}\n ns=${this.ns}\n manual\n .page=${this.__renderPage}\n .templates=${this.getNestedTemplates('list:card')}\n >\n </foxy-collection-pages>\n\n ${this.renderTemplateOrSlot('list:after')}\n `;\n };\n\n render(): TemplateResult {\n return html`\n <div class=\"space-y-s\" data-testid=\"subscriptions\">\n ${this.hiddenSelector.matches('header', true) ? '' : this.__renderHeader()}\n ${this.hiddenSelector.matches('list', true) ? '' : this.__renderList()}\n </div>\n `;\n }\n\n private get __subscriptionDialog() {\n return this.renderRoot.querySelector('#subscription-dialog') as FormDialog;\n }\n\n private get __activeSubscriptionsLink() {\n try {\n const url = new URL(this.customer!._links['fx:subscriptions'].href);\n url.searchParams.set('zoom', 'last_transaction,transaction_template:items');\n return url.toString();\n } catch {\n return '';\n }\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"InternalCustomerPortalSubscriptions.js","sourceRoot":"","sources":["../../../../src/elements/public/CustomerPortal/InternalCustomerPortalSubscriptions.ts"],"names":[],"mappings":"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","sourcesContent":["import { ConfigurableMixin, Renderer } from '../../../mixins/configurable';\nimport { Graph, Rels } from '@foxy.io/sdk/customer';\nimport { LitElement, PropertyDeclarations, TemplateResult, html } from 'lit-element';\n\nimport { FormDialog } from '../FormDialog/FormDialog';\nimport { FormRendererContext } from '../FormDialog/types';\nimport { ItemRenderer } from '../CollectionPage/types';\nimport { PageRenderer } from '../CollectionPages/types';\nimport { BooleanSelector, Resource } from '@foxy.io/sdk/core';\nimport { SubscriptionForm } from '../SubscriptionForm/SubscriptionForm';\nimport { ThemeableMixin } from '../../../mixins/themeable';\nimport { TranslatableMixin } from '../../../mixins/translatable';\nimport { classMap } from '../../../utils/class-map';\nimport { ifDefined } from 'lit-html/directives/if-defined';\nimport { InferrableMixin } from '../../../mixins/inferrable';\n\nconst Base = TranslatableMixin(ConfigurableMixin(ThemeableMixin(InferrableMixin(LitElement))));\n\nexport class InternalCustomerPortalSubscriptions extends Base {\n static get properties(): PropertyDeclarations {\n return {\n ...super.properties,\n settings: { attribute: false },\n customer: { attribute: false },\n group: { type: String },\n };\n }\n\n settings: Resource<Rels.CustomerPortalSettings> | null = null;\n\n customer: Resource<Graph> | null = null;\n\n group = '';\n\n private readonly __renderFormHeaderActionsUpdate: Renderer<SubscriptionForm> = (html, host) => {\n const hasEnded = !!host.data?.end_date && new Date(host.data.end_date).getTime() <= Date.now();\n let billingLink = '';\n\n if (!hasEnded && host.in({ idle: 'snapshot' })) {\n const link = host.data._links['fx:sub_token_url'].href;\n const updateBillingURL = new URL(link);\n\n updateBillingURL.searchParams.set('cart', 'checkout');\n updateBillingURL.searchParams.set('sub_restart', 'auto');\n billingLink = updateBillingURL.toString();\n }\n\n return html`\n ${host.renderTemplateOrSlot('header:actions:update:before')}\n\n <foxy-internal-customer-portal-link\n data-testid=\"header:actions:update\"\n href=${billingLink}\n icon=\"icons:credit-card\"\n ?disabled=${hasEnded || !host.in('idle')}\n >\n <foxy-i18n lang=${host.lang} key=\"update_billing\" ns=${host.ns}></foxy-i18n>\n </foxy-internal-customer-portal-link>\n\n ${host.renderTemplateOrSlot('header:actions:update:after')}\n `;\n };\n\n private readonly __renderFormHeaderActionsEnd: Renderer<SubscriptionForm> = (html, host) => {\n const hasEndDate = !!host.data?.end_date;\n let cancelLink = '';\n\n if (!hasEndDate && host.in({ idle: 'snapshot' })) {\n const cancelURL = new URL(host.data._links['fx:sub_token_url'].href);\n\n cancelURL.searchParams.set('sub_cancel', 'true');\n cancelLink = cancelURL.toString();\n }\n\n return html`\n ${host.renderTemplateOrSlot('header:actions:end:before')}\n\n <foxy-internal-customer-portal-link\n data-testid=\"header:actions:end\"\n href=${cancelLink}\n icon=\"icons:block\"\n ?disabled=${hasEndDate || !host.in('idle')}\n >\n <foxy-i18n lang=${host.lang} key=\"end_subscription\" ns=${host.ns}></foxy-i18n>\n </foxy-internal-customer-portal-link>\n\n ${host.renderTemplateOrSlot('header:actions:end:after')}\n `;\n };\n\n private readonly __renderFormHeaderActions: Renderer<SubscriptionForm> = (html, host) => {\n const isUpdateActionHidden = host.hiddenSelector.matches('header:actions:update');\n const isEndActionHidden = host.hiddenSelector.matches('header:actions:end');\n\n return html`\n <style>\n main {\n display: flex;\n justify-content: space-between;\n padding-top: var(--lumo-space-xs);\n margin-top: var(--lumo-space-s);\n border-top: 1px solid var(--lumo-contrast-10pct);\n color: var(--lumo-secondary-color);\n }\n </style>\n\n ${host.renderTemplateOrSlot('header:actions:before')}\n\n <main data-testid=\"header:actions\">\n ${isUpdateActionHidden ? '' : this.__renderFormHeaderActionsUpdate(html, host)}\n ${isEndActionHidden ? '' : this.__renderFormHeaderActionsEnd(html, host)}\n </main>\n\n ${host.renderTemplateOrSlot('header:actions:after')}\n `;\n };\n\n private readonly __renderFormItemsActionsUpdate: Renderer<SubscriptionForm> = (html, host) => {\n const itemsLink = host.data?._links['fx:sub_modification_url']?.href ?? '';\n const hasEnded = !!host.data?.end_date && new Date(host.data.end_date).getTime() <= Date.now();\n\n return html`\n ${host.renderTemplateOrSlot('items:actions:update:before')}\n\n <foxy-internal-customer-portal-link\n data-testid=\"items:actions:update\"\n class=\"text-primary\"\n href=${itemsLink}\n ?disabled=${hasEnded || !host.in('idle')}\n >\n <foxy-i18n lang=${host.lang} key=\"update_items\" ns=${host.ns}></foxy-i18n>\n </foxy-internal-customer-portal-link>\n\n ${host.renderTemplateOrSlot('items:actions:update:after')}\n `;\n };\n\n private readonly __renderForm = (ctx: FormRendererContext) => {\n const templates = { ...ctx.dialog.templates };\n const originalHeaderAfterRenderer = templates['header:after'];\n const originalItemsActionsAfterRenderer = templates['items:actions:after'];\n\n templates['header:after'] = (html, host) => {\n const actionsHidden = host.hiddenSelector.matches('header:actions', true);\n return html`\n ${actionsHidden ? '' : this.__renderFormHeaderActions(html, host)}\n ${originalHeaderAfterRenderer?.(html, host)}\n `;\n };\n\n templates['items:actions:after'] = (html, host) => {\n const hasUpdateLink = !!host.data?._links['fx:sub_modification_url'];\n const isUpdateHidden = host.hiddenSelector.matches('items:actions:update', true);\n const isUpdateRendered = hasUpdateLink && !isUpdateHidden;\n\n return html`\n ${isUpdateRendered ? this.__renderFormItemsActionsUpdate(html, host) : ''}\n ${originalItemsActionsAfterRenderer?.(html, host)}\n `;\n };\n\n return html`\n <foxy-subscription-form\n disabledcontrols=${ctx.dialog.disabledControls.toString()}\n readonlycontrols=${ctx.dialog.readonlyControls.toString()}\n hiddencontrols=${new BooleanSelector(\n `attributes timestamps start-date past-due-amount ${ctx.dialog.hiddenSelector}`\n )}\n settings=${JSON.stringify(this.settings)}\n parent=${ctx.dialog.parent}\n group=${ctx.dialog.group}\n lang=${ctx.dialog.lang}\n href=${ctx.dialog.href}\n ns=\"${ctx.dialog.ns} ${customElements.get('foxy-subscription-form')?.defaultNS ?? ''}\"\n id=\"form\"\n .templates=${templates}\n @update=${ctx.handleUpdate}\n @fetch=${ctx.handleFetch}\n >\n </foxy-subscription-form>\n `;\n };\n\n private readonly __renderPageItem: ItemRenderer = ({ html, ...ctx }) => {\n return html`\n <button\n class=${classMap({\n 'block w-full border border-contrast-10 p-m rounded-t-l rounded-b-l': true,\n 'focus-outline-none focus-border-primary': true,\n 'hover-border-contrast-30': ctx.data !== null,\n })}\n ?disabled=${ctx.data === null}\n @click=${(evt: Event) => {\n const url = new URL(ctx.href);\n url.searchParams.set('zoom', 'last_transaction,transaction_template:items');\n this.__subscriptionDialog.href = url.toString();\n this.__subscriptionDialog.show(evt.currentTarget as HTMLButtonElement);\n }}\n >\n <foxy-subscription-card\n hiddencontrols=\"email\"\n parent=${ctx.parent}\n group=${ctx.group}\n lang=${ctx.lang}\n href=${ctx.href}\n ns=\"${ctx.ns} ${customElements.get('foxy-subscription-card')?.defaultNS ?? ''}\"\n .templates=${ctx.templates}\n >\n </foxy-subscription-card>\n </button>\n `;\n };\n\n private readonly __renderPage: PageRenderer<any> = ({ html, ...ctx }) => {\n return html`\n <foxy-collection-page\n ns=${ctx.ns}\n href=${ctx.href}\n lang=${ctx.lang}\n group=${ctx.group}\n class=\"space-y-m\"\n .item=${this.__renderPageItem}\n .templates=${ctx.templates}\n >\n </foxy-collection-page>\n `;\n };\n\n private readonly __renderHeader = () => {\n return html`\n ${this.renderTemplateOrSlot('header:before')}\n\n <foxy-i18n\n class=\"block text-l font-semibold\"\n lang=${this.lang}\n key=\"subscription_plural\"\n ns=${this.ns}\n >\n </foxy-i18n>\n\n ${this.renderTemplateOrSlot('header:after')}\n `;\n };\n\n private readonly __renderList = () => {\n const disabledSelector = this.disabledSelector.zoom('list');\n const readonlySelector = this.readonlySelector.zoom('list');\n const hiddenSelector = this.hiddenSelector.zoom('list');\n const extendedHiddenControlsArray = [hiddenSelector.zoom('form').toString(), 'end-date'];\n\n return html`\n ${this.renderTemplateOrSlot('list:before')}\n\n <foxy-form-dialog\n readonlycontrols=${readonlySelector.zoom('form').toString()}\n disabledcontrols=${disabledSelector.zoom('form').toString()}\n hiddencontrols=${extendedHiddenControlsArray.join(' ').trim()}\n header=\"update\"\n parent=${ifDefined(this.customer?._links['fx:subscriptions'].href)}\n group=${this.group}\n lang=${this.lang}\n ns=${this.ns}\n id=\"subscription-dialog\"\n .form=${this.__renderForm}\n .templates=${this.getNestedTemplates('list:form')}\n >\n </foxy-form-dialog>\n\n <foxy-collection-pages\n class=\"block space-y-m\"\n first=${this.__activeSubscriptionsLink}\n group=${this.group}\n lang=${this.lang}\n ns=${this.ns}\n manual\n .page=${this.__renderPage}\n .templates=${this.getNestedTemplates('list:card')}\n >\n </foxy-collection-pages>\n\n ${this.renderTemplateOrSlot('list:after')}\n `;\n };\n\n render(): TemplateResult {\n return html`\n <div class=\"space-y-s\" data-testid=\"subscriptions\">\n ${this.hiddenSelector.matches('header', true) ? '' : this.__renderHeader()}\n ${this.hiddenSelector.matches('list', true) ? '' : this.__renderList()}\n </div>\n `;\n }\n\n private get __subscriptionDialog() {\n return this.renderRoot.querySelector('#subscription-dialog') as FormDialog;\n }\n\n private get __activeSubscriptionsLink() {\n try {\n const url = new URL(this.customer!._links['fx:subscriptions'].href);\n url.searchParams.set('zoom', 'last_transaction,transaction_template:items');\n return url.toString();\n } catch {\n return '';\n }\n }\n}\n"]}
|
|
@@ -252,10 +252,7 @@ export class ItemCard extends Base {
|
|
|
252
252
|
get __templateSetHref() {
|
|
253
253
|
var _a;
|
|
254
254
|
const cart = (_a = this.__cart) !== null && _a !== void 0 ? _a : this.__transactionTemplate;
|
|
255
|
-
|
|
256
|
-
// @ts-expect-error SDK types are incomplete
|
|
257
|
-
const currencyCode = cart === null || cart === void 0 ? void 0 : cart.currency_code;
|
|
258
|
-
if (!currencyCode)
|
|
255
|
+
if (!(cart === null || cart === void 0 ? void 0 : cart.currency_code))
|
|
259
256
|
return (cart === null || cart === void 0 ? void 0 : cart.template_set_uri) || void 0;
|
|
260
257
|
}
|
|
261
258
|
get __storeHref() {
|
|
@@ -322,9 +319,7 @@ export class ItemCard extends Base {
|
|
|
322
319
|
}
|
|
323
320
|
else {
|
|
324
321
|
const cart = (_a = this.__cart) !== null && _a !== void 0 ? _a : this.__transactionTemplate;
|
|
325
|
-
if (cart
|
|
326
|
-
// TODO: remove the directive below once the SDK is updated
|
|
327
|
-
// @ts-expect-error SDK types are incomplete
|
|
322
|
+
if (cart === null || cart === void 0 ? void 0 : cart.currency_code) {
|
|
328
323
|
return cart.currency_code;
|
|
329
324
|
}
|
|
330
325
|
else {
|
|
@@ -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\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"]}
|
|
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;IAuTjD,CAAC;IA/UC,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,IAAI,EAAC,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,aAAa,CAAA;YAAE,OAAO,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,gBAAgB,KAAI,KAAK,CAAC,CAAC;IACpE,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,aAAJ,IAAI,uBAAJ,IAAI,CAAE,aAAa,EAAE;gBACvB,OAAO,IAAI,CAAC,aAAa,CAAC;aAC3B;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;;AArUuB,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 if (!cart?.currency_code) 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) {\n return cart.currency_code;\n } else {\n const allLocaleCodes = this.__localeCodesHelper;\n const localeCode = (this.__templateSet ?? this.__defaultTemplateSet)?.locale_code;\n const localeInfo = localeCode ? allLocaleCodes?.values[localeCode] : void 0;\n\n if (localeInfo) return /Currency: ([A-Z]{3})/g.exec(localeInfo)?.[1];\n }\n }\n }\n}\n"]}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { TranslatableMixin } from "../../../mixins/translatable.js";
|
|
2
2
|
import { InternalForm } from "../../internal/InternalForm/InternalForm.js";
|
|
3
|
-
import { ifDefined } from 'lit-html/directives/if-defined';
|
|
4
3
|
import { html } from 'lit-html';
|
|
5
4
|
/**
|
|
6
5
|
* Form element for creating or editing items (`fx:item`).
|
|
@@ -73,20 +72,7 @@ export class ItemForm extends TranslatableMixin(InternalForm, 'item-form') {
|
|
|
73
72
|
];
|
|
74
73
|
}
|
|
75
74
|
renderBody() {
|
|
76
|
-
|
|
77
|
-
var _a;
|
|
78
|
-
return html `
|
|
79
|
-
<foxy-item-option-card
|
|
80
|
-
locale-codes=${ifDefined((_a = this.localeCodes) !== null && _a !== void 0 ? _a : void 0)}
|
|
81
|
-
parent=${ctx.parent}
|
|
82
|
-
class="p-m"
|
|
83
|
-
infer=""
|
|
84
|
-
href=${ctx.href}
|
|
85
|
-
.related=${ctx.related}
|
|
86
|
-
>
|
|
87
|
-
</foxy-item-option-card>
|
|
88
|
-
`;
|
|
89
|
-
};
|
|
75
|
+
var _a;
|
|
90
76
|
return html `
|
|
91
77
|
<foxy-internal-text-control infer="name"></foxy-internal-text-control>
|
|
92
78
|
|
|
@@ -133,8 +119,9 @@ export class ItemForm extends TranslatableMixin(InternalForm, 'item-form') {
|
|
|
133
119
|
first=${this.data._links['fx:item_options'].href}
|
|
134
120
|
limit="5"
|
|
135
121
|
form="foxy-item-option-form"
|
|
136
|
-
|
|
122
|
+
item="foxy-item-option-card"
|
|
137
123
|
.related=${this.__itemOptionRelatedUrls}
|
|
124
|
+
.props=${{ 'locale-codes': (_a = this.localeCodes) !== null && _a !== void 0 ? _a : '' }}
|
|
138
125
|
>
|
|
139
126
|
</foxy-internal-async-details-control>
|
|
140
127
|
`
|
|
@@ -144,9 +131,7 @@ export class ItemForm extends TranslatableMixin(InternalForm, 'item-form') {
|
|
|
144
131
|
}
|
|
145
132
|
async _sendGet() {
|
|
146
133
|
const item = await super._sendGet();
|
|
147
|
-
if ('fx:subscription'
|
|
148
|
-
// TODO: remove the directive below once SDK is updated
|
|
149
|
-
// @ts-expect-error SDK types are incomplete
|
|
134
|
+
if (item._links['fx:subscription']) {
|
|
150
135
|
const subscriptionHref = item._links['fx:subscription'].href;
|
|
151
136
|
const subscription = await super._fetch(subscriptionHref);
|
|
152
137
|
const transactionTemplateHref = subscription._links['fx:transaction_template'].href;
|
|
@@ -154,14 +139,12 @@ export class ItemForm extends TranslatableMixin(InternalForm, 'item-form') {
|
|
|
154
139
|
this.__itemsLink = transactionTemplate._links['fx:items'].href;
|
|
155
140
|
return item;
|
|
156
141
|
}
|
|
157
|
-
if ('fx:transaction'
|
|
142
|
+
if (item._links['fx:transaction']) {
|
|
158
143
|
const transaction = await super._fetch(item._links['fx:transaction'].href);
|
|
159
144
|
this.__itemsLink = transaction._links['fx:items'].href;
|
|
160
145
|
return item;
|
|
161
146
|
}
|
|
162
|
-
if ('fx:cart'
|
|
163
|
-
// TODO: remove the directive below once SDK is updated
|
|
164
|
-
// @ts-expect-error SDK types are incomplete
|
|
147
|
+
if (item._links['fx:cart']) {
|
|
165
148
|
const cart = await super._fetch(item._links['fx:cart'].href);
|
|
166
149
|
this.__itemsLink = cart._links['fx:items'].href;
|
|
167
150
|
return item;
|