@foxy.io/elements 1.23.0 → 1.24.0-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cdn/foxy-access-recovery-form.js +1 -1
- package/dist/cdn/foxy-address-card.js +2 -2
- 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-client-card.js +1 -0
- package/dist/cdn/foxy-client-form.js +1 -0
- package/dist/cdn/foxy-collection-page.js +1 -1
- package/dist/cdn/foxy-collection-pages.js +1 -1
- package/dist/cdn/foxy-copy-to-clipboard.js +1 -1
- package/dist/cdn/foxy-coupon-card.js +1 -1
- package/dist/cdn/foxy-coupon-code-form.js +1 -1
- package/dist/cdn/foxy-coupon-codes-form.js +1 -1
- package/dist/cdn/foxy-coupon-detail-card.js +1 -1
- package/dist/cdn/foxy-coupon-form.js +1 -1
- package/dist/cdn/foxy-custom-field-card.js +1 -1
- package/dist/cdn/foxy-custom-field-form.js +1 -1
- package/dist/cdn/foxy-customer-api.js +1 -1
- package/dist/cdn/foxy-customer-card.js +1 -1
- package/dist/cdn/foxy-customer-form.js +1 -1
- package/dist/cdn/foxy-customer-portal-settings.js +1 -1
- package/dist/cdn/foxy-customer-portal.js +1 -1
- package/dist/cdn/foxy-customer.js +1 -1
- package/dist/cdn/foxy-customers-table.js +1 -1
- package/dist/cdn/foxy-discount-builder.js +1 -1
- package/dist/cdn/foxy-discount-card.js +1 -1
- package/dist/cdn/foxy-discount-detail-card.js +1 -1
- package/dist/cdn/foxy-donation.js +1 -1
- package/dist/cdn/foxy-downloadable-card.js +1 -1
- package/dist/cdn/foxy-downloadable-form.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-filter-attribute-card.js +1 -0
- package/dist/cdn/foxy-filter-attribute-form.js +1 -0
- 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-passkey-card.js +1 -0
- package/dist/cdn/foxy-passkey-form.js +1 -0
- package/dist/cdn/foxy-payment-card.js +1 -1
- package/dist/cdn/foxy-payment-method-card.js +1 -1
- package/dist/cdn/foxy-payments-api-fraud-protection-card.js +1 -1
- package/dist/cdn/foxy-payments-api-fraud-protection-form.js +1 -1
- package/dist/cdn/foxy-payments-api-payment-method-card.js +1 -1
- package/dist/cdn/foxy-payments-api-payment-method-form.js +1 -1
- package/dist/cdn/foxy-payments-api-payment-preset-card.js +1 -1
- package/dist/cdn/foxy-payments-api-payment-preset-form.js +1 -1
- package/dist/cdn/foxy-payments-api.js +1 -1
- package/dist/cdn/foxy-query-builder.js +1 -1
- package/dist/cdn/foxy-report-form.js +1 -1
- package/dist/cdn/foxy-reports-table.js +1 -1
- package/dist/cdn/foxy-shipment-card.js +1 -1
- package/dist/cdn/foxy-shipping-method-card.js +1 -1
- package/dist/cdn/foxy-sign-in-form.js +1 -1
- package/dist/cdn/foxy-spinner.js +2 -2
- package/dist/cdn/foxy-store-card.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 +3 -3
- 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 +1 -1
- package/dist/cdn/foxy-user-card.js +1 -1
- package/dist/cdn/foxy-user-form.js +1 -1
- package/dist/cdn/foxy-users-table.js +1 -1
- package/dist/cdn/foxy-webhook-card.js +1 -1
- package/dist/cdn/foxy-webhook-form.js +1 -1
- package/dist/cdn/foxy-webhook-log-card.js +1 -1
- package/dist/cdn/foxy-webhook-status-card.js +1 -1
- package/dist/cdn/{shared-16b542bc.js → shared-09d4fbb8.js} +2 -2
- package/dist/cdn/{shared-5dd31b4e.js → shared-0a248c0d.js} +1 -1
- package/dist/cdn/{shared-c40d85dc.js → shared-17d0db7f.js} +1 -1
- package/dist/cdn/{shared-7c5754a4.js → shared-1b060170.js} +1 -1
- package/dist/cdn/shared-1d08a5ad.js +1 -0
- package/dist/cdn/{shared-03b39ec4.js → shared-1d28220a.js} +1 -1
- package/dist/cdn/{shared-daf52401.js → shared-1eac92fa.js} +1 -1
- package/dist/cdn/{shared-6fb923d5.js → shared-25f64060.js} +1 -1
- package/dist/cdn/{shared-98755831.js → shared-307262a1.js} +1 -1
- package/dist/cdn/{shared-4c9f96ec.js → shared-31651a9c.js} +1 -1
- package/dist/cdn/{shared-a89cb472.js → shared-332f2997.js} +1 -1
- package/dist/cdn/shared-36725fe3.js +1 -0
- package/dist/cdn/{shared-6b53ef85.js → shared-379b37e6.js} +2 -2
- package/dist/cdn/{shared-b5517c1b.js → shared-39f3b48d.js} +1 -1
- package/dist/cdn/{shared-f3f5e87e.js → shared-432c5183.js} +1 -1
- package/dist/cdn/{shared-e28f16db.js → shared-4674063d.js} +1 -1
- package/dist/cdn/{shared-6f465111.js → shared-479ad951.js} +1 -1
- package/dist/cdn/{shared-08ff9a8d.js → shared-4904bca4.js} +1 -1
- package/dist/cdn/{shared-a8cf402a.js → shared-4b67d699.js} +1 -1
- package/dist/cdn/{shared-bd81cc08.js → shared-4bbd600d.js} +1 -1
- package/dist/cdn/{shared-ad396f3c.js → shared-4c956a8e.js} +1 -1
- package/dist/cdn/{shared-fbfb0943.js → shared-4dc58b73.js} +1 -1
- package/dist/cdn/{shared-39761436.js → shared-4dee79d4.js} +1 -1
- package/dist/cdn/{shared-b88e35b7.js → shared-51d28e6d.js} +1 -1
- package/dist/cdn/shared-53061389.js +1 -0
- package/dist/cdn/{shared-7a290f36.js → shared-59042137.js} +1 -1
- package/dist/cdn/{shared-068480a3.js → shared-64f98a0f.js} +1 -1
- package/dist/cdn/{shared-23923638.js → shared-65318cc1.js} +1 -1
- package/dist/cdn/shared-65ba8b39.js +1 -0
- package/dist/cdn/{shared-380db651.js → shared-665d6cc4.js} +1 -1
- package/dist/cdn/{shared-7bf46d6d.js → shared-69a21b9d.js} +1 -1
- package/dist/cdn/{shared-8349938a.js → shared-6abdfcf2.js} +1 -1
- package/dist/cdn/{shared-0dc1d012.js → shared-6dc64a17.js} +1 -1
- package/dist/cdn/shared-6f84ac3e.js +1 -0
- package/dist/cdn/{shared-86768244.js → shared-77a4d8e8.js} +1 -1
- package/dist/cdn/{shared-a6518411.js → shared-7995407d.js} +1 -1
- package/dist/cdn/shared-7f5618ba.js +1 -0
- package/dist/cdn/{shared-61a510d8.js → shared-8474bc4a.js} +1 -1
- package/dist/cdn/{shared-0543c6e0.js → shared-88e36564.js} +1 -1
- package/dist/cdn/{shared-ca5e1c6b.js → shared-92f27a38.js} +1 -1
- package/dist/cdn/{shared-e5c19ea3.js → shared-984fcdf5.js} +3 -3
- package/dist/cdn/{shared-43520428.js → shared-9c626d58.js} +1 -1
- package/dist/cdn/{shared-8b73191b.js → shared-9caffb4d.js} +1 -1
- package/dist/cdn/{shared-1e5292a1.js → shared-a3c73e91.js} +1 -1
- package/dist/cdn/{shared-3a252ccd.js → shared-a92ae606.js} +1 -1
- package/dist/cdn/{shared-ee13d1a6.js → shared-b0f534ef.js} +1 -1
- package/dist/cdn/{shared-d493355a.js → shared-b3ac59eb.js} +1 -1
- package/dist/cdn/{shared-e6066f46.js → shared-b48a83b0.js} +1 -1
- package/dist/cdn/{shared-939fc890.js → shared-ba658670.js} +1 -1
- package/dist/cdn/{shared-85bc54a6.js → shared-bafcab47.js} +1 -1
- package/dist/cdn/{shared-cd096e97.js → shared-bdb51db9.js} +1 -1
- package/dist/cdn/{shared-9048c076.js → shared-be24dd36.js} +1 -1
- package/dist/cdn/shared-bf62a65b.js +1 -0
- package/dist/cdn/{shared-eb900735.js → shared-c2d3b32b.js} +1 -1
- package/dist/cdn/{shared-3a82d3f5.js → shared-c4240bc6.js} +1 -1
- package/dist/cdn/{shared-ca58ef47.js → shared-c6c6ba69.js} +1 -1
- package/dist/cdn/{shared-de790de9.js → shared-c7f2f1ab.js} +1 -1
- package/dist/cdn/{shared-53fee01f.js → shared-c97e0d6e.js} +1 -1
- package/dist/cdn/{shared-bd819b5b.js → shared-cf269a17.js} +1 -1
- package/dist/cdn/{shared-4db2c7b1.js → shared-d14c2060.js} +3 -3
- package/dist/cdn/{shared-dcbaa1c5.js → shared-db21f6db.js} +1 -1
- package/dist/cdn/{shared-2756a4f0.js → shared-dccf0420.js} +1 -1
- package/dist/cdn/{shared-0c02b4ee.js → shared-dfe2602a.js} +1 -1
- package/dist/cdn/{shared-4abfda9b.js → shared-e10052d0.js} +1 -1
- package/dist/cdn/{shared-b95ef318.js → shared-e6828dbf.js} +1 -1
- package/dist/cdn/{shared-cb6f2388.js → shared-e6997950.js} +1 -1
- package/dist/cdn/{shared-eb4b4597.js → shared-e7c3b7b6.js} +1 -1
- package/dist/cdn/{shared-6eb7dc77.js → shared-e84fa0ea.js} +1 -1
- package/dist/cdn/{shared-6bfa699d.js → shared-e8e92fe3.js} +1 -1
- package/dist/cdn/shared-fe54babe.js +1 -0
- package/dist/cdn/{shared-aeec3cab.js → shared-fef9ecc1.js} +1 -1
- package/dist/cdn/{shared-c3c67413.js → shared-ff992ead.js} +1 -1
- package/dist/cdn/translations/client-card/en.json +10 -0
- package/dist/cdn/translations/client-form/en.json +74 -0
- package/dist/cdn/translations/filter-attribute-card/en.json +8 -0
- package/dist/cdn/translations/filter-attribute-form/en.json +49 -0
- package/dist/cdn/translations/passkey-card/en.json +9 -0
- package/dist/cdn/translations/passkey-form/en.json +34 -0
- package/dist/cdn/translations/transaction-card/en.json +8 -0
- package/dist/elements/private/Dialog/Dialog.js +10 -1
- package/dist/elements/private/Dialog/Dialog.js.map +1 -1
- package/dist/elements/public/ClientCard/ClientCard.d.ts +17 -0
- package/dist/elements/public/ClientCard/ClientCard.js +46 -0
- package/dist/elements/public/ClientCard/ClientCard.js.map +1 -0
- package/dist/elements/public/ClientCard/index.d.ts +3 -0
- package/dist/elements/public/ClientCard/index.js +5 -0
- package/dist/elements/public/ClientCard/index.js.map +1 -0
- package/dist/elements/public/ClientCard/types.d.ts +3 -0
- package/dist/elements/public/ClientCard/types.js +2 -0
- package/dist/elements/public/ClientCard/types.js.map +1 -0
- package/dist/elements/public/ClientForm/ClientForm.d.ts +62 -0
- package/dist/elements/public/ClientForm/ClientForm.js +108 -0
- package/dist/elements/public/ClientForm/ClientForm.js.map +1 -0
- package/dist/elements/public/ClientForm/index.d.ts +5 -0
- package/dist/elements/public/ClientForm/index.js +7 -0
- package/dist/elements/public/ClientForm/index.js.map +1 -0
- package/dist/elements/public/ClientForm/types.d.ts +35 -0
- package/dist/elements/public/ClientForm/types.js +2 -0
- package/dist/elements/public/ClientForm/types.js.map +1 -0
- package/dist/elements/public/FilterAttributeCard/FilterAttributeCard.d.ts +31 -0
- package/dist/elements/public/FilterAttributeCard/FilterAttributeCard.js +113 -0
- package/dist/elements/public/FilterAttributeCard/FilterAttributeCard.js.map +1 -0
- package/dist/elements/public/FilterAttributeCard/index.d.ts +4 -0
- package/dist/elements/public/FilterAttributeCard/index.js +6 -0
- package/dist/elements/public/FilterAttributeCard/index.js.map +1 -0
- package/dist/elements/public/FilterAttributeCard/types.d.ts +3 -0
- package/dist/elements/public/FilterAttributeCard/types.js +2 -0
- package/dist/elements/public/FilterAttributeCard/types.js.map +1 -0
- package/dist/elements/public/FilterAttributeForm/FilterAttributeForm.d.ts +46 -0
- package/dist/elements/public/FilterAttributeForm/FilterAttributeForm.js +131 -0
- package/dist/elements/public/FilterAttributeForm/FilterAttributeForm.js.map +1 -0
- package/dist/elements/public/FilterAttributeForm/index.d.ts +6 -0
- package/dist/elements/public/FilterAttributeForm/index.js +8 -0
- package/dist/elements/public/FilterAttributeForm/index.js.map +1 -0
- package/dist/elements/public/FilterAttributeForm/internal/InternalFilterAttributeFormActionControl/InternalFilterAttributeFormActionControl.d.ts +5 -0
- package/dist/elements/public/FilterAttributeForm/internal/InternalFilterAttributeFormActionControl/InternalFilterAttributeFormActionControl.js +34 -0
- package/dist/elements/public/FilterAttributeForm/internal/InternalFilterAttributeFormActionControl/InternalFilterAttributeFormActionControl.js.map +1 -0
- package/dist/elements/public/FilterAttributeForm/internal/InternalFilterAttributeFormActionControl/index.d.ts +5 -0
- package/dist/elements/public/FilterAttributeForm/internal/InternalFilterAttributeFormActionControl/index.js +7 -0
- package/dist/elements/public/FilterAttributeForm/internal/InternalFilterAttributeFormActionControl/index.js.map +1 -0
- package/dist/elements/public/FilterAttributeForm/types.d.ts +14 -0
- package/dist/elements/public/FilterAttributeForm/types.js +2 -0
- package/dist/elements/public/FilterAttributeForm/types.js.map +1 -0
- package/dist/elements/public/PasskeyCard/PasskeyCard.d.ts +22 -0
- package/dist/elements/public/PasskeyCard/PasskeyCard.js +42 -0
- package/dist/elements/public/PasskeyCard/PasskeyCard.js.map +1 -0
- package/dist/elements/public/PasskeyCard/index.d.ts +3 -0
- package/dist/elements/public/PasskeyCard/index.js +5 -0
- package/dist/elements/public/PasskeyCard/index.js.map +1 -0
- package/dist/elements/public/PasskeyCard/types.d.ts +33 -0
- package/dist/elements/public/PasskeyCard/types.js +2 -0
- package/dist/elements/public/PasskeyCard/types.js.map +1 -0
- package/dist/elements/public/PasskeyForm/PasskeyForm.d.ts +36 -0
- package/dist/elements/public/PasskeyForm/PasskeyForm.js +52 -0
- package/dist/elements/public/PasskeyForm/PasskeyForm.js.map +1 -0
- package/dist/elements/public/PasskeyForm/index.d.ts +6 -0
- package/dist/elements/public/PasskeyForm/index.js +8 -0
- package/dist/elements/public/PasskeyForm/index.js.map +1 -0
- package/dist/elements/public/PasskeyForm/types.d.ts +17 -0
- package/dist/elements/public/PasskeyForm/types.js +2 -0
- package/dist/elements/public/PasskeyForm/types.js.map +1 -0
- package/dist/elements/public/TransactionCard/TransactionCard.js +26 -4
- package/dist/elements/public/TransactionCard/TransactionCard.js.map +1 -1
- package/dist/elements/public/TransactionCard/types.d.ts +4 -1
- package/dist/elements/public/TransactionCard/types.js.map +1 -1
- package/dist/elements/public/WebhookCard/WebhookCard.js +5 -17
- package/dist/elements/public/WebhookCard/WebhookCard.js.map +1 -1
- package/dist/elements/public/WebhookCard/index.d.ts +0 -2
- package/dist/elements/public/WebhookCard/index.js +0 -2
- package/dist/elements/public/WebhookCard/index.js.map +1 -1
- package/dist/elements/public/index.d.ts +6 -0
- package/dist/elements/public/index.defined.d.ts +6 -0
- package/dist/elements/public/index.defined.js +6 -0
- package/dist/elements/public/index.defined.js.map +1 -1
- package/dist/elements/public/index.js +6 -0
- package/dist/elements/public/index.js.map +1 -1
- package/dist/mixins/themeable.js +4 -0
- package/dist/mixins/themeable.js.map +1 -1
- package/package.json +5 -3
- package/dist/cdn/shared-49d978e1.js +0 -1
- package/dist/cdn/shared-509a2f52.js +0 -1
- package/dist/cdn/shared-9e60ef60.js +0 -1
- package/dist/cdn/shared-bb009254.js +0 -1
- package/dist/cdn/shared-bfdbd733.js +0 -1
- package/dist/cdn/shared-c7f56c90.js +0 -1
- package/dist/cdn/shared-e41e53c0.js +0 -1
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { TranslatableMixin } from "../../../mixins/translatable.js";
|
|
2
|
+
import { TwoLineCard } from "../CustomFieldCard/TwoLineCard.js";
|
|
3
|
+
import { html } from 'lit-html';
|
|
4
|
+
import uainfer from 'uainfer/src/uainfer.js';
|
|
5
|
+
const NS = 'passkey-card';
|
|
6
|
+
const Base = TranslatableMixin(TwoLineCard, NS);
|
|
7
|
+
/**
|
|
8
|
+
* Basic card displaying a saved passkey.
|
|
9
|
+
*
|
|
10
|
+
* @slot title:before
|
|
11
|
+
* @slot title:after
|
|
12
|
+
*
|
|
13
|
+
* @slot subtitle:before
|
|
14
|
+
* @slot subtitle:after
|
|
15
|
+
*
|
|
16
|
+
* @element foxy-passkey-card
|
|
17
|
+
* @since 1.24.0
|
|
18
|
+
*/
|
|
19
|
+
export class PasskeyCard extends Base {
|
|
20
|
+
renderBody() {
|
|
21
|
+
return super.renderBody({
|
|
22
|
+
title: data => html `${data.credential_id}`,
|
|
23
|
+
subtitle: data => {
|
|
24
|
+
let options;
|
|
25
|
+
let key;
|
|
26
|
+
if (data.last_login_date && data.last_login_ua) {
|
|
27
|
+
options = {
|
|
28
|
+
last_login_date: new Date(data.last_login_date),
|
|
29
|
+
last_login_ua: uainfer.analyze(data.last_login_ua).toString(),
|
|
30
|
+
};
|
|
31
|
+
key = 'subtitle';
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
options = {};
|
|
35
|
+
key = 'subtitle_no_data';
|
|
36
|
+
}
|
|
37
|
+
return html `<foxy-i18n infer="" key=${key} .options=${options}></foxy-i18n>`;
|
|
38
|
+
},
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=PasskeyCard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PasskeyCard.js","sourceRoot":"","sources":["../../../../src/elements/public/PasskeyCard/PasskeyCard.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,iBAAiB,EAAE,wCAAqC;AACjE,OAAO,EAAE,WAAW,EAAE,0CAAuC;AAC7D,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAEhC,OAAO,OAAO,MAAM,wBAAwB,CAAC;AAE7C,MAAM,EAAE,GAAG,cAAc,CAAC;AAC1B,MAAM,IAAI,GAAG,iBAAiB,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;AAEhD;;;;;;;;;;;GAWG;AACH,MAAM,OAAO,WAAY,SAAQ,IAAU;IACzC,UAAU;QACR,OAAO,KAAK,CAAC,UAAU,CAAC;YACtB,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAA,GAAG,IAAI,CAAC,aAAa,EAAE;YAC1C,QAAQ,EAAE,IAAI,CAAC,EAAE;gBACf,IAAI,OAAY,CAAC;gBACjB,IAAI,GAAW,CAAC;gBAEhB,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,aAAa,EAAE;oBAC9C,OAAO,GAAG;wBACR,eAAe,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC;wBAC/C,aAAa,EAAE,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,QAAQ,EAAE;qBAC9D,CAAC;oBACF,GAAG,GAAG,UAAU,CAAC;iBAClB;qBAAM;oBACL,OAAO,GAAG,EAAE,CAAC;oBACb,GAAG,GAAG,kBAAkB,CAAC;iBAC1B;gBAED,OAAO,IAAI,CAAA,2BAA2B,GAAG,aAAa,OAAO,eAAe,CAAC;YAC/E,CAAC;SACF,CAAC,CAAC;IACL,CAAC;CACF","sourcesContent":["import type { TemplateResult } from 'lit-element';\nimport type { Data } from './types';\n\nimport { TranslatableMixin } from '../../../mixins/translatable';\nimport { TwoLineCard } from '../CustomFieldCard/TwoLineCard';\nimport { html } from 'lit-html';\n\nimport uainfer from 'uainfer/src/uainfer.js';\n\nconst NS = 'passkey-card';\nconst Base = TranslatableMixin(TwoLineCard, NS);\n\n/**\n * Basic card displaying a saved passkey.\n *\n * @slot title:before\n * @slot title:after\n *\n * @slot subtitle:before\n * @slot subtitle:after\n *\n * @element foxy-passkey-card\n * @since 1.24.0\n */\nexport class PasskeyCard extends Base<Data> {\n renderBody(): TemplateResult {\n return super.renderBody({\n title: data => html`${data.credential_id}`,\n subtitle: data => {\n let options: any;\n let key: string;\n\n if (data.last_login_date && data.last_login_ua) {\n options = {\n last_login_date: new Date(data.last_login_date),\n last_login_ua: uainfer.analyze(data.last_login_ua).toString(),\n };\n key = 'subtitle';\n } else {\n options = {};\n key = 'subtitle_no_data';\n }\n\n return html`<foxy-i18n infer=\"\" key=${key} .options=${options}></foxy-i18n>`;\n },\n });\n }\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/elements/public/PasskeyCard/index.ts"],"names":[],"mappings":"AAAA,8CAA2C;AAE3C,OAAO,EAAE,WAAW,EAAE,yBAAsB;AAE5C,cAAc,CAAC,MAAM,CAAC,mBAAmB,EAAE,WAAW,CAAC,CAAC;AAExD,OAAO,EAAE,WAAW,EAAE,CAAC","sourcesContent":["import '../../internal/InternalCard/index';\n\nimport { PasskeyCard } from './PasskeyCard';\n\ncustomElements.define('foxy-passkey-card', PasskeyCard);\n\nexport { PasskeyCard };\n"]}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { CollectionGraphLinks, CollectionGraphProps } from '@foxy.io/sdk/dist/types/core/defaults';
|
|
2
|
+
import type { Graph, Resource } from '@foxy.io/sdk/core';
|
|
3
|
+
import type { PasskeyCard } from './PasskeyCard';
|
|
4
|
+
import type { Renderer } from '../../../mixins/configurable';
|
|
5
|
+
import type { Rels } from '@foxy.io/sdk/backend';
|
|
6
|
+
export interface Passkeys extends Graph {
|
|
7
|
+
curie: 'fx:passkeys';
|
|
8
|
+
links: CollectionGraphLinks<Passkeys>;
|
|
9
|
+
props: CollectionGraphProps;
|
|
10
|
+
child: Passkey;
|
|
11
|
+
}
|
|
12
|
+
export interface Passkey extends Graph {
|
|
13
|
+
curie: 'fx:passkey';
|
|
14
|
+
links: {
|
|
15
|
+
'self': Passkey;
|
|
16
|
+
'fx:user': Rels.User;
|
|
17
|
+
'fx:passkeys': Passkeys;
|
|
18
|
+
};
|
|
19
|
+
props: {
|
|
20
|
+
last_login_date: string | null;
|
|
21
|
+
last_login_ua: string | null;
|
|
22
|
+
credential_id: string;
|
|
23
|
+
date_created: string | null;
|
|
24
|
+
date_modified: string | null;
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
export declare type Data = Resource<Passkey>;
|
|
28
|
+
export declare type Templates = {
|
|
29
|
+
'title:before'?: Renderer<PasskeyCard>;
|
|
30
|
+
'title:after'?: Renderer<PasskeyCard>;
|
|
31
|
+
'subtitle:before'?: Renderer<PasskeyCard>;
|
|
32
|
+
'subtitle:after'?: Renderer<PasskeyCard>;
|
|
33
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/elements/public/PasskeyCard/types.ts"],"names":[],"mappings":"","sourcesContent":["import type {\n CollectionGraphLinks,\n CollectionGraphProps,\n} from '@foxy.io/sdk/dist/types/core/defaults';\n\nimport type { Graph, Resource } from '@foxy.io/sdk/core';\nimport type { PasskeyCard } from './PasskeyCard';\nimport type { Renderer } from '../../../mixins/configurable';\nimport type { Rels } from '@foxy.io/sdk/backend';\n\nexport interface Passkeys extends Graph {\n curie: 'fx:passkeys';\n links: CollectionGraphLinks<Passkeys>;\n props: CollectionGraphProps;\n child: Passkey;\n}\n\nexport interface Passkey extends Graph {\n curie: 'fx:passkey';\n links: {\n 'self': Passkey;\n 'fx:user': Rels.User;\n 'fx:passkeys': Passkeys;\n };\n props: {\n last_login_date: string | null;\n last_login_ua: string | null;\n credential_id: string;\n date_created: string | null;\n date_modified: string | null;\n };\n}\n\nexport type Data = Resource<Passkey>;\n\nexport type Templates = {\n 'title:before'?: Renderer<PasskeyCard>;\n 'title:after'?: Renderer<PasskeyCard>;\n 'subtitle:before'?: Renderer<PasskeyCard>;\n 'subtitle:after'?: Renderer<PasskeyCard>;\n};\n"]}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { TemplateResult } from 'lit-html';
|
|
2
|
+
import type { Data } from './types';
|
|
3
|
+
import { InternalForm } from '../../internal/InternalForm/InternalForm';
|
|
4
|
+
import { BooleanSelector } from '@foxy.io/sdk/core';
|
|
5
|
+
declare const Base: typeof InternalForm & import("lit-element").Constructor<import("../../../mixins/translatable").TranslatableMixinHost> & {
|
|
6
|
+
defaultNS: string;
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* Form element for viewing and deleting passkeys (`fx:passkey`).
|
|
10
|
+
*
|
|
11
|
+
* @slot credential-id:before
|
|
12
|
+
* @slot credential-id:after
|
|
13
|
+
*
|
|
14
|
+
* @slot last-login-date:before
|
|
15
|
+
* @slot last-login-date:after
|
|
16
|
+
*
|
|
17
|
+
* @slot last-login-ua:before
|
|
18
|
+
* @slot last-login-ua:after
|
|
19
|
+
*
|
|
20
|
+
* @slot timestamps:before
|
|
21
|
+
* @slot timestamps:after
|
|
22
|
+
*
|
|
23
|
+
* @slot create:before
|
|
24
|
+
* @slot create:after
|
|
25
|
+
*
|
|
26
|
+
* @slot delete:before
|
|
27
|
+
* @slot delete:after
|
|
28
|
+
*
|
|
29
|
+
* @element foxy-passkey-form
|
|
30
|
+
* @since 1.24.0
|
|
31
|
+
*/
|
|
32
|
+
export declare class PasskeyForm extends Base<Data> {
|
|
33
|
+
get readonlySelector(): BooleanSelector;
|
|
34
|
+
renderBody(): TemplateResult;
|
|
35
|
+
}
|
|
36
|
+
export {};
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { TranslatableMixin } from "../../../mixins/translatable.js";
|
|
2
|
+
import { ResponsiveMixin } from "../../../mixins/responsive.js";
|
|
3
|
+
import { InternalForm } from "../../internal/InternalForm/InternalForm.js";
|
|
4
|
+
import { html } from 'lit-element';
|
|
5
|
+
import { BooleanSelector } from '@foxy.io/sdk/core';
|
|
6
|
+
const NS = 'passkey-form';
|
|
7
|
+
const Base = ResponsiveMixin(TranslatableMixin(InternalForm, NS));
|
|
8
|
+
/**
|
|
9
|
+
* Form element for viewing and deleting passkeys (`fx:passkey`).
|
|
10
|
+
*
|
|
11
|
+
* @slot credential-id:before
|
|
12
|
+
* @slot credential-id:after
|
|
13
|
+
*
|
|
14
|
+
* @slot last-login-date:before
|
|
15
|
+
* @slot last-login-date:after
|
|
16
|
+
*
|
|
17
|
+
* @slot last-login-ua:before
|
|
18
|
+
* @slot last-login-ua:after
|
|
19
|
+
*
|
|
20
|
+
* @slot timestamps:before
|
|
21
|
+
* @slot timestamps:after
|
|
22
|
+
*
|
|
23
|
+
* @slot create:before
|
|
24
|
+
* @slot create:after
|
|
25
|
+
*
|
|
26
|
+
* @slot delete:before
|
|
27
|
+
* @slot delete:after
|
|
28
|
+
*
|
|
29
|
+
* @element foxy-passkey-form
|
|
30
|
+
* @since 1.24.0
|
|
31
|
+
*/
|
|
32
|
+
export class PasskeyForm extends Base {
|
|
33
|
+
get readonlySelector() {
|
|
34
|
+
return new BooleanSelector(`credential-id last-login-date last-login-ua ${super.readonlySelector.toString()}`);
|
|
35
|
+
}
|
|
36
|
+
renderBody() {
|
|
37
|
+
if (!this.data) {
|
|
38
|
+
return html `
|
|
39
|
+
<div class="p-xl flex items-center justify-center">
|
|
40
|
+
<foxy-spinner infer="spinner" state="empty" layout="vertical"></foxy-spinner>
|
|
41
|
+
</div>
|
|
42
|
+
`;
|
|
43
|
+
}
|
|
44
|
+
return html `
|
|
45
|
+
<foxy-internal-text-control infer="credential-id"></foxy-internal-text-control>
|
|
46
|
+
<foxy-internal-text-control infer="last-login-date"></foxy-internal-text-control>
|
|
47
|
+
<foxy-internal-text-area-control infer="last-login-ua"></foxy-internal-text-area-control>
|
|
48
|
+
${super.renderBody()}
|
|
49
|
+
`;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=PasskeyForm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PasskeyForm.js","sourceRoot":"","sources":["../../../../src/elements/public/PasskeyForm/PasskeyForm.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,iBAAiB,EAAE,wCAAqC;AACjE,OAAO,EAAE,eAAe,EAAE,sCAAmC;AAC7D,OAAO,EAAE,YAAY,EAAE,oDAAiD;AACxE,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AACnC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,MAAM,EAAE,GAAG,cAAc,CAAC;AAC1B,MAAM,IAAI,GAAG,eAAe,CAAC,iBAAiB,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC,CAAC;AAElE;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,OAAO,WAAY,SAAQ,IAAU;IACzC,IAAI,gBAAgB;QAClB,OAAO,IAAI,eAAe,CACxB,+CAA+C,KAAK,CAAC,gBAAgB,CAAC,QAAQ,EAAE,EAAE,CACnF,CAAC;IACJ,CAAC;IAED,UAAU;QACR,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACd,OAAO,IAAI,CAAA;;;;OAIV,CAAC;SACH;QAED,OAAO,IAAI,CAAA;;;;QAIP,KAAK,CAAC,UAAU,EAAE;KACrB,CAAC;IACJ,CAAC;CACF","sourcesContent":["import type { TemplateResult } from 'lit-html';\nimport type { Data } from './types';\n\nimport { TranslatableMixin } from '../../../mixins/translatable';\nimport { ResponsiveMixin } from '../../../mixins/responsive';\nimport { InternalForm } from '../../internal/InternalForm/InternalForm';\nimport { html } from 'lit-element';\nimport { BooleanSelector } from '@foxy.io/sdk/core';\n\nconst NS = 'passkey-form';\nconst Base = ResponsiveMixin(TranslatableMixin(InternalForm, NS));\n\n/**\n * Form element for viewing and deleting passkeys (`fx:passkey`).\n *\n * @slot credential-id:before\n * @slot credential-id:after\n *\n * @slot last-login-date:before\n * @slot last-login-date:after\n *\n * @slot last-login-ua:before\n * @slot last-login-ua:after\n *\n * @slot timestamps:before\n * @slot timestamps:after\n *\n * @slot create:before\n * @slot create:after\n *\n * @slot delete:before\n * @slot delete:after\n *\n * @element foxy-passkey-form\n * @since 1.24.0\n */\nexport class PasskeyForm extends Base<Data> {\n get readonlySelector(): BooleanSelector {\n return new BooleanSelector(\n `credential-id last-login-date last-login-ua ${super.readonlySelector.toString()}`\n );\n }\n\n renderBody(): TemplateResult {\n if (!this.data) {\n return html`\n <div class=\"p-xl flex items-center justify-center\">\n <foxy-spinner infer=\"spinner\" state=\"empty\" layout=\"vertical\"></foxy-spinner>\n </div>\n `;\n }\n\n return html`\n <foxy-internal-text-control infer=\"credential-id\"></foxy-internal-text-control>\n <foxy-internal-text-control infer=\"last-login-date\"></foxy-internal-text-control>\n <foxy-internal-text-area-control infer=\"last-login-ua\"></foxy-internal-text-area-control>\n ${super.renderBody()}\n `;\n }\n}\n"]}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import "../../internal/InternalTextAreaControl/index.js";
|
|
2
|
+
import "../../internal/InternalTextControl/index.js";
|
|
3
|
+
import "../../internal/InternalForm/index.js";
|
|
4
|
+
import "../Spinner/index.js";
|
|
5
|
+
import { PasskeyForm } from "./PasskeyForm.js";
|
|
6
|
+
customElements.define('foxy-passkey-form', PasskeyForm);
|
|
7
|
+
export { PasskeyForm };
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/elements/public/PasskeyForm/index.ts"],"names":[],"mappings":"AAAA,yDAAsD;AACtD,qDAAkD;AAClD,8CAA2C;AAC3C,6BAA0B;AAE1B,OAAO,EAAE,WAAW,EAAE,yBAAsB;AAE5C,cAAc,CAAC,MAAM,CAAC,mBAAmB,EAAE,WAAW,CAAC,CAAC;AAExD,OAAO,EAAE,WAAW,EAAE,CAAC","sourcesContent":["import '../../internal/InternalTextAreaControl/index';\nimport '../../internal/InternalTextControl/index';\nimport '../../internal/InternalForm/index';\nimport '../Spinner/index';\n\nimport { PasskeyForm } from './PasskeyForm';\n\ncustomElements.define('foxy-passkey-form', PasskeyForm);\n\nexport { PasskeyForm };\n"]}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { PasskeyForm } from './PasskeyForm';
|
|
2
|
+
import type { Renderer } from '../../../mixins/configurable';
|
|
3
|
+
export type { Data } from '../PasskeyCard/types';
|
|
4
|
+
export declare type Templates = {
|
|
5
|
+
'credential-id:before'?: Renderer<PasskeyForm>;
|
|
6
|
+
'credential-id:after'?: Renderer<PasskeyForm>;
|
|
7
|
+
'last-login-date:before'?: Renderer<PasskeyForm>;
|
|
8
|
+
'last-login-date:after'?: Renderer<PasskeyForm>;
|
|
9
|
+
'last-login-ua:before'?: Renderer<PasskeyForm>;
|
|
10
|
+
'last-login-ua:after'?: Renderer<PasskeyForm>;
|
|
11
|
+
'timestamps:before'?: Renderer<PasskeyForm>;
|
|
12
|
+
'timestamps:after'?: Renderer<PasskeyForm>;
|
|
13
|
+
'create:before'?: Renderer<PasskeyForm>;
|
|
14
|
+
'create:after'?: Renderer<PasskeyForm>;
|
|
15
|
+
'delete:before'?: Renderer<PasskeyForm>;
|
|
16
|
+
'delete:after'?: Renderer<PasskeyForm>;
|
|
17
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/elements/public/PasskeyForm/types.ts"],"names":[],"mappings":"","sourcesContent":["import type { PasskeyForm } from './PasskeyForm';\nimport type { Renderer } from '../../../mixins/configurable';\n\nexport type { Data } from '../PasskeyCard/types';\n\nexport type Templates = {\n 'credential-id:before'?: Renderer<PasskeyForm>;\n 'credential-id:after'?: Renderer<PasskeyForm>;\n 'last-login-date:before'?: Renderer<PasskeyForm>;\n 'last-login-date:after'?: Renderer<PasskeyForm>;\n 'last-login-ua:before'?: Renderer<PasskeyForm>;\n 'last-login-ua:after'?: Renderer<PasskeyForm>;\n 'timestamps:before'?: Renderer<PasskeyForm>;\n 'timestamps:after'?: Renderer<PasskeyForm>;\n 'create:before'?: Renderer<PasskeyForm>;\n 'create:after'?: Renderer<PasskeyForm>;\n 'delete:before'?: Renderer<PasskeyForm>;\n 'delete:after'?: Renderer<PasskeyForm>;\n};\n"]}
|
|
@@ -87,7 +87,20 @@ class TransactionCard extends Base {
|
|
|
87
87
|
if (data) {
|
|
88
88
|
const amount = `${data.total_order} ${data.currency_code}`;
|
|
89
89
|
const currencyDisplay = this.__currencyDisplay;
|
|
90
|
+
const apiTypes = [
|
|
91
|
+
'subscription_cancellation',
|
|
92
|
+
'subscription_modification',
|
|
93
|
+
'subscription_renewal',
|
|
94
|
+
'updateinfo',
|
|
95
|
+
];
|
|
96
|
+
const type = apiTypes.includes(data.type)
|
|
97
|
+
? data.type
|
|
98
|
+
: 'fx:subscription' in data._links
|
|
99
|
+
? 'new_subscription'
|
|
100
|
+
: 'new_order';
|
|
90
101
|
content = html `
|
|
102
|
+
<foxy-i18n lang=${this.lang} key="type_${type}" ns=${this.ns}></foxy-i18n>
|
|
103
|
+
<span> • </span>
|
|
91
104
|
<foxy-i18n
|
|
92
105
|
options=${JSON.stringify({ amount, currencyDisplay })}
|
|
93
106
|
lang=${this.lang}
|
|
@@ -109,7 +122,7 @@ class TransactionCard extends Base {
|
|
|
109
122
|
`;
|
|
110
123
|
}
|
|
111
124
|
__renderStatus() {
|
|
112
|
-
var _a, _b, _c, _d;
|
|
125
|
+
var _a, _b, _c, _d, _e;
|
|
113
126
|
const specialIcons = {
|
|
114
127
|
completed: 'icons:done-all',
|
|
115
128
|
refunded: 'icons:restore',
|
|
@@ -123,13 +136,22 @@ class TransactionCard extends Base {
|
|
|
123
136
|
declined: 'text-error',
|
|
124
137
|
};
|
|
125
138
|
const status = ((_a = this.data) === null || _a === void 0 ? void 0 : _a.status) || 'completed';
|
|
139
|
+
const source = (_b = this.data) === null || _b === void 0 ? void 0 : _b.source.substring(0, 3).toUpperCase();
|
|
126
140
|
return html `
|
|
127
141
|
<div data-testid="status">
|
|
128
142
|
${this.renderTemplateOrSlot('status:before')}
|
|
129
143
|
|
|
130
144
|
<div class="text-tertiary text-s flex items-center space-x-s">
|
|
145
|
+
${source
|
|
146
|
+
? html `
|
|
147
|
+
<div class="bg-contrast-5 rounded-s px-xs" title=${this.t(`source_${source}`)}>
|
|
148
|
+
${source}
|
|
149
|
+
</div>
|
|
150
|
+
`
|
|
151
|
+
: ''}
|
|
152
|
+
|
|
131
153
|
<foxy-i18n
|
|
132
|
-
options=${JSON.stringify({ value: (
|
|
154
|
+
options=${JSON.stringify({ value: (_c = this.data) === null || _c === void 0 ? void 0 : _c.transaction_date })}
|
|
133
155
|
lang=${this.lang}
|
|
134
156
|
key="time"
|
|
135
157
|
ns=${this.ns}
|
|
@@ -138,9 +160,9 @@ class TransactionCard extends Base {
|
|
|
138
160
|
|
|
139
161
|
<iron-icon
|
|
140
162
|
data-testid="status-icon"
|
|
141
|
-
class="icon-inline text-l ${(
|
|
163
|
+
class="icon-inline text-l ${(_d = specialColors[status]) !== null && _d !== void 0 ? _d : 'text-tertiary'}"
|
|
142
164
|
title=${this.t(`transaction_${status}`)}
|
|
143
|
-
icon=${(
|
|
165
|
+
icon=${(_e = specialIcons[status]) !== null && _e !== void 0 ? _e : 'icons:schedule'}
|
|
144
166
|
>
|
|
145
167
|
</iron-icon>
|
|
146
168
|
</div>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TransactionCard.js","sourceRoot":"","sources":["../../../../src/elements/public/TransactionCard/TransactionCard.ts"],"names":[],"mappings":"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","sourcesContent":["import { Data, Templates } from './types';\nimport { TemplateResult, html } from 'lit-html';\n\nimport { ConfigurableMixin } from '../../../mixins/configurable';\nimport { NucleonElement } from '../NucleonElement/NucleonElement';\nimport { Rels } from '@foxy.io/sdk/backend';\nimport { Resource } from '@foxy.io/sdk/core';\nimport { ThemeableMixin } from '../../../mixins/themeable';\nimport { TranslatableMixin } from '../../../mixins/translatable';\nimport { classMap } from '../../../utils/class-map';\n\nconst NS = 'transaction-card';\nconst Base = ThemeableMixin(ConfigurableMixin(TranslatableMixin(NucleonElement, NS)));\n\n/**\n * Basic card displaying a transaction.\n *\n * @slot total:before\n * @slot total:after\n * @slot status:before\n * @slot status:after\n * @slot description:before\n * @slot description:after\n * @slot customer:before\n * @slot customer:after\n *\n * @element foxy-transaction-card\n * @since 1.12.0\n */\nclass TransactionCard extends Base<Data> {\n templates: Templates = {};\n\n private __currencyDisplay = '';\n\n render(): TemplateResult {\n const hiddenSelector = this.hiddenSelector;\n const hasTotal = !hiddenSelector.matches('total', true);\n const hasStatus = !hiddenSelector.matches('status', true);\n\n return html`\n <div\n aria-busy=${this.in('busy')}\n aria-live=\"polite\"\n class=\"relative leading-s font-lumo text-m\"\n >\n <div class=${classMap({ 'transition-opacity': true, 'opacity-0': !this.data })}>\n ${hasTotal || hasStatus\n ? html`\n <div class=\"flex items-center justify-between\">\n ${hasTotal ? this.__renderTotal() : ''} ${hasStatus ? this.__renderStatus() : ''}\n </div>\n `\n : ''}\n ${hiddenSelector.matches('description', true) ? '' : this.__renderDescription()}\n ${hiddenSelector.matches('customer', true) ? '' : this.__renderCustomer()}\n </div>\n\n <div\n class=${classMap({\n 'pointer-events-none absolute inset-0 flex transition-opacity': true,\n 'opacity-0': !!this.data,\n })}\n >\n <foxy-spinner\n data-testid=\"spinner\"\n state=${this.in('fail') ? 'error' : this.in({ idle: 'template' }) ? 'empty' : 'busy'}\n class=\"m-auto\"\n lang=${this.lang}\n ns=\"${this.ns} ${customElements.get('foxy-spinner')?.defaultNS ?? ''}\"\n >\n </foxy-spinner>\n </div>\n </div>\n `;\n }\n\n protected async _sendGet(): Promise<Data> {\n const transaction = await super._sendGet();\n const storeLink = transaction._links['fx:store']?.href;\n\n if (typeof storeLink === 'string') {\n const store = await super._fetch<Resource<Rels.Store>>(storeLink);\n this.__currencyDisplay = store.use_international_currency_symbol ? 'code' : 'symbol';\n } else {\n this.__currencyDisplay = 'symbol';\n }\n\n return transaction;\n }\n\n private __renderTotal() {\n const data = this.data;\n let content: TemplateResult;\n\n if (data) {\n const amount = `${data.total_order} ${data.currency_code}`;\n const currencyDisplay = this.__currencyDisplay;\n\n content = html`\n <foxy-i18n\n options=${JSON.stringify({ amount, currencyDisplay })}\n lang=${this.lang}\n key=\"price\"\n ns=${this.ns}\n >\n </foxy-i18n>\n `;\n } else {\n content = html`​`;\n }\n\n return html`\n <div data-testid=\"total\">\n ${this.renderTemplateOrSlot('total:before')}\n <div class=\"font-medium truncate\">${content}</div>\n ${this.renderTemplateOrSlot('total:after')}\n </div>\n `;\n }\n\n private __renderStatus() {\n const specialIcons: Record<string, string> = {\n completed: 'icons:done-all',\n refunded: 'icons:restore',\n rejected: 'icons:highlight-off',\n declined: 'icons:highlight-off',\n voided: 'icons:remove-circle-outline',\n };\n\n const specialColors: Record<string, string> = {\n completed: 'text-success',\n rejected: 'text-error',\n declined: 'text-error',\n };\n\n const status = this.data?.status || 'completed';\n\n return html`\n <div data-testid=\"status\">\n ${this.renderTemplateOrSlot('status:before')}\n\n <div class=\"text-tertiary text-s flex items-center space-x-s\">\n <foxy-i18n\n options=${JSON.stringify({ value: this.data?.transaction_date })}\n lang=${this.lang}\n key=\"time\"\n ns=${this.ns}\n >\n </foxy-i18n>\n\n <iron-icon\n data-testid=\"status-icon\"\n class=\"icon-inline text-l ${specialColors[status] ?? 'text-tertiary'}\"\n title=${this.t(`transaction_${status}`)}\n icon=${specialIcons[status] ?? 'icons:schedule'}\n >\n </iron-icon>\n </div>\n\n ${this.renderTemplateOrSlot('status:after')}\n </div>\n `;\n }\n\n private __renderDescription() {\n const items = this.data?._embedded?.['fx:items'];\n let content: TemplateResult;\n\n if (items) {\n const options = {\n most_expensive_item: [...items].sort((a, b) => a.price - b.price)[0],\n count_minus_one: items.length - 1,\n count: items.length,\n };\n\n content = html`\n <foxy-i18n\n options=${JSON.stringify(options)}\n lang=${this.lang}\n key=\"transaction_summary\"\n ns=${this.ns}\n >\n </foxy-i18n>\n `;\n } else {\n content = html`​`;\n }\n\n return html`\n <div data-testid=\"description\">\n ${this.renderTemplateOrSlot('description:before')}\n <div class=\"text-s text-secondary truncate\">${content}</div>\n ${this.renderTemplateOrSlot('description:after')}\n </div>\n `;\n }\n\n private __renderCustomer() {\n const data = this.data;\n const content = data\n ? html`${data.customer_first_name} ${data.customer_last_name} (${data.customer_email})`\n : html`​`;\n\n return html`\n <div data-testid=\"customer\">\n ${this.renderTemplateOrSlot('customer:before')}\n <div class=\"text-tertiary truncate text-s\">${content}</div>\n ${this.renderTemplateOrSlot('customer:after')}\n </div>\n `;\n }\n}\n\nexport { TransactionCard };\n"]}
|
|
1
|
+
{"version":3,"file":"TransactionCard.js","sourceRoot":"","sources":["../../../../src/elements/public/TransactionCard/TransactionCard.ts"],"names":[],"mappings":"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","sourcesContent":["import { Data, Templates } from './types';\nimport { TemplateResult, html } from 'lit-html';\n\nimport { ConfigurableMixin } from '../../../mixins/configurable';\nimport { NucleonElement } from '../NucleonElement/NucleonElement';\nimport { Rels } from '@foxy.io/sdk/backend';\nimport { Resource } from '@foxy.io/sdk/core';\nimport { ThemeableMixin } from '../../../mixins/themeable';\nimport { TranslatableMixin } from '../../../mixins/translatable';\nimport { classMap } from '../../../utils/class-map';\n\nconst NS = 'transaction-card';\nconst Base = ThemeableMixin(ConfigurableMixin(TranslatableMixin(NucleonElement, NS)));\n\n/**\n * Basic card displaying a transaction.\n *\n * @slot total:before\n * @slot total:after\n * @slot status:before\n * @slot status:after\n * @slot description:before\n * @slot description:after\n * @slot customer:before\n * @slot customer:after\n *\n * @element foxy-transaction-card\n * @since 1.12.0\n */\nclass TransactionCard extends Base<Data> {\n templates: Templates = {};\n\n private __currencyDisplay = '';\n\n render(): TemplateResult {\n const hiddenSelector = this.hiddenSelector;\n const hasTotal = !hiddenSelector.matches('total', true);\n const hasStatus = !hiddenSelector.matches('status', true);\n\n return html`\n <div\n aria-busy=${this.in('busy')}\n aria-live=\"polite\"\n class=\"relative leading-s font-lumo text-m\"\n >\n <div class=${classMap({ 'transition-opacity': true, 'opacity-0': !this.data })}>\n ${hasTotal || hasStatus\n ? html`\n <div class=\"flex items-center justify-between\">\n ${hasTotal ? this.__renderTotal() : ''} ${hasStatus ? this.__renderStatus() : ''}\n </div>\n `\n : ''}\n ${hiddenSelector.matches('description', true) ? '' : this.__renderDescription()}\n ${hiddenSelector.matches('customer', true) ? '' : this.__renderCustomer()}\n </div>\n\n <div\n class=${classMap({\n 'pointer-events-none absolute inset-0 flex transition-opacity': true,\n 'opacity-0': !!this.data,\n })}\n >\n <foxy-spinner\n data-testid=\"spinner\"\n state=${this.in('fail') ? 'error' : this.in({ idle: 'template' }) ? 'empty' : 'busy'}\n class=\"m-auto\"\n lang=${this.lang}\n ns=\"${this.ns} ${customElements.get('foxy-spinner')?.defaultNS ?? ''}\"\n >\n </foxy-spinner>\n </div>\n </div>\n `;\n }\n\n protected async _sendGet(): Promise<Data> {\n const transaction = await super._sendGet();\n const storeLink = transaction._links['fx:store']?.href;\n\n if (typeof storeLink === 'string') {\n const store = await super._fetch<Resource<Rels.Store>>(storeLink);\n this.__currencyDisplay = store.use_international_currency_symbol ? 'code' : 'symbol';\n } else {\n this.__currencyDisplay = 'symbol';\n }\n\n return transaction;\n }\n\n private __renderTotal() {\n const data = this.data;\n let content: TemplateResult;\n\n if (data) {\n const amount = `${data.total_order} ${data.currency_code}`;\n const currencyDisplay = this.__currencyDisplay;\n const apiTypes = [\n 'subscription_cancellation',\n 'subscription_modification',\n 'subscription_renewal',\n 'updateinfo',\n ];\n\n const type = apiTypes.includes(data.type)\n ? data.type\n : 'fx:subscription' in data._links\n ? 'new_subscription'\n : 'new_order';\n\n content = html`\n <foxy-i18n lang=${this.lang} key=\"type_${type}\" ns=${this.ns}></foxy-i18n>\n <span> • </span>\n <foxy-i18n\n options=${JSON.stringify({ amount, currencyDisplay })}\n lang=${this.lang}\n key=\"price\"\n ns=${this.ns}\n >\n </foxy-i18n>\n `;\n } else {\n content = html`​`;\n }\n\n return html`\n <div data-testid=\"total\">\n ${this.renderTemplateOrSlot('total:before')}\n <div class=\"font-medium truncate\">${content}</div>\n ${this.renderTemplateOrSlot('total:after')}\n </div>\n `;\n }\n\n private __renderStatus() {\n const specialIcons: Record<string, string> = {\n completed: 'icons:done-all',\n refunded: 'icons:restore',\n rejected: 'icons:highlight-off',\n declined: 'icons:highlight-off',\n voided: 'icons:remove-circle-outline',\n };\n\n const specialColors: Record<string, string> = {\n completed: 'text-success',\n rejected: 'text-error',\n declined: 'text-error',\n };\n\n const status = this.data?.status || 'completed';\n const source = this.data?.source.substring(0, 3).toUpperCase();\n\n return html`\n <div data-testid=\"status\">\n ${this.renderTemplateOrSlot('status:before')}\n\n <div class=\"text-tertiary text-s flex items-center space-x-s\">\n ${source\n ? html`\n <div class=\"bg-contrast-5 rounded-s px-xs\" title=${this.t(`source_${source}`)}>\n ${source}\n </div>\n `\n : ''}\n\n <foxy-i18n\n options=${JSON.stringify({ value: this.data?.transaction_date })}\n lang=${this.lang}\n key=\"time\"\n ns=${this.ns}\n >\n </foxy-i18n>\n\n <iron-icon\n data-testid=\"status-icon\"\n class=\"icon-inline text-l ${specialColors[status] ?? 'text-tertiary'}\"\n title=${this.t(`transaction_${status}`)}\n icon=${specialIcons[status] ?? 'icons:schedule'}\n >\n </iron-icon>\n </div>\n\n ${this.renderTemplateOrSlot('status:after')}\n </div>\n `;\n }\n\n private __renderDescription() {\n const items = this.data?._embedded?.['fx:items'];\n let content: TemplateResult;\n\n if (items) {\n const options = {\n most_expensive_item: [...items].sort((a, b) => a.price - b.price)[0],\n count_minus_one: items.length - 1,\n count: items.length,\n };\n\n content = html`\n <foxy-i18n\n options=${JSON.stringify(options)}\n lang=${this.lang}\n key=\"transaction_summary\"\n ns=${this.ns}\n >\n </foxy-i18n>\n `;\n } else {\n content = html`​`;\n }\n\n return html`\n <div data-testid=\"description\">\n ${this.renderTemplateOrSlot('description:before')}\n <div class=\"text-s text-secondary truncate\">${content}</div>\n ${this.renderTemplateOrSlot('description:after')}\n </div>\n `;\n }\n\n private __renderCustomer() {\n const data = this.data;\n const content = data\n ? html`${data.customer_first_name} ${data.customer_last_name} (${data.customer_email})`\n : html`​`;\n\n return html`\n <div data-testid=\"customer\">\n ${this.renderTemplateOrSlot('customer:before')}\n <div class=\"text-tertiary truncate text-s\">${content}</div>\n ${this.renderTemplateOrSlot('customer:after')}\n </div>\n `;\n }\n}\n\nexport { TransactionCard };\n"]}
|
|
@@ -4,7 +4,10 @@ import { Resource } from '@foxy.io/sdk/core';
|
|
|
4
4
|
import { TransactionCard } from './TransactionCard';
|
|
5
5
|
export declare type Data = Resource<Rels.Transaction, {
|
|
6
6
|
zoom: 'items';
|
|
7
|
-
}
|
|
7
|
+
}> & {
|
|
8
|
+
source: string;
|
|
9
|
+
type: string;
|
|
10
|
+
};
|
|
8
11
|
export declare type Templates = Partial<{
|
|
9
12
|
'total:before': Renderer<TransactionCard>;
|
|
10
13
|
'total:after': Renderer<TransactionCard>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/elements/public/TransactionCard/types.ts"],"names":[],"mappings":"","sourcesContent":["import { Rels } from '@foxy.io/sdk/backend';\nimport { Renderer } from '../../../mixins/configurable';\nimport { Resource } from '@foxy.io/sdk/core';\nimport { TransactionCard } from './TransactionCard';\n\nexport type Data = Resource<Rels.Transaction, { zoom: 'items' }
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/elements/public/TransactionCard/types.ts"],"names":[],"mappings":"","sourcesContent":["import { Rels } from '@foxy.io/sdk/backend';\nimport { Renderer } from '../../../mixins/configurable';\nimport { Resource } from '@foxy.io/sdk/core';\nimport { TransactionCard } from './TransactionCard';\n\nexport type Data = Resource<Rels.Transaction, { zoom: 'items' }> & { source: string; type: string };\n\nexport type Templates = Partial<{\n 'total:before': Renderer<TransactionCard>;\n 'total:after': Renderer<TransactionCard>;\n 'status:before': Renderer<TransactionCard>;\n 'status:after': Renderer<TransactionCard>;\n 'description:before': Renderer<TransactionCard>;\n 'description:after': Renderer<TransactionCard>;\n 'customer:before': Renderer<TransactionCard>;\n 'customer:after': Renderer<TransactionCard>;\n}>;\n"]}
|
|
@@ -11,24 +11,12 @@ export class WebhookCard extends TranslatableMixin(InternalCard, 'webhook-card')
|
|
|
11
11
|
renderBody() {
|
|
12
12
|
var _a, _b, _c, _d;
|
|
13
13
|
return html `
|
|
14
|
-
<div class="grid grid-cols-1
|
|
15
|
-
<p class="
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
</span>
|
|
14
|
+
<div class="grid grid-cols-1 leading-s -my-xs">
|
|
15
|
+
<p class="text-m truncate text-body font-medium">${(_a = this.data) === null || _a === void 0 ? void 0 : _a.name}​</p>
|
|
16
|
+
<p class="text-s truncate text-secondary">${(_b = this.data) === null || _b === void 0 ? void 0 : _b.url}​</p>
|
|
17
|
+
<p class="text-s truncate text-tertiary">
|
|
18
|
+
${(_c = this.data) === null || _c === void 0 ? void 0 : _c.format} • ${(_d = this.data) === null || _d === void 0 ? void 0 : _d.event_resource}​
|
|
20
19
|
</p>
|
|
21
|
-
|
|
22
|
-
<div class="flex items-center gap-s text-secondary">
|
|
23
|
-
<iron-icon class="icon-inline flex-shrink-0" icon="icons:language"></iron-icon>
|
|
24
|
-
<p class="truncate">${(_c = this.data) === null || _c === void 0 ? void 0 : _c.url}​</p>
|
|
25
|
-
</div>
|
|
26
|
-
|
|
27
|
-
<div class="flex items-center gap-s text-secondary">
|
|
28
|
-
<iron-icon class="icon-inline flex-shrink-0" icon="icons:settings-input-antenna">
|
|
29
|
-
</iron-icon>
|
|
30
|
-
<p class="truncate">${(_d = this.data) === null || _d === void 0 ? void 0 : _d.event_resource}​</p>
|
|
31
|
-
</div>
|
|
32
20
|
</div>
|
|
33
21
|
`;
|
|
34
22
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WebhookCard.js","sourceRoot":"","sources":["../../../../src/elements/public/WebhookCard/WebhookCard.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,oDAAiD;AACxE,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,iBAAiB,EAAE,wCAAqC;AAEjE;;;;;GAKG;AACH,MAAM,OAAO,WAAY,SAAQ,iBAAiB,CAAC,YAAY,EAAE,cAAc,CAAO;IACpF,UAAU;;QACR,OAAO,IAAI,CAAA
|
|
1
|
+
{"version":3,"file":"WebhookCard.js","sourceRoot":"","sources":["../../../../src/elements/public/WebhookCard/WebhookCard.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,oDAAiD;AACxE,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,iBAAiB,EAAE,wCAAqC;AAEjE;;;;;GAKG;AACH,MAAM,OAAO,WAAY,SAAQ,iBAAiB,CAAC,YAAY,EAAE,cAAc,CAAO;IACpF,UAAU;;QACR,OAAO,IAAI,CAAA;;2DAE4C,MAAA,IAAI,CAAC,IAAI,0CAAE,IAAI;oDACtB,MAAA,IAAI,CAAC,IAAI,0CAAE,GAAG;;YAEtD,MAAA,IAAI,CAAC,IAAI,0CAAE,MAAM,WAAW,MAAA,IAAI,CAAC,IAAI,0CAAE,cAAc;;;KAG5D,CAAC;IACJ,CAAC;CACF","sourcesContent":["import type { TemplateResult } from 'lit-html';\nimport type { Data } from './types';\n\nimport { InternalCard } from '../../internal/InternalCard/InternalCard';\nimport { html } from 'lit-html';\nimport { TranslatableMixin } from '../../../mixins/translatable';\n\n/**\n * Basic card displaying webhook (`fx:webhook`) info.\n *\n * @element foxy-webhook-card\n * @since 1.17.0\n */\nexport class WebhookCard extends TranslatableMixin(InternalCard, 'webhook-card')<Data> {\n renderBody(): TemplateResult {\n return html`\n <div class=\"grid grid-cols-1 leading-s -my-xs\">\n <p class=\"text-m truncate text-body font-medium\">${this.data?.name}​</p>\n <p class=\"text-s truncate text-secondary\">${this.data?.url}​</p>\n <p class=\"text-s truncate text-tertiary\">\n ${this.data?.format} • ${this.data?.event_resource}​\n </p>\n </div>\n `;\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/elements/public/WebhookCard/index.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/elements/public/WebhookCard/index.ts"],"names":[],"mappings":"AAAA,8CAA2C;AAE3C,OAAO,EAAE,WAAW,EAAE,yBAAsB;AAE5C,cAAc,CAAC,MAAM,CAAC,mBAAmB,EAAE,WAAW,CAAC,CAAC;AAExD,OAAO,EAAE,WAAW,EAAE,CAAC","sourcesContent":["import '../../internal/InternalCard/index';\n\nimport { WebhookCard } from './WebhookCard';\n\ncustomElements.define('foxy-webhook-card', WebhookCard);\n\nexport { WebhookCard };\n"]}
|
|
@@ -11,6 +11,8 @@ export { AttributeForm } from './AttributeForm/AttributeForm';
|
|
|
11
11
|
export { CancellationForm } from './CancellationForm/CancellationForm';
|
|
12
12
|
export { CartCard } from './CartCard/CartCard';
|
|
13
13
|
export { CartForm } from './CartForm/CartForm';
|
|
14
|
+
export { ClientCard } from './ClientCard/ClientCard';
|
|
15
|
+
export { ClientForm } from './ClientForm/ClientForm';
|
|
14
16
|
export { CollectionPage } from './CollectionPage/CollectionPage';
|
|
15
17
|
export { CollectionPages } from './CollectionPages/CollectionPages';
|
|
16
18
|
export { CopyToClipboard } from './CopyToClipboard/CopyToClipboard';
|
|
@@ -39,6 +41,8 @@ export { DownloadableForm } from './DownloadableForm/DownloadableForm';
|
|
|
39
41
|
export { EmailTemplateCard } from './EmailTemplateCard/EmailTemplateCard';
|
|
40
42
|
export { EmailTemplateForm } from './EmailTemplateForm/EmailTemplateForm';
|
|
41
43
|
export { ErrorEntryCard } from './ErrorEntryCard/ErrorEntryCard';
|
|
44
|
+
export { FilterAttributeCard } from './FilterAttributeCard/FilterAttributeCard';
|
|
45
|
+
export { FilterAttributeForm } from './FilterAttributeForm/FilterAttributeForm';
|
|
42
46
|
export { FormDialog } from './FormDialog/FormDialog';
|
|
43
47
|
export { GenerateCodesForm } from './GenerateCodesForm/GenerateCodesForm';
|
|
44
48
|
export { GiftCardCard } from './GiftCardCard/GiftCardCard';
|
|
@@ -59,6 +63,8 @@ export { ItemOptionForm } from './ItemOptionForm/ItemOptionForm';
|
|
|
59
63
|
export { ItemsForm, Item } from './ItemsForm/ItemsForm';
|
|
60
64
|
export { NucleonElement } from './NucleonElement/NucleonElement';
|
|
61
65
|
export { Pagination } from './Pagination/Pagination';
|
|
66
|
+
export { PasskeyCard } from './PasskeyCard/PasskeyCard';
|
|
67
|
+
export { PasskeyForm } from './PasskeyForm/PasskeyForm';
|
|
62
68
|
export { PaymentCard } from './PaymentCard/PaymentCard';
|
|
63
69
|
export { ShipmentCard } from './ShipmentCard/ShipmentCard';
|
|
64
70
|
export { ShippingMethodCard } from './ShippingMethodCard/ShippingMethodCard';
|
|
@@ -11,6 +11,8 @@ export { AttributeForm } from './AttributeForm/index';
|
|
|
11
11
|
export { CancellationForm } from './CancellationForm/index';
|
|
12
12
|
export { CartCard } from './CartCard/index';
|
|
13
13
|
export { CartForm } from './CartForm/index';
|
|
14
|
+
export { ClientCard } from './ClientCard/index';
|
|
15
|
+
export { ClientForm } from './ClientForm/index';
|
|
14
16
|
export { CollectionPage } from './CollectionPage/index';
|
|
15
17
|
export { CollectionPages } from './CollectionPages/index';
|
|
16
18
|
export { CopyToClipboard } from './CopyToClipboard/index';
|
|
@@ -39,6 +41,8 @@ export { DownloadableForm } from './DownloadableForm/index';
|
|
|
39
41
|
export { EmailTemplateCard } from './EmailTemplateCard/index';
|
|
40
42
|
export { EmailTemplateForm } from './EmailTemplateForm/index';
|
|
41
43
|
export { ErrorEntryCard } from './ErrorEntryCard/index';
|
|
44
|
+
export { FilterAttributeCard } from './FilterAttributeCard/index';
|
|
45
|
+
export { FilterAttributeForm } from './FilterAttributeForm/index';
|
|
42
46
|
export { FormDialog } from './FormDialog/index';
|
|
43
47
|
export { GenerateCodesForm } from './GenerateCodesForm/index';
|
|
44
48
|
export { GiftCardCard } from './GiftCardCard/index';
|
|
@@ -59,6 +63,8 @@ export { ItemOptionForm } from './ItemOptionForm/index';
|
|
|
59
63
|
export { ItemsForm, Item } from './ItemsForm/index';
|
|
60
64
|
export { NucleonElement } from './NucleonElement/index';
|
|
61
65
|
export { Pagination } from './Pagination/index';
|
|
66
|
+
export { PasskeyCard } from './PasskeyCard/index';
|
|
67
|
+
export { PasskeyForm } from './PasskeyForm/index';
|
|
62
68
|
export { PaymentCard } from './PaymentCard/index';
|
|
63
69
|
export { ShipmentCard } from './ShipmentCard/index';
|
|
64
70
|
export { ShippingMethodCard } from './ShippingMethodCard/index';
|
|
@@ -11,6 +11,8 @@ export { AttributeForm } from "./AttributeForm/index.js";
|
|
|
11
11
|
export { CancellationForm } from "./CancellationForm/index.js";
|
|
12
12
|
export { CartCard } from "./CartCard/index.js";
|
|
13
13
|
export { CartForm } from "./CartForm/index.js";
|
|
14
|
+
export { ClientCard } from "./ClientCard/index.js";
|
|
15
|
+
export { ClientForm } from "./ClientForm/index.js";
|
|
14
16
|
export { CollectionPage } from "./CollectionPage/index.js";
|
|
15
17
|
export { CollectionPages } from "./CollectionPages/index.js";
|
|
16
18
|
export { CopyToClipboard } from "./CopyToClipboard/index.js";
|
|
@@ -39,6 +41,8 @@ export { DownloadableForm } from "./DownloadableForm/index.js";
|
|
|
39
41
|
export { EmailTemplateCard } from "./EmailTemplateCard/index.js";
|
|
40
42
|
export { EmailTemplateForm } from "./EmailTemplateForm/index.js";
|
|
41
43
|
export { ErrorEntryCard } from "./ErrorEntryCard/index.js";
|
|
44
|
+
export { FilterAttributeCard } from "./FilterAttributeCard/index.js";
|
|
45
|
+
export { FilterAttributeForm } from "./FilterAttributeForm/index.js";
|
|
42
46
|
export { FormDialog } from "./FormDialog/index.js";
|
|
43
47
|
export { GenerateCodesForm } from "./GenerateCodesForm/index.js";
|
|
44
48
|
export { GiftCardCard } from "./GiftCardCard/index.js";
|
|
@@ -59,6 +63,8 @@ export { ItemOptionForm } from "./ItemOptionForm/index.js";
|
|
|
59
63
|
export { ItemsForm, Item } from "./ItemsForm/index.js";
|
|
60
64
|
export { NucleonElement } from "./NucleonElement/index.js";
|
|
61
65
|
export { Pagination } from "./Pagination/index.js";
|
|
66
|
+
export { PasskeyCard } from "./PasskeyCard/index.js";
|
|
67
|
+
export { PasskeyForm } from "./PasskeyForm/index.js";
|
|
62
68
|
export { PaymentCard } from "./PaymentCard/index.js";
|
|
63
69
|
export { ShipmentCard } from "./ShipmentCard/index.js";
|
|
64
70
|
export { ShippingMethodCard } from "./ShippingMethodCard/index.js";
|