@vtex/faststore 0.0.6 → 0.0.8
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/CHANGELOG.md +99 -0
- package/dist/actions.json +152 -1
- package/dist/catalog.json +2541 -1278
- package/dist/cli/UnreachableCaseError-Crd168Vu.js +10 -0
- package/dist/cli/UnreachableCaseError-Crd168Vu.js.map +1 -0
- package/dist/cli/cacheControl-CEojH_TM.js +158 -0
- package/dist/cli/cacheControl-CEojH_TM.js.map +1 -0
- package/dist/cli/cachePolicy-m2vASMRW.js +26 -0
- package/dist/cli/cachePolicy-m2vASMRW.js.map +1 -0
- package/dist/cli/computeCoreSchemaHash-DPJZj-qJ.js +10 -0
- package/dist/cli/computeCoreSchemaHash-DPJZj-qJ.js.map +1 -0
- package/dist/cli/default-BCQHcwbL.js +253 -0
- package/dist/cli/default-BCQHcwbL.js.map +1 -0
- package/dist/cli/disableSuggestions-yO9UqiWn.js +21 -0
- package/dist/cli/disableSuggestions-yO9UqiWn.js.map +1 -0
- package/dist/cli/dist-C1JhdHfo.js +2001 -0
- package/dist/cli/dist-C1JhdHfo.js.map +1 -0
- package/dist/cli/graphql-DG9thCDG.js +14589 -0
- package/dist/cli/graphql-DG9thCDG.js.map +1 -0
- package/dist/cli/index.d.ts +799 -0
- package/dist/cli/index.js +36459 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/index.min-BsIHDfFK.js +613 -0
- package/dist/cli/index.min-BsIHDfFK.js.map +1 -0
- package/dist/cli/inlineTrace-uLgOJ3TH.js +52 -0
- package/dist/cli/inlineTrace-uLgOJ3TH.js.map +1 -0
- package/dist/cli/internalPlugin-DnuwN4_4.js +11 -0
- package/dist/cli/internalPlugin-DnuwN4_4.js.map +1 -0
- package/dist/cli/packageVersion-DQAnIEil.js +6 -0
- package/dist/cli/packageVersion-DQAnIEil.js.map +1 -0
- package/dist/cli/rolldown-runtime-BMI-E3GI.js +44 -0
- package/dist/cli/schemaIsSubgraph-DoGh3OYj.js +17 -0
- package/dist/cli/schemaIsSubgraph-DoGh3OYj.js.map +1 -0
- package/dist/cli/schemaReporting-K-me-3-v.js +199 -0
- package/dist/cli/schemaReporting-K-me-3-v.js.map +1 -0
- package/dist/cli/server-runtime.js +49879 -0
- package/dist/cli/server-runtime.js.map +1 -0
- package/dist/cli/traceTreeBuilder-BIcV2U7b.js +9118 -0
- package/dist/cli/traceTreeBuilder-BIcV2U7b.js.map +1 -0
- package/dist/cli/usageReporting-Bpl8vSZX.js +10201 -0
- package/dist/cli/usageReporting-Bpl8vSZX.js.map +1 -0
- package/dist/cli/v4-CBhFvC49.js +42 -0
- package/dist/cli/v4-CBhFvC49.js.map +1 -0
- package/dist/client.d.ts +5 -1
- package/dist/client.js +5 -1
- package/dist/components.d.ts +38 -9
- package/dist/components.js +42 -13
- package/dist/content-types.json +616 -0
- package/dist/core/dist/define-component.d.ts +43 -1
- package/dist/core/dist/index.d.ts +2 -2
- package/dist/docs/account-access-gate.md +4 -4
- package/dist/docs/account-address-book.md +519 -0
- package/dist/docs/account-entry-point.md +1 -1
- package/dist/docs/account-menu-identity.md +160 -0
- package/dist/docs/account-menu.md +107 -24
- package/dist/docs/alert-dialog.md +2 -2
- package/dist/docs/avatar.md +103 -0
- package/dist/docs/billing-address.md +17 -9
- package/dist/docs/card-entry.md +37 -6
- package/dist/docs/cardholder-document.md +16 -14
- package/dist/docs/cart-item.md +1 -1
- package/dist/docs/cart.md +8 -8
- package/dist/docs/client-profile-fieldset.md +7 -5
- package/dist/docs/copy-text.md +84 -0
- package/dist/docs/document-field.md +8 -8
- package/dist/docs/footer-link-group.md +2 -2
- package/dist/docs/header-root.md +1 -1
- package/dist/docs/incentives.md +2 -2
- package/dist/docs/logo.md +5 -5
- package/dist/docs/my-account-profile.md +5 -5
- package/dist/docs/navigation-link-list.md +2 -2
- package/dist/docs/navigation-link.md +3 -3
- package/dist/docs/order-cancel.md +52 -0
- package/dist/docs/order-delivery-address.md +63 -0
- package/dist/docs/order-delivery-group.md +83 -0
- package/dist/docs/order-details-back.md +41 -0
- package/dist/docs/order-details-header.md +48 -0
- package/dist/docs/order-list-row.md +46 -0
- package/dist/docs/order-list-search.md +101 -0
- package/dist/docs/order-list-views.md +97 -0
- package/dist/docs/order-list.md +94 -0
- package/dist/docs/order-payment.md +94 -0
- package/dist/docs/order-placed-date.md +49 -0
- package/dist/docs/order-placed-payment-summary.md +13 -15
- package/dist/docs/order-placed.md +225 -0
- package/dist/docs/order-progress.md +88 -0
- package/dist/docs/order-status-badge.md +91 -0
- package/dist/docs/order-summary.md +53 -0
- package/dist/docs/payment-method-badges.md +14 -3
- package/dist/docs/place-order.md +13 -9
- package/dist/docs/product-shelf.md +20 -13
- package/dist/docs/saved-cards.md +2 -2
- package/dist/docs/select.md +19 -6
- package/dist/docs/session.md +1 -1
- package/dist/docs/shipping-address.md +1 -1
- package/dist/docs/sign-in-redirect.md +6 -6
- package/dist/docs/toast.md +7 -3
- package/dist/index.d.ts +7 -3
- package/dist/index.js +2 -1
- package/dist/internal/client.d.ts +6 -1
- package/dist/internal/client.js +8 -3
- package/dist/internal/content.d.ts +2 -2
- package/dist/internal/server.d.ts +8 -1
- package/dist/internal/server.js +8 -1
- package/dist/matter/account-access-gate/account-access-gate.d.ts +2 -1
- package/dist/matter/account-access-gate/account-access-gate.js +19 -16
- package/dist/matter/account-access-gate/account-access-gate.js.map +1 -1
- package/dist/matter/account-address-book/account-address-book-delete.d.ts +60 -0
- package/dist/matter/account-address-book/account-address-book-delete.js +184 -0
- package/dist/matter/account-address-book/account-address-book-delete.js.map +1 -0
- package/dist/matter/account-address-book/account-address-book-deliverability.d.ts +19 -0
- package/dist/matter/account-address-book/account-address-book-deliverability.js +50 -0
- package/dist/matter/account-address-book/account-address-book-deliverability.js.map +1 -0
- package/dist/matter/account-address-book/account-address-book-form-parts.d.ts +42 -0
- package/dist/matter/account-address-book/account-address-book-form-parts.js +146 -0
- package/dist/matter/account-address-book/account-address-book-form-parts.js.map +1 -0
- package/dist/matter/account-address-book/account-address-book-profile-notice.d.ts +25 -0
- package/dist/matter/account-address-book/account-address-book-profile-notice.js +72 -0
- package/dist/matter/account-address-book/account-address-book-profile-notice.js.map +1 -0
- package/dist/matter/account-address-book/account-address-book.d.ts +120 -0
- package/dist/matter/account-address-book/account-address-book.js +469 -0
- package/dist/matter/account-address-book/account-address-book.js.map +1 -0
- package/dist/matter/account-address-book/account-address-country-switch.js +59 -0
- package/dist/matter/account-address-book/account-address-country-switch.js.map +1 -0
- package/dist/matter/account-address-book/account-address-country.d.ts +36 -0
- package/dist/matter/account-address-book/account-address-country.js +151 -0
- package/dist/matter/account-address-book/account-address-country.js.map +1 -0
- package/dist/matter/account-address-book/account-address-first-line.js +11 -0
- package/dist/matter/account-address-book/account-address-first-line.js.map +1 -0
- package/dist/matter/account-address-book/account-address-form-context.d.ts +55 -0
- package/dist/matter/account-address-book/account-address-form-context.js +14 -0
- package/dist/matter/account-address-book/account-address-form-context.js.map +1 -0
- package/dist/matter/account-address-book/account-address-form.d.ts +85 -0
- package/dist/matter/account-address-book/account-address-form.js +946 -0
- package/dist/matter/account-address-book/account-address-form.js.map +1 -0
- package/dist/matter/account-address-book/account-address-postal-autofill.js +189 -0
- package/dist/matter/account-address-book/account-address-postal-autofill.js.map +1 -0
- package/dist/matter/account-address-book/account-address-record.d.ts +26 -0
- package/dist/matter/account-address-book/account-address-record.js +138 -0
- package/dist/matter/account-address-book/account-address-record.js.map +1 -0
- package/dist/matter/account-entry-point/account-entry-point.js +11 -11
- package/dist/matter/account-entry-point/account-entry-point.js.map +1 -1
- package/dist/matter/account-menu/account-menu.d.ts +77 -3
- package/dist/matter/account-menu/account-menu.js +252 -19
- package/dist/matter/account-menu/account-menu.js.map +1 -1
- package/dist/matter/account-menu/sign-out-failure.js +50 -0
- package/dist/matter/account-menu/sign-out-failure.js.map +1 -0
- package/dist/matter/account-menu-identity/account-menu-identity.d.ts +21 -0
- package/dist/matter/account-menu-identity/account-menu-identity.js +88 -0
- package/dist/matter/account-menu-identity/account-menu-identity.js.map +1 -0
- package/dist/matter/billing-address/billing-address.d.ts +30 -17
- package/dist/matter/billing-address/billing-address.js +128 -33
- package/dist/matter/billing-address/billing-address.js.map +1 -1
- package/dist/matter/breadcrumb/breadcrumb.js +2 -2
- package/dist/matter/breadcrumb/breadcrumb.js.map +1 -1
- package/dist/matter/card-entry/card-capture.js +4 -3
- package/dist/matter/card-entry/card-capture.js.map +1 -1
- package/dist/matter/card-entry/card-entry.d.ts +5 -3
- package/dist/matter/card-entry/card-entry.js +78 -27
- package/dist/matter/card-entry/card-entry.js.map +1 -1
- package/dist/matter/cardholder-document/cardholder-document.d.ts +10 -9
- package/dist/matter/cardholder-document/cardholder-document.js +36 -16
- package/dist/matter/cardholder-document/cardholder-document.js.map +1 -1
- package/dist/matter/cart/cart.d.ts +7 -2
- package/dist/matter/cart/cart.js +29 -26
- package/dist/matter/cart/cart.js.map +1 -1
- package/dist/matter/cart-item/cart-item.js +2 -2
- package/dist/matter/cart-item/cart-item.js.map +1 -1
- package/dist/matter/client-preferences/client-preferences-fieldset.js +2 -2
- package/dist/matter/client-profile-form/client-profile-fieldset.js +9 -6
- package/dist/matter/client-profile-form/client-profile-fieldset.js.map +1 -1
- package/dist/matter/identity-edit/identity-edit.js +3 -3
- package/dist/matter/identity-edit/identity-edit.js.map +1 -1
- package/dist/matter/identity-summary/identity-summary.js +4 -3
- package/dist/matter/identity-summary/identity-summary.js.map +1 -1
- package/dist/matter/my-account-profile/my-account-profile.d.ts +6 -3
- package/dist/matter/my-account-profile/my-account-profile.js +6 -5
- package/dist/matter/my-account-profile/my-account-profile.js.map +1 -1
- package/dist/matter/order-cancel/order-cancel.d.ts +110 -0
- package/dist/matter/order-cancel/order-cancel.js +344 -0
- package/dist/matter/order-cancel/order-cancel.js.map +1 -0
- package/dist/matter/order-delivery-address/order-delivery-address.d.ts +73 -0
- package/dist/matter/order-delivery-address/order-delivery-address.js +172 -0
- package/dist/matter/order-delivery-address/order-delivery-address.js.map +1 -0
- package/dist/matter/order-delivery-group/order-delivery-group.d.ts +128 -0
- package/dist/matter/order-delivery-group/order-delivery-group.js +408 -0
- package/dist/matter/order-delivery-group/order-delivery-group.js.map +1 -0
- package/dist/matter/order-details-header/order-details-header.d.ts +104 -0
- package/dist/matter/order-details-header/order-details-header.js +190 -0
- package/dist/matter/order-details-header/order-details-header.js.map +1 -0
- package/dist/matter/order-list/customer-orders-filter.d.ts +12 -0
- package/dist/matter/order-list/customer-orders-filter.js +30 -0
- package/dist/matter/order-list/customer-orders-filter.js.map +1 -0
- package/dist/matter/order-list/order-list.d.ts +121 -0
- package/dist/matter/order-list/order-list.js +395 -0
- package/dist/matter/order-list/order-list.js.map +1 -0
- package/dist/matter/order-list-row/order-list-row.d.ts +44 -0
- package/dist/matter/order-list-row/order-list-row.js +127 -0
- package/dist/matter/order-list-row/order-list-row.js.map +1 -0
- package/dist/matter/order-list-search/order-list-search.d.ts +72 -0
- package/dist/matter/order-list-search/order-list-search.js +296 -0
- package/dist/matter/order-list-search/order-list-search.js.map +1 -0
- package/dist/matter/order-list-views/order-list-views.d.ts +65 -0
- package/dist/matter/order-list-views/order-list-views.js +154 -0
- package/dist/matter/order-list-views/order-list-views.js.map +1 -0
- package/dist/matter/order-payment/order-payment.d.ts +83 -0
- package/dist/matter/order-payment/order-payment.js +258 -0
- package/dist/matter/order-payment/order-payment.js.map +1 -0
- package/dist/matter/order-placed/order-placed-deliveries.d.ts +145 -0
- package/dist/matter/order-placed/order-placed-deliveries.js +380 -0
- package/dist/matter/order-placed/order-placed-deliveries.js.map +1 -0
- package/dist/matter/order-placed/order-placed.d.ts +122 -0
- package/dist/matter/order-placed/order-placed.js +452 -0
- package/dist/matter/order-placed/order-placed.js.map +1 -0
- package/dist/matter/order-placed-date/order-placed-date.d.ts +45 -0
- package/dist/matter/order-placed-date/order-placed-date.js +92 -0
- package/dist/matter/order-placed-date/order-placed-date.js.map +1 -0
- package/dist/matter/order-placed-payment-summary/order-placed-payment-summary.d.ts +5 -8
- package/dist/matter/order-placed-payment-summary/order-placed-payment-summary.js +29 -81
- package/dist/matter/order-placed-payment-summary/order-placed-payment-summary.js.map +1 -1
- package/dist/matter/order-progress/order-progress.d.ts +85 -0
- package/dist/matter/order-progress/order-progress.js +203 -0
- package/dist/matter/order-progress/order-progress.js.map +1 -0
- package/dist/matter/order-summary/order-summary.d.ts +81 -0
- package/dist/matter/order-summary/order-summary.js +192 -0
- package/dist/matter/order-summary/order-summary.js.map +1 -0
- package/dist/matter/payment/cardholder-document-rule.d.ts +35 -0
- package/dist/matter/payment/cardholder-document-rule.js +35 -0
- package/dist/matter/payment/cardholder-document-rule.js.map +1 -0
- package/dist/matter/payment/payment-card-capture.js +38 -23
- package/dist/matter/payment/payment-card-capture.js.map +1 -1
- package/dist/matter/payment/payment-controller.js +12 -0
- package/dist/matter/payment/payment-controller.js.map +1 -1
- package/dist/matter/payment/payment-method-badges.js +4 -2
- package/dist/matter/payment/payment-method-badges.js.map +1 -1
- package/dist/matter/payment/payment.js +12 -0
- package/dist/matter/payment/payment.js.map +1 -1
- package/dist/matter/payment/use-payment-method-selection.d.ts +39 -0
- package/dist/matter/payment/use-payment-method-selection.js +30 -2
- package/dist/matter/payment/use-payment-method-selection.js.map +1 -1
- package/dist/matter/payment/use-payment-submit-gate.d.ts +16 -2
- package/dist/matter/payment/use-payment-submit-gate.js +42 -14
- package/dist/matter/payment/use-payment-submit-gate.js.map +1 -1
- package/dist/matter/place-order/place-order.d.ts +12 -7
- package/dist/matter/place-order/place-order.js +126 -103
- package/dist/matter/place-order/place-order.js.map +1 -1
- package/dist/matter/pricing/pricing.js +5 -5
- package/dist/matter/pricing/pricing.js.map +1 -1
- package/dist/matter/product-shelf/product-shelf.d.ts +61 -31
- package/dist/matter/product-shelf/product-shelf.js +157 -57
- package/dist/matter/product-shelf/product-shelf.js.map +1 -1
- package/dist/matter/region/region.js +1 -1
- package/dist/matter/saved-cards/saved-cards.js +27 -15
- package/dist/matter/saved-cards/saved-cards.js.map +1 -1
- package/dist/matter/session/session.js +2 -2
- package/dist/matter/session/session.js.map +1 -1
- package/dist/matter/shipping-address/country-descriptors.d.ts +1 -0
- package/dist/matter/shipping-address/country-descriptors.js +23 -1
- package/dist/matter/shipping-address/country-descriptors.js.map +1 -1
- package/dist/matter/shipping-address/shipping-address.js +63 -15
- package/dist/matter/shipping-address/shipping-address.js.map +1 -1
- package/dist/matter/shipping-simulator/shipping-simulator.d.ts +1 -1
- package/dist/matter/shipping-simulator/shipping-simulator.js.map +1 -1
- package/dist/matter/sign-in-redirect/sign-in-redirect.js +48 -10
- package/dist/matter/sign-in-redirect/sign-in-redirect.js.map +1 -1
- package/dist/matter/variant-selector/variant-selector.js +2 -2
- package/dist/matter/variant-selector/variant-selector.js.map +1 -1
- package/dist/particles/address-summary/address-summary.js +2 -2
- package/dist/particles/address-summary/address-summary.js.map +1 -1
- package/dist/particles/alert-dialog/alert-dialog.d.ts +5 -1
- package/dist/particles/alert-dialog/alert-dialog.js +5 -2
- package/dist/particles/alert-dialog/alert-dialog.js.map +1 -1
- package/dist/particles/avatar/avatar.d.ts +17 -0
- package/dist/particles/avatar/avatar.js +65 -0
- package/dist/particles/avatar/avatar.js.map +1 -0
- package/dist/particles/copy-text/copy-text.d.ts +28 -0
- package/dist/particles/copy-text/copy-text.js +140 -0
- package/dist/particles/copy-text/copy-text.js.map +1 -0
- package/dist/particles/document-field/document-field.d.ts +34 -5
- package/dist/particles/document-field/document-field.js +115 -19
- package/dist/particles/document-field/document-field.js.map +1 -1
- package/dist/particles/field/field.js +1 -1
- package/dist/particles/field/field.js.map +1 -1
- package/dist/particles/footer-link-group/footer-link-group.d.ts +6 -2
- package/dist/particles/footer-link-group/footer-link-group.js +18 -7
- package/dist/particles/footer-link-group/footer-link-group.js.map +1 -1
- package/dist/particles/incentives/incentives.d.ts +6 -2
- package/dist/particles/incentives/incentives.js +7 -2
- package/dist/particles/incentives/incentives.js.map +1 -1
- package/dist/particles/logo/logo.d.ts +3 -2
- package/dist/particles/logo/logo.js +20 -8
- package/dist/particles/logo/logo.js.map +1 -1
- package/dist/particles/navigation-link/navigation-link.d.ts +2 -3
- package/dist/particles/navigation-link/navigation-link.js +4 -4
- package/dist/particles/navigation-link/navigation-link.js.map +1 -1
- package/dist/particles/navigation-link-list/navigation-link-list.d.ts +6 -2
- package/dist/particles/navigation-link-list/navigation-link-list.js +18 -7
- package/dist/particles/navigation-link-list/navigation-link-list.js.map +1 -1
- package/dist/particles/order-details-back/order-details-back.d.ts +28 -0
- package/dist/particles/order-details-back/order-details-back.js +52 -0
- package/dist/particles/order-details-back/order-details-back.js.map +1 -0
- package/dist/particles/order-status-badge/order-status-badge.d.ts +19 -0
- package/dist/particles/order-status-badge/order-status-badge.js +50 -0
- package/dist/particles/order-status-badge/order-status-badge.js.map +1 -0
- package/dist/particles/phone-field/phone-field.js +2 -2
- package/dist/particles/phone-field/phone-field.js.map +1 -1
- package/dist/particles/select/select.js +6 -6
- package/dist/particles/select/select.js.map +1 -1
- package/dist/particles/toast/toast.d.ts +1 -1
- package/dist/particles/toast/toast.js +32 -6
- package/dist/particles/toast/toast.js.map +1 -1
- package/dist/schema.graphql +1079 -54
- package/dist/sdk/actions/address-action-provider.d.ts +16 -0
- package/dist/sdk/actions/address-action-provider.js +20 -0
- package/dist/sdk/actions/address-action-provider.js.map +1 -0
- package/dist/sdk/actions/analytics-action-provider.js +1 -1
- package/dist/sdk/actions/index.d.ts +3 -1
- package/dist/sdk/actions/index.js +3 -1
- package/dist/sdk/actions/order-action-provider.d.ts +12 -0
- package/dist/sdk/actions/order-action-provider.js +16 -0
- package/dist/sdk/actions/order-action-provider.js.map +1 -0
- package/dist/sdk/actions/types.d.ts +6 -2
- package/dist/sdk/address/address-fields.js +38 -0
- package/dist/sdk/address/address-fields.js.map +1 -0
- package/dist/sdk/address/checkout-readiness.js +17 -0
- package/dist/sdk/address/checkout-readiness.js.map +1 -0
- package/dist/sdk/address/constants.js +60 -0
- package/dist/sdk/address/constants.js.map +1 -0
- package/dist/sdk/address/country-display.js +19 -0
- package/dist/sdk/address/country-display.js.map +1 -0
- package/dist/sdk/address/country-rules.js +30 -0
- package/dist/sdk/address/country-rules.js.map +1 -0
- package/dist/sdk/address/format-address.js +18 -0
- package/dist/sdk/address/format-address.js.map +1 -0
- package/dist/sdk/address/iso-countries.js +262 -0
- package/dist/sdk/address/iso-countries.js.map +1 -0
- package/dist/sdk/address/layouts.js +56 -0
- package/dist/sdk/address/layouts.js.map +1 -0
- package/dist/sdk/address/messages.js +97 -0
- package/dist/sdk/address/messages.js.map +1 -0
- package/dist/sdk/address/operations.d.ts +54 -0
- package/dist/sdk/address/operations.js +83 -0
- package/dist/sdk/address/operations.js.map +1 -0
- package/dist/sdk/address/postal-code-lookup-operations.js +23 -0
- package/dist/sdk/address/postal-code-lookup-operations.js.map +1 -0
- package/dist/sdk/address/postal-code.js +11 -0
- package/dist/sdk/address/postal-code.js.map +1 -0
- package/dist/sdk/address/schema.js +14 -0
- package/dist/sdk/address/schema.js.map +1 -0
- package/dist/sdk/address/server-fields.js +25 -0
- package/dist/sdk/address/server-fields.js.map +1 -0
- package/dist/sdk/address/switch-country.js +57 -0
- package/dist/sdk/address/switch-country.js.map +1 -0
- package/dist/sdk/address/types.d.ts +26 -0
- package/dist/sdk/address/use-address-actions.d.ts +29 -0
- package/dist/sdk/address/use-address-actions.js +247 -0
- package/dist/sdk/address/use-address-actions.js.map +1 -0
- package/dist/sdk/address/use-address-by-postal-code.js +57 -0
- package/dist/sdk/address/use-address-by-postal-code.js.map +1 -0
- package/dist/sdk/address/validate-address.js +62 -0
- package/dist/sdk/address/validate-address.js.map +1 -0
- package/dist/sdk/analytics/use-analytics-actions.js +2 -1
- package/dist/sdk/analytics/use-analytics-actions.js.map +1 -1
- package/dist/sdk/cache/storefront-cache.js +29 -4
- package/dist/sdk/cache/storefront-cache.js.map +1 -1
- package/dist/sdk/cart/use-cart-actions.js +9 -8
- package/dist/sdk/cart/use-cart-actions.js.map +1 -1
- package/dist/sdk/cart/use-cart-validate-on-open.js +2 -1
- package/dist/sdk/cart/use-cart-validate-on-open.js.map +1 -1
- package/dist/sdk/client/fetch-page-data.d.ts +11 -0
- package/dist/sdk/client/fetch-page-data.js +12 -1
- package/dist/sdk/client/fetch-page-data.js.map +1 -1
- package/dist/sdk/content/create-content-runtime.d.ts +22 -1
- package/dist/sdk/content/create-content-runtime.js +90 -9
- package/dist/sdk/content/create-content-runtime.js.map +1 -1
- package/dist/sdk/data/empty-content-value.js +16 -0
- package/dist/sdk/data/empty-content-value.js.map +1 -0
- package/dist/sdk/data/failed-fields.js +23 -0
- package/dist/sdk/data/failed-fields.js.map +1 -0
- package/dist/sdk/data/hot-data-provider.js +2 -1
- package/dist/sdk/data/hot-data-provider.js.map +1 -1
- package/dist/sdk/data/index.js +1 -1
- package/dist/sdk/data/page-reactive-data-root.d.ts +45 -7
- package/dist/sdk/data/page-reactive-data-root.js +88 -12
- package/dist/sdk/data/page-reactive-data-root.js.map +1 -1
- package/dist/sdk/data/variables-from-content.d.ts +43 -0
- package/dist/sdk/data/variables-from-content.js +57 -0
- package/dist/sdk/data/variables-from-content.js.map +1 -0
- package/dist/sdk/generated/fragment-types.js +2 -0
- package/dist/sdk/generated/fragment-types.js.map +1 -1
- package/dist/sdk/generated/gql.js +4 -1
- package/dist/sdk/generated/gql.js.map +1 -1
- package/dist/sdk/generated/graphql.d.ts +8 -0
- package/dist/sdk/generated/graphql.js +296 -1
- package/dist/sdk/generated/graphql.js.map +1 -1
- package/dist/sdk/i18n/messages/en-US.js +138 -1
- package/dist/sdk/i18n/messages/en-US.json +138 -1
- package/dist/sdk/i18n/messages/en-US.json.d.ts +137 -0
- package/dist/sdk/i18n/messages/es-ES.js +138 -1
- package/dist/sdk/i18n/messages/es-ES.json +138 -1
- package/dist/sdk/i18n/messages/pt-BR.js +138 -1
- package/dist/sdk/i18n/messages/pt-BR.json +138 -1
- package/dist/sdk/identity/use-identity-actions.js +5 -4
- package/dist/sdk/identity/use-identity-actions.js.map +1 -1
- package/dist/sdk/navigation/current-page.js +30 -0
- package/dist/sdk/navigation/current-page.js.map +1 -0
- package/dist/sdk/navigation/not-found-log.d.ts +28 -0
- package/dist/sdk/navigation/not-found-log.js +133 -0
- package/dist/sdk/navigation/not-found-log.js.map +1 -0
- package/dist/sdk/navigation/path.js +25 -0
- package/dist/sdk/navigation/path.js.map +1 -0
- package/dist/sdk/navigation/redirect.d.ts +11 -0
- package/dist/sdk/navigation/redirect.js +22 -0
- package/dist/sdk/navigation/redirect.js.map +1 -0
- package/dist/sdk/navigation/report.js +70 -0
- package/dist/sdk/navigation/report.js.map +1 -0
- package/dist/sdk/navigation/resolve-storefront-href.d.ts +12 -0
- package/dist/sdk/navigation/resolve-storefront-href.js +214 -0
- package/dist/sdk/navigation/resolve-storefront-href.js.map +1 -0
- package/dist/sdk/navigation/route-identity-provider.d.ts +11 -0
- package/dist/sdk/navigation/route-identity-provider.js +20 -0
- package/dist/sdk/navigation/route-identity-provider.js.map +1 -0
- package/dist/sdk/navigation/route-map-provider.d.ts +19 -0
- package/dist/sdk/navigation/route-map-provider.js +29 -0
- package/dist/sdk/navigation/route-map-provider.js.map +1 -0
- package/dist/sdk/navigation/storefront-link.d.ts +16 -0
- package/dist/sdk/navigation/storefront-link.js +66 -0
- package/dist/sdk/navigation/storefront-link.js.map +1 -0
- package/dist/sdk/navigation/types.d.ts +45 -0
- package/dist/sdk/navigation/use-storefront-navigation.d.ts +26 -0
- package/dist/sdk/navigation/use-storefront-navigation.js +73 -0
- package/dist/sdk/navigation/use-storefront-navigation.js.map +1 -0
- package/dist/sdk/navigation/use-storefront-route.d.ts +26 -0
- package/dist/sdk/navigation/use-storefront-route.js +87 -0
- package/dist/sdk/navigation/use-storefront-route.js.map +1 -0
- package/dist/sdk/navigation/use-storefront-search-params.d.ts +11 -0
- package/dist/sdk/navigation/use-storefront-search-params.js +16 -0
- package/dist/sdk/navigation/use-storefront-search-params.js.map +1 -0
- package/dist/sdk/orders/completion-badge.d.ts +8 -0
- package/dist/sdk/orders/completion-badge.js +47 -0
- package/dist/sdk/orders/completion-badge.js.map +1 -0
- package/dist/sdk/orders/order-operations.d.ts +19 -0
- package/dist/sdk/orders/order-operations.js +21 -0
- package/dist/sdk/orders/order-operations.js.map +1 -0
- package/dist/sdk/orders/use-order-actions.d.ts +23 -0
- package/dist/sdk/orders/use-order-actions.js +62 -0
- package/dist/sdk/orders/use-order-actions.js.map +1 -0
- package/dist/sdk/payment/gateway-origin.js +26 -13
- package/dist/sdk/payment/gateway-origin.js.map +1 -1
- package/dist/sdk/payment/gateway.d.ts +14 -2
- package/dist/sdk/payment/gateway.js +32 -14
- package/dist/sdk/payment/gateway.js.map +1 -1
- package/dist/sdk/payment/operations.js +11 -0
- package/dist/sdk/payment/operations.js.map +1 -1
- package/dist/sdk/payment/submission-registry.d.ts +2 -1
- package/dist/sdk/payment/submission-registry.js +12 -8
- package/dist/sdk/payment/submission-registry.js.map +1 -1
- package/dist/sdk/payment/use-payment-actions.d.ts +5 -3
- package/dist/sdk/payment/use-payment-actions.js +6 -3
- package/dist/sdk/payment/use-payment-actions.js.map +1 -1
- package/dist/sdk/payment/use-place-order.d.ts +6 -3
- package/dist/sdk/payment/use-place-order.js +334 -144
- package/dist/sdk/payment/use-place-order.js.map +1 -1
- package/dist/sdk/region/use-region-actions.js +2 -1
- package/dist/sdk/region/use-region-actions.js.map +1 -1
- package/dist/sdk/seo/page-alternates.d.ts +55 -0
- package/dist/sdk/seo/page-alternates.js +132 -0
- package/dist/sdk/seo/page-alternates.js.map +1 -0
- package/dist/sdk/session/read-server-session.d.ts +21 -0
- package/dist/sdk/session/read-server-session.js +61 -0
- package/dist/sdk/session/read-server-session.js.map +1 -0
- package/dist/sdk/session/use-session-actions.js +5 -4
- package/dist/sdk/session/use-session-actions.js.map +1 -1
- package/dist/sdk/session/use-session-revalidation.js +2 -1
- package/dist/sdk/session/use-session-revalidation.js.map +1 -1
- package/dist/sdk/shipping/use-shipping-actions.js +3 -2
- package/dist/sdk/shipping/use-shipping-actions.js.map +1 -1
- package/dist/utils/own-value.js +19 -0
- package/dist/utils/own-value.js.map +1 -0
- package/dist/utils/safe-href.d.ts +11 -0
- package/dist/utils/safe-href.js +31 -22
- package/dist/utils/safe-href.js.map +1 -1
- package/package.json +17 -2
- package/skills/storefront-asset/SKILL.md +111 -0
- package/skills/storefront-asset/references/api-side.md +153 -0
- package/skills/storefront-asset/references/findings.md +40 -0
- package/skills/storefront-asset/references/ui-side.md +94 -0
- package/src/styles/tailwind.css +27 -0
|
@@ -0,0 +1,395 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { defineComponent } from "../../core/dist/define-component.js";
|
|
3
|
+
import { defineContentType } from "../../core/dist/define-content-type.js";
|
|
4
|
+
import "../../core/dist/index.js";
|
|
5
|
+
import { resolveSafeHref } from "../../utils/safe-href.js";
|
|
6
|
+
import { useIntl } from "../../sdk/i18n/client.js";
|
|
7
|
+
import { StorefrontLink } from "../../sdk/navigation/storefront-link.js";
|
|
8
|
+
import { useStorefrontRoute } from "../../sdk/navigation/use-storefront-route.js";
|
|
9
|
+
import { useStorefrontSearchParams } from "../../sdk/navigation/use-storefront-search-params.js";
|
|
10
|
+
import { currentPageWith } from "../../sdk/navigation/current-page.js";
|
|
11
|
+
import { OrderListRow } from "../order-list-row/order-list-row.js";
|
|
12
|
+
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
13
|
+
//#region src/matter/order-list/order-list.tsx
|
|
14
|
+
const fragment = `
|
|
15
|
+
fragment OrderListData on Query {
|
|
16
|
+
customerOrders(first: 25, after: $after, filter: $filter) {
|
|
17
|
+
edges {
|
|
18
|
+
node {
|
|
19
|
+
...OrderListRowData
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
pageInfo {
|
|
23
|
+
hasNextPage
|
|
24
|
+
endCursor
|
|
25
|
+
}
|
|
26
|
+
totalCount
|
|
27
|
+
totalIncomplete
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
fragment OrderListRowData on CustomerOrderListItem {
|
|
32
|
+
id
|
|
33
|
+
placedAt
|
|
34
|
+
total {
|
|
35
|
+
amount
|
|
36
|
+
currencyCode
|
|
37
|
+
}
|
|
38
|
+
itemCount
|
|
39
|
+
completion {
|
|
40
|
+
view
|
|
41
|
+
label
|
|
42
|
+
}
|
|
43
|
+
shippingEstimatedDateMin
|
|
44
|
+
shippingEstimatedDateMax
|
|
45
|
+
}
|
|
46
|
+
`;
|
|
47
|
+
const OrderListContent = defineContentType({
|
|
48
|
+
id: "order-list",
|
|
49
|
+
title: "Order List",
|
|
50
|
+
description: "The count, empty, error, and advance sentences for the orders list.",
|
|
51
|
+
schema: {
|
|
52
|
+
type: "object",
|
|
53
|
+
additionalProperties: false,
|
|
54
|
+
properties: {
|
|
55
|
+
label: {
|
|
56
|
+
type: "string",
|
|
57
|
+
title: "Accessible name"
|
|
58
|
+
},
|
|
59
|
+
count: {
|
|
60
|
+
type: "string",
|
|
61
|
+
title: "Count"
|
|
62
|
+
},
|
|
63
|
+
countIncomplete: {
|
|
64
|
+
type: "string",
|
|
65
|
+
title: "Incomplete count"
|
|
66
|
+
},
|
|
67
|
+
emptyAccount: {
|
|
68
|
+
type: "string",
|
|
69
|
+
title: "Empty account"
|
|
70
|
+
},
|
|
71
|
+
emptyView: {
|
|
72
|
+
type: "string",
|
|
73
|
+
title: "Empty view"
|
|
74
|
+
},
|
|
75
|
+
emptySearch: {
|
|
76
|
+
type: "string",
|
|
77
|
+
title: "Empty search"
|
|
78
|
+
},
|
|
79
|
+
pastEnd: {
|
|
80
|
+
type: "string",
|
|
81
|
+
title: "Past the end"
|
|
82
|
+
},
|
|
83
|
+
walkStopped: {
|
|
84
|
+
type: "string",
|
|
85
|
+
title: "Walk stopped"
|
|
86
|
+
},
|
|
87
|
+
error: {
|
|
88
|
+
type: "string",
|
|
89
|
+
title: "Error"
|
|
90
|
+
},
|
|
91
|
+
retry: {
|
|
92
|
+
type: "string",
|
|
93
|
+
title: "Retry"
|
|
94
|
+
},
|
|
95
|
+
next: {
|
|
96
|
+
type: "string",
|
|
97
|
+
title: "Next page"
|
|
98
|
+
},
|
|
99
|
+
loadMore: {
|
|
100
|
+
type: "string",
|
|
101
|
+
title: "Load more"
|
|
102
|
+
},
|
|
103
|
+
firstPage: {
|
|
104
|
+
type: "string",
|
|
105
|
+
title: "First page"
|
|
106
|
+
},
|
|
107
|
+
clear: {
|
|
108
|
+
type: "string",
|
|
109
|
+
title: "Clear search"
|
|
110
|
+
},
|
|
111
|
+
startShopping: {
|
|
112
|
+
type: "string",
|
|
113
|
+
title: "Start shopping"
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
});
|
|
118
|
+
const DEFAULTS = {
|
|
119
|
+
label: "Orders",
|
|
120
|
+
count: "{count} of {total}",
|
|
121
|
+
countIncomplete: "{count} of {total}, count incomplete",
|
|
122
|
+
emptyAccount: "You have no orders yet",
|
|
123
|
+
emptyView: "No orders in this view",
|
|
124
|
+
emptySearch: "No orders match this search",
|
|
125
|
+
pastEnd: "This page has no orders",
|
|
126
|
+
walkStopped: "More orders may exist",
|
|
127
|
+
error: "Could not load orders",
|
|
128
|
+
retry: "Try again",
|
|
129
|
+
next: "Next page",
|
|
130
|
+
loadMore: "Load more",
|
|
131
|
+
firstPage: "First page",
|
|
132
|
+
clear: "Clear search",
|
|
133
|
+
startShopping: "Start shopping"
|
|
134
|
+
};
|
|
135
|
+
const COLUMNS = [
|
|
136
|
+
["id", "fs/order-list.column.id"],
|
|
137
|
+
["placed", "fs/order-list.column.placed"],
|
|
138
|
+
["total", "fs/order-list.column.total"],
|
|
139
|
+
["items", "fs/order-list.column.items"],
|
|
140
|
+
["status", "fs/order-list.column.status"],
|
|
141
|
+
["estimate", "fs/order-list.column.estimate"]
|
|
142
|
+
];
|
|
143
|
+
const CRITERIA = [
|
|
144
|
+
"search",
|
|
145
|
+
"placedFrom",
|
|
146
|
+
"placedTo"
|
|
147
|
+
];
|
|
148
|
+
const OrderListDefinition = defineComponent({
|
|
149
|
+
name: "OrderList",
|
|
150
|
+
importPath: "@vtex/faststore/components",
|
|
151
|
+
component: OrderList,
|
|
152
|
+
content: OrderListContent,
|
|
153
|
+
fragment,
|
|
154
|
+
fetchStrategy: "static",
|
|
155
|
+
skeleton: OrderListSkeleton,
|
|
156
|
+
editor: {
|
|
157
|
+
label: "Order List",
|
|
158
|
+
category: "content"
|
|
159
|
+
},
|
|
160
|
+
schema: {
|
|
161
|
+
label: {
|
|
162
|
+
type: "string",
|
|
163
|
+
default: "Orders",
|
|
164
|
+
label: "Accessible name"
|
|
165
|
+
},
|
|
166
|
+
advance: {
|
|
167
|
+
type: ["pages", "load-more"],
|
|
168
|
+
default: "pages",
|
|
169
|
+
label: "Advance"
|
|
170
|
+
},
|
|
171
|
+
startShoppingHref: {
|
|
172
|
+
type: "link",
|
|
173
|
+
default: { standard: "home" },
|
|
174
|
+
label: "Start shopping link"
|
|
175
|
+
},
|
|
176
|
+
orderHref: {
|
|
177
|
+
type: "link",
|
|
178
|
+
default: { standard: "order" },
|
|
179
|
+
fills: ["orderId"],
|
|
180
|
+
label: "Order link"
|
|
181
|
+
}
|
|
182
|
+
},
|
|
183
|
+
guideline: "One page of the shopper orders. The read is fixed at 25 and the cursor, view, search, and placed dates come from the page URL. Pages and load-more both link to the next cursor and load that page again."
|
|
184
|
+
});
|
|
185
|
+
function copy(value, fallback) {
|
|
186
|
+
return value?.trim() || fallback;
|
|
187
|
+
}
|
|
188
|
+
function advanceMode(value) {
|
|
189
|
+
return value === "load-more" ? "load-more" : "pages";
|
|
190
|
+
}
|
|
191
|
+
function listView(value) {
|
|
192
|
+
if (value === "ongoing" || value === "completed" || value === "cancelled") return value;
|
|
193
|
+
return null;
|
|
194
|
+
}
|
|
195
|
+
function appliedCriteria(params) {
|
|
196
|
+
const found = [];
|
|
197
|
+
for (const key of CRITERIA) {
|
|
198
|
+
const value = params.get(key)?.trim() ?? "";
|
|
199
|
+
if (value.length > 0) found.push({
|
|
200
|
+
key,
|
|
201
|
+
value
|
|
202
|
+
});
|
|
203
|
+
}
|
|
204
|
+
return found;
|
|
205
|
+
}
|
|
206
|
+
function withParams(route, params, edit) {
|
|
207
|
+
const next = new URLSearchParams(params);
|
|
208
|
+
edit?.(next);
|
|
209
|
+
return currentPageWith(route, next);
|
|
210
|
+
}
|
|
211
|
+
function fillCount(template, count, total) {
|
|
212
|
+
return template.replaceAll("{count}", String(count)).replaceAll("{total}", String(total));
|
|
213
|
+
}
|
|
214
|
+
const HOME_PAGE = { standard: "home" };
|
|
215
|
+
const ORDER_PAGE = { standard: "order" };
|
|
216
|
+
function shoppingHref(value) {
|
|
217
|
+
if (typeof value !== "string") return value ?? HOME_PAGE;
|
|
218
|
+
const authored = value.trim();
|
|
219
|
+
const destination = resolveSafeHref(authored);
|
|
220
|
+
return authored.length > 0 && destination.safe ? destination.href : HOME_PAGE;
|
|
221
|
+
}
|
|
222
|
+
function connectionOf(data) {
|
|
223
|
+
if (!data || !Array.isArray(data.edges) || data.pageInfo == null) return null;
|
|
224
|
+
if (typeof data.totalCount !== "number" || typeof data.totalIncomplete !== "boolean") return null;
|
|
225
|
+
return data;
|
|
226
|
+
}
|
|
227
|
+
function emptyKind(data, params) {
|
|
228
|
+
if (data.totalIncomplete) return "walk-stopped";
|
|
229
|
+
if (data.totalCount > 0) return "past-end";
|
|
230
|
+
if (appliedCriteria(params).length > 0) return "search";
|
|
231
|
+
if (listView(params.get("view"))) return "view";
|
|
232
|
+
return "account";
|
|
233
|
+
}
|
|
234
|
+
function OrderListSkeleton({ className, ...props }) {
|
|
235
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
236
|
+
...props,
|
|
237
|
+
className,
|
|
238
|
+
"data-fs-order-list-skeleton": "",
|
|
239
|
+
"aria-hidden": "true",
|
|
240
|
+
children: [
|
|
241
|
+
/* @__PURE__ */ jsx("span", { "data-fs-order-list-skeleton-row": "" }),
|
|
242
|
+
/* @__PURE__ */ jsx("span", { "data-fs-order-list-skeleton-row": "" }),
|
|
243
|
+
/* @__PURE__ */ jsx("span", { "data-fs-order-list-skeleton-row": "" })
|
|
244
|
+
]
|
|
245
|
+
});
|
|
246
|
+
}
|
|
247
|
+
function listLinks(route, searchParams, connection, mode, content) {
|
|
248
|
+
const nextCursor = connection?.pageInfo.hasNextPage ? connection.pageInfo.endCursor : null;
|
|
249
|
+
return {
|
|
250
|
+
nextHref: nextCursor && nextCursor.length > 0 ? withParams(route, searchParams, (next) => {
|
|
251
|
+
next.set("after", nextCursor);
|
|
252
|
+
}) : null,
|
|
253
|
+
firstHref: (searchParams.get("after") ?? "").trim().length > 0 ? withParams(route, searchParams, (next) => {
|
|
254
|
+
next.delete("after");
|
|
255
|
+
}) : null,
|
|
256
|
+
clearHref: withParams(route, searchParams, (next) => {
|
|
257
|
+
next.delete("search");
|
|
258
|
+
next.delete("placedFrom");
|
|
259
|
+
next.delete("placedTo");
|
|
260
|
+
next.delete("after");
|
|
261
|
+
}),
|
|
262
|
+
retryHref: withParams(route, searchParams),
|
|
263
|
+
advanceLabel: copy(mode === "load-more" ? content?.loadMore : content?.next, mode === "load-more" ? DEFAULTS.loadMore : DEFAULTS.next)
|
|
264
|
+
};
|
|
265
|
+
}
|
|
266
|
+
function countSentence(connection, content) {
|
|
267
|
+
return copy(connection.totalIncomplete ? content?.countIncomplete : content?.count, connection.totalIncomplete ? DEFAULTS.countIncomplete : DEFAULTS.count);
|
|
268
|
+
}
|
|
269
|
+
function OrderList({ label, advance, startShoppingHref, orderHref = ORDER_PAGE, $content, $data, className, ref }) {
|
|
270
|
+
const route = useStorefrontRoute();
|
|
271
|
+
const searchParams = useStorefrontSearchParams();
|
|
272
|
+
const mode = advanceMode(advance);
|
|
273
|
+
const regionLabel = copy($content?.label, copy(label, DEFAULTS.label));
|
|
274
|
+
const connection = connectionOf($data);
|
|
275
|
+
const links = listLinks(route, searchParams, connection, mode, $content);
|
|
276
|
+
return /* @__PURE__ */ jsx("section", {
|
|
277
|
+
ref,
|
|
278
|
+
"aria-label": regionLabel,
|
|
279
|
+
className,
|
|
280
|
+
"data-fs-order-list": "",
|
|
281
|
+
"data-fs-order-list-advance": mode,
|
|
282
|
+
children: connection && connection.edges.length > 0 ? /* @__PURE__ */ jsx(OrderPage, {
|
|
283
|
+
connection,
|
|
284
|
+
countLabel: countSentence(connection, $content),
|
|
285
|
+
advanceLabel: links.advanceLabel,
|
|
286
|
+
firstLabel: copy($content?.firstPage, DEFAULTS.firstPage),
|
|
287
|
+
nextHref: links.nextHref,
|
|
288
|
+
firstHref: links.firstHref,
|
|
289
|
+
orderHref
|
|
290
|
+
}) : /* @__PURE__ */ jsx(OrderEmpty, {
|
|
291
|
+
kind: connection ? emptyKind(connection, searchParams) : "error",
|
|
292
|
+
content: $content,
|
|
293
|
+
criteria: appliedCriteria(searchParams),
|
|
294
|
+
advanceLabel: links.advanceLabel,
|
|
295
|
+
nextHref: links.nextHref,
|
|
296
|
+
firstHref: links.firstHref,
|
|
297
|
+
clearHref: links.clearHref,
|
|
298
|
+
retryHref: links.retryHref,
|
|
299
|
+
startHref: shoppingHref(startShoppingHref)
|
|
300
|
+
})
|
|
301
|
+
});
|
|
302
|
+
}
|
|
303
|
+
function OrderColumns() {
|
|
304
|
+
const intl = useIntl();
|
|
305
|
+
return /* @__PURE__ */ jsx("div", {
|
|
306
|
+
"data-fs-order-list-columns": "",
|
|
307
|
+
children: COLUMNS.map(([name, id]) => /* @__PURE__ */ jsx("span", {
|
|
308
|
+
"data-fs-order-list-column": name,
|
|
309
|
+
children: intl.formatMessage({ id })
|
|
310
|
+
}, name))
|
|
311
|
+
});
|
|
312
|
+
}
|
|
313
|
+
function OrderPage({ connection, countLabel, advanceLabel, firstLabel, nextHref, firstHref, orderHref }) {
|
|
314
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
315
|
+
/* @__PURE__ */ jsx("p", {
|
|
316
|
+
"data-fs-order-list-count": "",
|
|
317
|
+
"data-fs-order-list-count-incomplete": connection.totalIncomplete ? "" : void 0,
|
|
318
|
+
children: fillCount(countLabel, connection.edges.length, connection.totalCount)
|
|
319
|
+
}),
|
|
320
|
+
/* @__PURE__ */ jsx(OrderColumns, {}),
|
|
321
|
+
connection.edges.map((edge) => /* @__PURE__ */ jsx(OrderListRow, {
|
|
322
|
+
$data: edge.node,
|
|
323
|
+
href: orderHref
|
|
324
|
+
}, edge.node.id)),
|
|
325
|
+
firstHref ? /* @__PURE__ */ jsx(StorefrontLink, {
|
|
326
|
+
href: firstHref,
|
|
327
|
+
"data-fs-order-list-first": "",
|
|
328
|
+
children: firstLabel
|
|
329
|
+
}) : null,
|
|
330
|
+
nextHref ? /* @__PURE__ */ jsx(StorefrontLink, {
|
|
331
|
+
href: nextHref,
|
|
332
|
+
"data-fs-order-list-next": "",
|
|
333
|
+
children: advanceLabel
|
|
334
|
+
}) : null
|
|
335
|
+
] });
|
|
336
|
+
}
|
|
337
|
+
function OrderEmpty({ kind, content, criteria, advanceLabel, nextHref, firstHref, clearHref, retryHref, startHref }) {
|
|
338
|
+
if (kind === "error") return /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx("p", {
|
|
339
|
+
"data-fs-order-list-error": "",
|
|
340
|
+
children: copy(content?.error, DEFAULTS.error)
|
|
341
|
+
}), /* @__PURE__ */ jsx(StorefrontLink, {
|
|
342
|
+
href: retryHref,
|
|
343
|
+
"data-fs-order-list-retry": "",
|
|
344
|
+
children: copy(content?.retry, DEFAULTS.retry)
|
|
345
|
+
})] });
|
|
346
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
347
|
+
/* @__PURE__ */ jsx("p", {
|
|
348
|
+
"data-fs-order-list-empty": kind,
|
|
349
|
+
children: emptySentence(kind, content)
|
|
350
|
+
}),
|
|
351
|
+
kind === "search" ? /* @__PURE__ */ jsx(Criteria, { criteria }) : null,
|
|
352
|
+
kind === "search" ? /* @__PURE__ */ jsx(StorefrontLink, {
|
|
353
|
+
href: clearHref,
|
|
354
|
+
"data-fs-order-list-clear": "",
|
|
355
|
+
children: copy(content?.clear, DEFAULTS.clear)
|
|
356
|
+
}) : null,
|
|
357
|
+
kind === "account" ? /* @__PURE__ */ jsx(StorefrontLink, {
|
|
358
|
+
href: startHref,
|
|
359
|
+
"data-fs-order-list-start": "",
|
|
360
|
+
children: copy(content?.startShopping, DEFAULTS.startShopping)
|
|
361
|
+
}) : null,
|
|
362
|
+
kind === "past-end" && firstHref ? /* @__PURE__ */ jsx(StorefrontLink, {
|
|
363
|
+
href: firstHref,
|
|
364
|
+
"data-fs-order-list-first": "",
|
|
365
|
+
children: copy(content?.firstPage, DEFAULTS.firstPage)
|
|
366
|
+
}) : null,
|
|
367
|
+
kind === "walk-stopped" && nextHref ? /* @__PURE__ */ jsx(StorefrontLink, {
|
|
368
|
+
href: nextHref,
|
|
369
|
+
"data-fs-order-list-next": "",
|
|
370
|
+
children: advanceLabel
|
|
371
|
+
}) : null
|
|
372
|
+
] });
|
|
373
|
+
}
|
|
374
|
+
function emptySentence(kind, content) {
|
|
375
|
+
switch (kind) {
|
|
376
|
+
case "account": return copy(content?.emptyAccount, DEFAULTS.emptyAccount);
|
|
377
|
+
case "view": return copy(content?.emptyView, DEFAULTS.emptyView);
|
|
378
|
+
case "search": return copy(content?.emptySearch, DEFAULTS.emptySearch);
|
|
379
|
+
case "past-end": return copy(content?.pastEnd, DEFAULTS.pastEnd);
|
|
380
|
+
case "walk-stopped": return copy(content?.walkStopped, DEFAULTS.walkStopped);
|
|
381
|
+
}
|
|
382
|
+
}
|
|
383
|
+
function Criteria({ criteria }) {
|
|
384
|
+
return /* @__PURE__ */ jsx("ul", {
|
|
385
|
+
"data-fs-order-list-criteria": "",
|
|
386
|
+
children: criteria.map((item) => /* @__PURE__ */ jsx("li", {
|
|
387
|
+
"data-fs-order-list-criterion": item.key,
|
|
388
|
+
children: item.value
|
|
389
|
+
}, item.key))
|
|
390
|
+
});
|
|
391
|
+
}
|
|
392
|
+
//#endregion
|
|
393
|
+
export { OrderList, OrderListContent, OrderListDefinition, OrderListSkeleton };
|
|
394
|
+
|
|
395
|
+
//# sourceMappingURL=order-list.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"order-list.js","names":[],"sources":["../../../src/matter/order-list/order-list.tsx"],"sourcesContent":["'use client';\n\nimport { type ContentValue, defineComponent, defineContentType } from '@vtex/fs-core';\nimport type { ComponentPropsWithRef, ReactNode, Ref } from 'react';\nimport { useIntl } from '../../sdk/i18n/client.js';\nimport type { MessageId } from '../../sdk/i18n/locales.js';\nimport { type CurrentRoute, currentPageWith } from '../../sdk/navigation/current-page.js';\nimport { StorefrontLink } from '../../sdk/navigation/storefront-link.js';\nimport type { PageRef } from '../../sdk/navigation/types.js';\nimport { useStorefrontRoute } from '../../sdk/navigation/use-storefront-route.js';\nimport { useStorefrontSearchParams } from '../../sdk/navigation/use-storefront-search-params.js';\nimport { resolveSafeHref } from '../../utils/safe-href.js';\nimport { type OrderListItemData, OrderListRow } from '../order-list-row/order-list-row.js';\n\nconst fragment = /* GraphQL */ `\n fragment OrderListData on Query {\n customerOrders(first: 25, after: $after, filter: $filter) {\n edges {\n node {\n ...OrderListRowData\n }\n }\n pageInfo {\n hasNextPage\n endCursor\n }\n totalCount\n totalIncomplete\n }\n }\n\n fragment OrderListRowData on CustomerOrderListItem {\n id\n placedAt\n total {\n amount\n currencyCode\n }\n itemCount\n completion {\n view\n label\n }\n shippingEstimatedDateMin\n shippingEstimatedDateMax\n }\n`;\n\nexport const OrderListContent = defineContentType({\n id: 'order-list',\n title: 'Order List',\n description: 'The count, empty, error, and advance sentences for the orders list.',\n schema: {\n type: 'object',\n additionalProperties: false,\n properties: {\n label: { type: 'string', title: 'Accessible name' },\n count: { type: 'string', title: 'Count' },\n countIncomplete: { type: 'string', title: 'Incomplete count' },\n emptyAccount: { type: 'string', title: 'Empty account' },\n emptyView: { type: 'string', title: 'Empty view' },\n emptySearch: { type: 'string', title: 'Empty search' },\n pastEnd: { type: 'string', title: 'Past the end' },\n walkStopped: { type: 'string', title: 'Walk stopped' },\n error: { type: 'string', title: 'Error' },\n retry: { type: 'string', title: 'Retry' },\n next: { type: 'string', title: 'Next page' },\n loadMore: { type: 'string', title: 'Load more' },\n firstPage: { type: 'string', title: 'First page' },\n clear: { type: 'string', title: 'Clear search' },\n startShopping: { type: 'string', title: 'Start shopping' },\n },\n },\n});\n\nexport type OrderListAdvance = 'pages' | 'load-more';\n\nexport type OrderListContentValue = ContentValue<typeof OrderListContent>;\n\nexport type OrderListData = {\n edges: Array<{ node: OrderListItemData }>;\n pageInfo: { hasNextPage: boolean; endCursor: string | null };\n totalCount: number;\n totalIncomplete: boolean;\n};\n\nexport type OrderListProps = Readonly<{\n /** Accessible name of the list region. */\n label?: string;\n advance?: OrderListAdvance;\n /** Link offered when the account has no orders. */\n startShoppingHref?: PageRef | string;\n /** The order page each row links to; the row fills `orderId`, or appends it to a string path. */\n orderHref?: PageRef | string;\n $content?: OrderListContentValue;\n $data?: OrderListData | null;\n className?: string;\n ref?: Ref<HTMLElement>;\n}>;\n\nconst DEFAULTS = {\n label: 'Orders',\n count: '{count} of {total}',\n countIncomplete: '{count} of {total}, count incomplete',\n emptyAccount: 'You have no orders yet',\n emptyView: 'No orders in this view',\n emptySearch: 'No orders match this search',\n pastEnd: 'This page has no orders',\n walkStopped: 'More orders may exist',\n error: 'Could not load orders',\n retry: 'Try again',\n next: 'Next page',\n loadMore: 'Load more',\n firstPage: 'First page',\n clear: 'Clear search',\n startShopping: 'Start shopping',\n} as const;\n\nconst COLUMNS = [\n ['id', 'fs/order-list.column.id'],\n ['placed', 'fs/order-list.column.placed'],\n ['total', 'fs/order-list.column.total'],\n ['items', 'fs/order-list.column.items'],\n ['status', 'fs/order-list.column.status'],\n ['estimate', 'fs/order-list.column.estimate'],\n] as const satisfies ReadonlyArray<readonly [string, MessageId]>;\n\nconst CRITERIA = ['search', 'placedFrom', 'placedTo'] as const;\n\ntype CriterionKey = (typeof CRITERIA)[number];\n\ntype EmptyKind = 'account' | 'view' | 'search' | 'past-end' | 'walk-stopped';\n\nexport const OrderListDefinition = defineComponent<OrderListProps>({\n name: 'OrderList',\n importPath: '@vtex/faststore/components',\n component: OrderList,\n content: OrderListContent,\n fragment,\n fetchStrategy: 'static',\n skeleton: OrderListSkeleton,\n editor: { label: 'Order List', category: 'content' },\n schema: {\n label: { type: 'string', default: 'Orders', label: 'Accessible name' },\n advance: { type: ['pages', 'load-more'] as const, default: 'pages', label: 'Advance' },\n startShoppingHref: { type: 'link', default: { standard: 'home' }, label: 'Start shopping link' },\n orderHref: { type: 'link', default: { standard: 'order' }, fills: ['orderId'], label: 'Order link' },\n },\n guideline:\n 'One page of the shopper orders. The read is fixed at 25 and the cursor, view, search, and placed dates come from the page URL. Pages and load-more both link to the next cursor and load that page again.',\n});\n\nfunction copy(value: string | undefined, fallback: string): string {\n const trimmed = value?.trim();\n return trimmed || fallback;\n}\n\nfunction advanceMode(value: string | undefined): OrderListAdvance {\n return value === 'load-more' ? 'load-more' : 'pages';\n}\n\nfunction listView(value: string | null): 'ongoing' | 'completed' | 'cancelled' | null {\n if (value === 'ongoing' || value === 'completed' || value === 'cancelled') {\n return value;\n }\n return null;\n}\n\nfunction appliedCriteria(params: URLSearchParams): Array<{ key: CriterionKey; value: string }> {\n const found: Array<{ key: CriterionKey; value: string }> = [];\n for (const key of CRITERIA) {\n const value = params.get(key)?.trim() ?? '';\n if (value.length > 0) {\n found.push({ key, value });\n }\n }\n return found;\n}\n\nfunction withParams(\n route: CurrentRoute,\n params: URLSearchParams,\n edit?: (next: URLSearchParams) => void,\n): PageRef | string {\n const next = new URLSearchParams(params);\n edit?.(next);\n return currentPageWith(route, next);\n}\n\nfunction fillCount(template: string, count: number, total: number): string {\n return template.replaceAll('{count}', String(count)).replaceAll('{total}', String(total));\n}\n\nconst HOME_PAGE: PageRef = { standard: 'home' };\nconst ORDER_PAGE: PageRef = { standard: 'order' };\n\nfunction shoppingHref(value: PageRef | string | undefined): PageRef | string {\n if (typeof value !== 'string') {\n return value ?? HOME_PAGE;\n }\n const authored = value.trim();\n const destination = resolveSafeHref(authored);\n return authored.length > 0 && destination.safe ? destination.href : HOME_PAGE;\n}\n\nfunction connectionOf(data: OrderListData | null | undefined): OrderListData | null {\n if (!data || !Array.isArray(data.edges) || data.pageInfo == null) {\n return null;\n }\n if (typeof data.totalCount !== 'number' || typeof data.totalIncomplete !== 'boolean') {\n return null;\n }\n return data;\n}\n\nfunction emptyKind(data: OrderListData, params: URLSearchParams): EmptyKind {\n if (data.totalIncomplete) {\n return 'walk-stopped';\n }\n if (data.totalCount > 0) {\n return 'past-end';\n }\n if (appliedCriteria(params).length > 0) {\n return 'search';\n }\n if (listView(params.get('view'))) {\n return 'view';\n }\n return 'account';\n}\n\nexport function OrderListSkeleton({ className, ...props }: ComponentPropsWithRef<'div'>) {\n return (\n <div {...props} className={className} data-fs-order-list-skeleton=\"\" aria-hidden=\"true\">\n <span data-fs-order-list-skeleton-row=\"\" />\n <span data-fs-order-list-skeleton-row=\"\" />\n <span data-fs-order-list-skeleton-row=\"\" />\n </div>\n );\n}\n\ntype ListLinks = {\n nextHref: PageRef | string | null;\n firstHref: PageRef | string | null;\n clearHref: PageRef | string;\n retryHref: PageRef | string;\n advanceLabel: string;\n};\n\nfunction listLinks(\n route: CurrentRoute,\n searchParams: URLSearchParams,\n connection: OrderListData | null,\n mode: OrderListAdvance,\n content: OrderListContentValue | undefined,\n): ListLinks {\n const nextCursor = connection?.pageInfo.hasNextPage ? connection.pageInfo.endCursor : null;\n const nextHref =\n nextCursor && nextCursor.length > 0\n ? withParams(route, searchParams, (next) => {\n next.set('after', nextCursor);\n })\n : null;\n const showFirst = (searchParams.get('after') ?? '').trim().length > 0;\n const firstHref = showFirst\n ? withParams(route, searchParams, (next) => {\n next.delete('after');\n })\n : null;\n const clearHref = withParams(route, searchParams, (next) => {\n next.delete('search');\n next.delete('placedFrom');\n next.delete('placedTo');\n next.delete('after');\n });\n return {\n nextHref,\n firstHref,\n clearHref,\n retryHref: withParams(route, searchParams),\n advanceLabel: copy(\n mode === 'load-more' ? content?.loadMore : content?.next,\n mode === 'load-more' ? DEFAULTS.loadMore : DEFAULTS.next,\n ),\n };\n}\n\nfunction countSentence(connection: OrderListData, content: OrderListContentValue | undefined): string {\n return copy(\n connection.totalIncomplete ? content?.countIncomplete : content?.count,\n connection.totalIncomplete ? DEFAULTS.countIncomplete : DEFAULTS.count,\n );\n}\n\nexport function OrderList({\n label,\n advance,\n startShoppingHref,\n orderHref = ORDER_PAGE,\n $content,\n $data,\n className,\n ref,\n}: OrderListProps) {\n const route = useStorefrontRoute();\n const searchParams = useStorefrontSearchParams();\n const mode = advanceMode(advance);\n const regionLabel = copy($content?.label, copy(label, DEFAULTS.label));\n const connection = connectionOf($data);\n const links = listLinks(route, searchParams, connection, mode, $content);\n\n return (\n <section\n ref={ref}\n aria-label={regionLabel}\n className={className}\n data-fs-order-list=\"\"\n data-fs-order-list-advance={mode}\n >\n {connection && connection.edges.length > 0 ? (\n <OrderPage\n connection={connection}\n countLabel={countSentence(connection, $content)}\n advanceLabel={links.advanceLabel}\n firstLabel={copy($content?.firstPage, DEFAULTS.firstPage)}\n nextHref={links.nextHref}\n firstHref={links.firstHref}\n orderHref={orderHref}\n />\n ) : (\n <OrderEmpty\n kind={connection ? emptyKind(connection, searchParams) : 'error'}\n content={$content}\n criteria={appliedCriteria(searchParams)}\n advanceLabel={links.advanceLabel}\n nextHref={links.nextHref}\n firstHref={links.firstHref}\n clearHref={links.clearHref}\n retryHref={links.retryHref}\n startHref={shoppingHref(startShoppingHref)}\n />\n )}\n </section>\n );\n}\n\ntype OrderPageProps = Readonly<{\n connection: OrderListData;\n countLabel: string;\n advanceLabel: string;\n firstLabel: string;\n nextHref: PageRef | string | null;\n firstHref: PageRef | string | null;\n orderHref: PageRef | string;\n}>;\n\nfunction OrderColumns() {\n const intl = useIntl();\n\n return (\n <div data-fs-order-list-columns=\"\">\n {COLUMNS.map(([name, id]) => (\n <span key={name} data-fs-order-list-column={name}>\n {intl.formatMessage({ id })}\n </span>\n ))}\n </div>\n );\n}\n\nfunction OrderPage({\n connection,\n countLabel,\n advanceLabel,\n firstLabel,\n nextHref,\n firstHref,\n orderHref,\n}: OrderPageProps) {\n return (\n <>\n <p data-fs-order-list-count=\"\" data-fs-order-list-count-incomplete={connection.totalIncomplete ? '' : undefined}>\n {fillCount(countLabel, connection.edges.length, connection.totalCount)}\n </p>\n <OrderColumns />\n {connection.edges.map((edge) => (\n <OrderListRow key={edge.node.id} $data={edge.node} href={orderHref} />\n ))}\n {firstHref ? (\n <StorefrontLink href={firstHref} data-fs-order-list-first=\"\">\n {firstLabel}\n </StorefrontLink>\n ) : null}\n {nextHref ? (\n <StorefrontLink href={nextHref} data-fs-order-list-next=\"\">\n {advanceLabel}\n </StorefrontLink>\n ) : null}\n </>\n );\n}\n\ntype OrderEmptyProps = Readonly<{\n kind: EmptyKind | 'error';\n content: OrderListContentValue | undefined;\n criteria: Array<{ key: CriterionKey; value: string }>;\n advanceLabel: string;\n nextHref: PageRef | string | null;\n firstHref: PageRef | string | null;\n clearHref: PageRef | string;\n retryHref: PageRef | string;\n startHref: PageRef | string;\n}>;\n\nfunction OrderEmpty({\n kind,\n content,\n criteria,\n advanceLabel,\n nextHref,\n firstHref,\n clearHref,\n retryHref,\n startHref,\n}: OrderEmptyProps) {\n if (kind === 'error') {\n return (\n <>\n <p data-fs-order-list-error=\"\">{copy(content?.error, DEFAULTS.error)}</p>\n <StorefrontLink href={retryHref} data-fs-order-list-retry=\"\">\n {copy(content?.retry, DEFAULTS.retry)}\n </StorefrontLink>\n </>\n );\n }\n\n return (\n <>\n <p data-fs-order-list-empty={kind}>{emptySentence(kind, content)}</p>\n {kind === 'search' ? <Criteria criteria={criteria} /> : null}\n {kind === 'search' ? (\n <StorefrontLink href={clearHref} data-fs-order-list-clear=\"\">\n {copy(content?.clear, DEFAULTS.clear)}\n </StorefrontLink>\n ) : null}\n {kind === 'account' ? (\n <StorefrontLink href={startHref} data-fs-order-list-start=\"\">\n {copy(content?.startShopping, DEFAULTS.startShopping)}\n </StorefrontLink>\n ) : null}\n {kind === 'past-end' && firstHref ? (\n <StorefrontLink href={firstHref} data-fs-order-list-first=\"\">\n {copy(content?.firstPage, DEFAULTS.firstPage)}\n </StorefrontLink>\n ) : null}\n {kind === 'walk-stopped' && nextHref ? (\n <StorefrontLink href={nextHref} data-fs-order-list-next=\"\">\n {advanceLabel}\n </StorefrontLink>\n ) : null}\n </>\n );\n}\n\nfunction emptySentence(kind: EmptyKind, content: OrderListContentValue | undefined): string {\n switch (kind) {\n case 'account':\n return copy(content?.emptyAccount, DEFAULTS.emptyAccount);\n case 'view':\n return copy(content?.emptyView, DEFAULTS.emptyView);\n case 'search':\n return copy(content?.emptySearch, DEFAULTS.emptySearch);\n case 'past-end':\n return copy(content?.pastEnd, DEFAULTS.pastEnd);\n case 'walk-stopped':\n return copy(content?.walkStopped, DEFAULTS.walkStopped);\n }\n}\n\nfunction Criteria({ criteria }: Readonly<{ criteria: Array<{ key: CriterionKey; value: string }> }>): ReactNode {\n return (\n <ul data-fs-order-list-criteria=\"\">\n {criteria.map((item) => (\n <li key={item.key} data-fs-order-list-criterion={item.key}>\n {item.value}\n </li>\n ))}\n </ul>\n );\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { ComponentDefinition } from "../../core/dist/define-component.js";
|
|
2
|
+
import "../../core/dist/index.js";
|
|
3
|
+
import { PageRef } from "../../sdk/navigation/types.js";
|
|
4
|
+
import { ComponentPropsWithRef, Ref } from "react";
|
|
5
|
+
//#region src/matter/order-list-row/order-list-row.d.ts
|
|
6
|
+
export type OrderListItemData = {
|
|
7
|
+
id: string;
|
|
8
|
+
placedAt: string | null;
|
|
9
|
+
total: {
|
|
10
|
+
amount: string | number;
|
|
11
|
+
currencyCode: string;
|
|
12
|
+
} | null;
|
|
13
|
+
itemCount: number | null;
|
|
14
|
+
completion: {
|
|
15
|
+
view: string;
|
|
16
|
+
label: string;
|
|
17
|
+
};
|
|
18
|
+
shippingEstimatedDateMin: string | null;
|
|
19
|
+
shippingEstimatedDateMax: string | null;
|
|
20
|
+
};
|
|
21
|
+
export type OrderListRowProps = Readonly<{
|
|
22
|
+
$data: OrderListItemData;
|
|
23
|
+
/**
|
|
24
|
+
* The order page; the row fills `orderId`. A string is the path the orders live under, and the row
|
|
25
|
+
* appends its id. `OrderList` passes its `orderHref`.
|
|
26
|
+
*/
|
|
27
|
+
href?: PageRef | string;
|
|
28
|
+
className?: string;
|
|
29
|
+
ref?: Ref<HTMLAnchorElement>;
|
|
30
|
+
}>;
|
|
31
|
+
export declare const OrderListRowDefinition: ComponentDefinition<Readonly<{
|
|
32
|
+
$data: OrderListItemData;
|
|
33
|
+
/**
|
|
34
|
+
* The order page; the row fills `orderId`. A string is the path the orders live under, and the row
|
|
35
|
+
* appends its id. `OrderList` passes its `orderHref`.
|
|
36
|
+
*/
|
|
37
|
+
href?: PageRef | string;
|
|
38
|
+
className?: string;
|
|
39
|
+
ref?: Ref<HTMLAnchorElement>;
|
|
40
|
+
}>>;
|
|
41
|
+
export declare function OrderListRowSkeleton({ className, ...props }: ComponentPropsWithRef<'div'>): import("react/jsx-runtime").JSX.Element;
|
|
42
|
+
export declare function OrderListRow({ $data, href, className, ref }: OrderListRowProps): import("react/jsx-runtime").JSX.Element;
|
|
43
|
+
//#endregion
|
|
44
|
+
//# sourceMappingURL=order-list-row.d.ts.map
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { defineComponent } from "../../core/dist/define-component.js";
|
|
3
|
+
import "../../core/dist/index.js";
|
|
4
|
+
import { useStorefrontFormatters } from "../../sdk/format/client.js";
|
|
5
|
+
import { StorefrontLink } from "../../sdk/navigation/storefront-link.js";
|
|
6
|
+
import { OrderStatusBadge } from "../../particles/order-status-badge/order-status-badge.js";
|
|
7
|
+
import { completionBadgeModel } from "../../sdk/orders/completion-badge.js";
|
|
8
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
9
|
+
const OrderListRowDefinition = defineComponent({
|
|
10
|
+
name: "OrderListRow",
|
|
11
|
+
importPath: "@vtex/faststore/components",
|
|
12
|
+
component: OrderListRow,
|
|
13
|
+
fragment: `
|
|
14
|
+
fragment OrderListRowData on CustomerOrderListItem {
|
|
15
|
+
id
|
|
16
|
+
placedAt
|
|
17
|
+
total {
|
|
18
|
+
amount
|
|
19
|
+
currencyCode
|
|
20
|
+
}
|
|
21
|
+
itemCount
|
|
22
|
+
completion {
|
|
23
|
+
view
|
|
24
|
+
label
|
|
25
|
+
}
|
|
26
|
+
shippingEstimatedDateMin
|
|
27
|
+
shippingEstimatedDateMax
|
|
28
|
+
}
|
|
29
|
+
`,
|
|
30
|
+
skeleton: OrderListRowSkeleton,
|
|
31
|
+
editor: {
|
|
32
|
+
label: "Order List Row",
|
|
33
|
+
category: "content"
|
|
34
|
+
},
|
|
35
|
+
schema: {},
|
|
36
|
+
guideline: "One order as a link to that order, showing its number, placed date, total, item count, and status badge, plus a delivery estimate while it is ongoing. The list renders it; do not place it on a page alone."
|
|
37
|
+
});
|
|
38
|
+
function instant(value) {
|
|
39
|
+
if (!value) return null;
|
|
40
|
+
const date = new Date(value);
|
|
41
|
+
return Number.isNaN(date.getTime()) ? null : date;
|
|
42
|
+
}
|
|
43
|
+
function moneyAmount(amount) {
|
|
44
|
+
const value = typeof amount === "number" ? amount : Number(amount);
|
|
45
|
+
return Number.isFinite(value) ? value : null;
|
|
46
|
+
}
|
|
47
|
+
function estimateValue(item) {
|
|
48
|
+
if (item.completion.view !== "ONGOING") return null;
|
|
49
|
+
const max = item.shippingEstimatedDateMax?.trim();
|
|
50
|
+
if (max) return max;
|
|
51
|
+
return item.shippingEstimatedDateMin?.trim() || null;
|
|
52
|
+
}
|
|
53
|
+
function OrderListRowSkeleton({ className, ...props }) {
|
|
54
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
55
|
+
...props,
|
|
56
|
+
className,
|
|
57
|
+
"data-fs-order-list-row-skeleton": "",
|
|
58
|
+
"aria-hidden": "true",
|
|
59
|
+
children: [/* @__PURE__ */ jsx("span", { "data-fs-order-list-row-skeleton-fact": "" }), /* @__PURE__ */ jsx("span", { "data-fs-order-list-row-skeleton-fact": "" })]
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
const ORDER_PAGE = { standard: "order" };
|
|
63
|
+
/**
|
|
64
|
+
* The row's own order: a reference gets `orderId` as a param, and a string is the path the orders
|
|
65
|
+
* live under, which gets the encoded id as its last segment (before any query or hash).
|
|
66
|
+
*/
|
|
67
|
+
function orderTarget(href, orderId) {
|
|
68
|
+
if (typeof href !== "string") return {
|
|
69
|
+
...href,
|
|
70
|
+
params: {
|
|
71
|
+
...href.params,
|
|
72
|
+
orderId
|
|
73
|
+
}
|
|
74
|
+
};
|
|
75
|
+
const cut = href.search(/[?#]/);
|
|
76
|
+
const path = cut === -1 ? href : href.slice(0, cut);
|
|
77
|
+
const tail = cut === -1 ? "" : href.slice(cut);
|
|
78
|
+
return `${path.replace(/\/+$/, "")}/${encodeURIComponent(orderId)}${tail}`;
|
|
79
|
+
}
|
|
80
|
+
function OrderListRow({ $data, href = ORDER_PAGE, className, ref }) {
|
|
81
|
+
const { formatMoney, formatDate } = useStorefrontFormatters();
|
|
82
|
+
const badge = completionBadgeModel($data.completion);
|
|
83
|
+
const placed = instant($data.placedAt);
|
|
84
|
+
const amount = $data.total ? moneyAmount($data.total.amount) : null;
|
|
85
|
+
const estimate = instant(estimateValue($data));
|
|
86
|
+
return /* @__PURE__ */ jsxs(StorefrontLink, {
|
|
87
|
+
ref,
|
|
88
|
+
href: orderTarget(href, $data.id),
|
|
89
|
+
"aria-label": $data.id,
|
|
90
|
+
className,
|
|
91
|
+
"data-fs-order-list-row": "",
|
|
92
|
+
"data-fs-order-list-row-state": badge?.state,
|
|
93
|
+
children: [
|
|
94
|
+
/* @__PURE__ */ jsx("span", {
|
|
95
|
+
"data-fs-order-list-row-id": "",
|
|
96
|
+
children: $data.id
|
|
97
|
+
}),
|
|
98
|
+
placed ? /* @__PURE__ */ jsx("time", {
|
|
99
|
+
dateTime: $data.placedAt ?? void 0,
|
|
100
|
+
"data-fs-order-list-row-placed": "",
|
|
101
|
+
children: formatDate(placed)
|
|
102
|
+
}) : null,
|
|
103
|
+
amount != null && $data.total ? /* @__PURE__ */ jsx("span", {
|
|
104
|
+
"data-fs-order-list-row-total": "",
|
|
105
|
+
children: formatMoney(amount, { currency: $data.total.currencyCode })
|
|
106
|
+
}) : null,
|
|
107
|
+
$data.itemCount == null ? null : /* @__PURE__ */ jsx("span", {
|
|
108
|
+
"data-fs-order-list-row-count": "",
|
|
109
|
+
children: $data.itemCount
|
|
110
|
+
}),
|
|
111
|
+
badge ? /* @__PURE__ */ jsx(OrderStatusBadge, {
|
|
112
|
+
state: badge.state,
|
|
113
|
+
tone: badge.tone,
|
|
114
|
+
label: badge.label
|
|
115
|
+
}) : null,
|
|
116
|
+
estimate ? /* @__PURE__ */ jsx("time", {
|
|
117
|
+
dateTime: estimateValue($data) ?? void 0,
|
|
118
|
+
"data-fs-order-list-row-estimate": "",
|
|
119
|
+
children: formatDate(estimate)
|
|
120
|
+
}) : null
|
|
121
|
+
]
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
//#endregion
|
|
125
|
+
export { OrderListRow, OrderListRowDefinition, OrderListRowSkeleton };
|
|
126
|
+
|
|
127
|
+
//# sourceMappingURL=order-list-row.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"order-list-row.js","names":[],"sources":["../../../src/matter/order-list-row/order-list-row.tsx"],"sourcesContent":["'use client';\n\nimport { defineComponent } from '@vtex/fs-core';\nimport type { ComponentPropsWithRef, Ref } from 'react';\nimport { OrderStatusBadge } from '../../particles/order-status-badge/order-status-badge.js';\nimport { useStorefrontFormatters } from '../../sdk/format/client.js';\nimport { StorefrontLink } from '../../sdk/navigation/storefront-link.js';\nimport type { PageRef } from '../../sdk/navigation/types.js';\nimport { completionBadgeModel } from '../../sdk/orders/completion-badge.js';\n\nconst fragment = /* GraphQL */ `\n fragment OrderListRowData on CustomerOrderListItem {\n id\n placedAt\n total {\n amount\n currencyCode\n }\n itemCount\n completion {\n view\n label\n }\n shippingEstimatedDateMin\n shippingEstimatedDateMax\n }\n`;\n\nexport type OrderListItemData = {\n id: string;\n placedAt: string | null;\n total: { amount: string | number; currencyCode: string } | null;\n itemCount: number | null;\n completion: { view: string; label: string };\n shippingEstimatedDateMin: string | null;\n shippingEstimatedDateMax: string | null;\n};\n\nexport type OrderListRowProps = Readonly<{\n $data: OrderListItemData;\n /**\n * The order page; the row fills `orderId`. A string is the path the orders live under, and the row\n * appends its id. `OrderList` passes its `orderHref`.\n */\n href?: PageRef | string;\n className?: string;\n ref?: Ref<HTMLAnchorElement>;\n}>;\n\nexport const OrderListRowDefinition = defineComponent<OrderListRowProps>({\n name: 'OrderListRow',\n importPath: '@vtex/faststore/components',\n component: OrderListRow,\n fragment,\n skeleton: OrderListRowSkeleton,\n editor: { label: 'Order List Row', category: 'content' },\n schema: {},\n guideline:\n 'One order as a link to that order, showing its number, placed date, total, item count, and status badge, plus a delivery estimate while it is ongoing. The list renders it; do not place it on a page alone.',\n});\n\nfunction instant(value: string | null): Date | null {\n if (!value) {\n return null;\n }\n const date = new Date(value);\n return Number.isNaN(date.getTime()) ? null : date;\n}\n\nfunction moneyAmount(amount: string | number): number | null {\n const value = typeof amount === 'number' ? amount : Number(amount);\n return Number.isFinite(value) ? value : null;\n}\n\nfunction estimateValue(item: OrderListItemData): string | null {\n if (item.completion.view !== 'ONGOING') {\n return null;\n }\n const max = item.shippingEstimatedDateMax?.trim();\n if (max) {\n return max;\n }\n const min = item.shippingEstimatedDateMin?.trim();\n return min || null;\n}\n\nexport function OrderListRowSkeleton({ className, ...props }: ComponentPropsWithRef<'div'>) {\n return (\n <div {...props} className={className} data-fs-order-list-row-skeleton=\"\" aria-hidden=\"true\">\n <span data-fs-order-list-row-skeleton-fact=\"\" />\n <span data-fs-order-list-row-skeleton-fact=\"\" />\n </div>\n );\n}\n\nconst ORDER_PAGE: PageRef = { standard: 'order' };\n\n/**\n * The row's own order: a reference gets `orderId` as a param, and a string is the path the orders\n * live under, which gets the encoded id as its last segment (before any query or hash).\n */\nfunction orderTarget(href: PageRef | string, orderId: string): PageRef | string {\n if (typeof href !== 'string') return { ...href, params: { ...href.params, orderId } };\n const cut = href.search(/[?#]/);\n const path = cut === -1 ? href : href.slice(0, cut);\n const tail = cut === -1 ? '' : href.slice(cut);\n return `${path.replace(/\\/+$/, '')}/${encodeURIComponent(orderId)}${tail}`;\n}\n\nexport function OrderListRow({ $data, href = ORDER_PAGE, className, ref }: OrderListRowProps) {\n const { formatMoney, formatDate } = useStorefrontFormatters();\n const badge = completionBadgeModel($data.completion);\n const placed = instant($data.placedAt);\n const amount = $data.total ? moneyAmount($data.total.amount) : null;\n const estimate = instant(estimateValue($data));\n\n return (\n <StorefrontLink\n ref={ref}\n href={orderTarget(href, $data.id)}\n aria-label={$data.id}\n className={className}\n data-fs-order-list-row=\"\"\n data-fs-order-list-row-state={badge?.state}\n >\n <span data-fs-order-list-row-id=\"\">{$data.id}</span>\n {placed ? (\n <time dateTime={$data.placedAt ?? undefined} data-fs-order-list-row-placed=\"\">\n {formatDate(placed)}\n </time>\n ) : null}\n {amount != null && $data.total ? (\n <span data-fs-order-list-row-total=\"\">{formatMoney(amount, { currency: $data.total.currencyCode })}</span>\n ) : null}\n {$data.itemCount == null ? null : <span data-fs-order-list-row-count=\"\">{$data.itemCount}</span>}\n {badge ? <OrderStatusBadge state={badge.state} tone={badge.tone} label={badge.label} /> : null}\n {estimate ? (\n <time dateTime={estimateValue($data) ?? undefined} data-fs-order-list-row-estimate=\"\">\n {formatDate(estimate)}\n </time>\n ) : null}\n </StorefrontLink>\n );\n}\n"],"mappings":";;;;;;;;AAiDA,MAAa,yBAAyB,gBAAmC;CACvE,MAAM;CACN,YAAY;CACZ,WAAW;CACX;;;;;;;;;;;;;;;;;CACA,UAAU;CACV,QAAQ;EAAE,OAAO;EAAkB,UAAU;CAAU;CACvD,QAAQ,CAAC;CACT,WACE;AACJ,CAAC;AAED,SAAS,QAAQ,OAAmC;CAClD,IAAI,CAAC,OACH,OAAO;CAET,MAAM,OAAO,IAAI,KAAK,KAAK;CAC3B,OAAO,OAAO,MAAM,KAAK,QAAQ,CAAC,IAAI,OAAO;AAC/C;AAEA,SAAS,YAAY,QAAwC;CAC3D,MAAM,QAAQ,OAAO,WAAW,WAAW,SAAS,OAAO,MAAM;CACjE,OAAO,OAAO,SAAS,KAAK,IAAI,QAAQ;AAC1C;AAEA,SAAS,cAAc,MAAwC;CAC7D,IAAI,KAAK,WAAW,SAAS,WAC3B,OAAO;CAET,MAAM,MAAM,KAAK,0BAA0B,KAAK;CAChD,IAAI,KACF,OAAO;CAGT,OADY,KAAK,0BAA0B,KAAK,KAClC;AAChB;AAEA,SAAgB,qBAAqB,EAAE,WAAW,GAAG,SAAuC;CAC1F,OACE,qBAAC,OAAD;EAAK,GAAI;EAAkB;EAAW,mCAAgC;EAAG,eAAY;EAArF,UAAA,CACE,oBAAC,QAAD,EAAM,wCAAqC,GAAI,CAAA,GAC/C,oBAAC,QAAD,EAAM,wCAAqC,GAAI,CAAA,CAC5C;;AAET;AAEA,MAAM,aAAsB,EAAE,UAAU,QAAQ;;;;;AAMhD,SAAS,YAAY,MAAwB,SAAmC;CAC9E,IAAI,OAAO,SAAS,UAAU,OAAO;EAAE,GAAG;EAAM,QAAQ;GAAE,GAAG,KAAK;GAAQ;EAAQ;CAAE;CACpF,MAAM,MAAM,KAAK,OAAO,MAAM;CAC9B,MAAM,OAAO,QAAQ,KAAK,OAAO,KAAK,MAAM,GAAG,GAAG;CAClD,MAAM,OAAO,QAAQ,KAAK,KAAK,KAAK,MAAM,GAAG;CAC7C,OAAO,GAAG,KAAK,QAAQ,QAAQ,EAAE,EAAE,GAAG,mBAAmB,OAAO,IAAI;AACtE;AAEA,SAAgB,aAAa,EAAE,OAAO,OAAO,YAAY,WAAW,OAA0B;CAC5F,MAAM,EAAE,aAAa,eAAe,wBAAwB;CAC5D,MAAM,QAAQ,qBAAqB,MAAM,UAAU;CACnD,MAAM,SAAS,QAAQ,MAAM,QAAQ;CACrC,MAAM,SAAS,MAAM,QAAQ,YAAY,MAAM,MAAM,MAAM,IAAI;CAC/D,MAAM,WAAW,QAAQ,cAAc,KAAK,CAAC;CAE7C,OACE,qBAAC,gBAAD;EACO;EACL,MAAM,YAAY,MAAM,MAAM,EAAE;EAChC,cAAY,MAAM;EACP;EACX,0BAAuB;EACvB,gCAA8B,OAAO;EANvC,UAAA;GAQE,oBAAC,QAAD;IAAM,6BAA0B;IAAI,UAAA,MAAM;GAAS,CAAA;GAClD,SACC,oBAAC,QAAD;IAAM,UAAU,MAAM,YAAY,KAAA;IAAW,iCAA8B;IACxE,UAAA,WAAW,MAAM;GACd,CAAA,IACJ;GACH,UAAU,QAAQ,MAAM,QACvB,oBAAC,QAAD;IAAM,gCAA6B;IAAI,UAAA,YAAY,QAAQ,EAAE,UAAU,MAAM,MAAM,aAAa,CAAC;GAAQ,CAAA,IACvG;GACH,MAAM,aAAa,OAAO,OAAO,oBAAC,QAAD;IAAM,gCAA6B;IAAI,UAAA,MAAM;GAAgB,CAAA;GAC9F,QAAQ,oBAAC,kBAAD;IAAkB,OAAO,MAAM;IAAO,MAAM,MAAM;IAAM,OAAO,MAAM;GAAQ,CAAA,IAAI;GACzF,WACC,oBAAC,QAAD;IAAM,UAAU,cAAc,KAAK,KAAK,KAAA;IAAW,mCAAgC;IAChF,UAAA,WAAW,QAAQ;GAChB,CAAA,IACJ;EACU;;AAEpB"}
|