@meeovi/layer-commerce 1.0.0 → 1.0.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/app/components/catalog/product/ProductAccordion/ProductAccordion.vue +39 -0
- package/app/components/catalog/product/ProductAccordion/__tests__/ProductAccordion.spec.ts +15 -0
- package/app/components/catalog/product/ProductAccordion/types.ts +5 -0
- package/app/components/catalog/product/ProductProperties/ProductProperties.vue +50 -0
- package/app/components/catalog/product/ProductProperties/__tests__/ProductProperties.spec.ts +15 -0
- package/app/components/catalog/product/ProductProperties/types.ts +5 -0
- package/app/components/catalog/product/ProductSlider/ProductSlider.vue +28 -0
- package/app/components/catalog/product/ProductSlider/__tests__/ProductSlider.spec.ts +14 -0
- package/app/components/catalog/product/ProductSlider/types.ts +7 -0
- package/app/components/catalog/product/RecommendedProducts/RecommendedProducts.vue +12 -0
- package/app/components/catalog/product/RecommendedProducts/types.ts +5 -0
- package/app/components/catalog/product/RenderContentProductSlider/RenderContentProductSlider.vue +11 -0
- package/app/components/catalog/product/add-attribute.vue +54 -0
- package/app/components/catalog/product/add-product-type.vue +54 -0
- package/app/components/catalog/product/add-product.vue +53 -0
- package/app/components/catalog/product/add-showcase.vue +52 -0
- package/app/components/catalog/product/add-station.vue +54 -0
- package/app/components/catalog/product/bestsellers.vue +69 -0
- package/app/components/catalog/product/bidding.vue +93 -0
- package/app/components/catalog/product/colorOptions.vue +58 -0
- package/app/components/catalog/product/deals.vue +61 -0
- package/app/components/catalog/product/exclusives.vue +58 -0
- package/app/components/catalog/product/featuredproducts.vue +69 -0
- package/app/components/catalog/product/giftCard.vue +63 -0
- package/app/components/catalog/product/latestproducts.vue +58 -0
- package/app/components/catalog/product/productCard.vue +71 -0
- package/app/components/catalog/product/productCompare.vue +60 -0
- package/app/components/catalog/product/productCompareTable.vue +441 -0
- package/app/components/catalog/product/productDetails.vue +120 -0
- package/app/components/catalog/product/productFaqs.vue +17 -0
- package/app/components/catalog/product/productGallery.vue +16 -0
- package/app/components/catalog/product/productQty.vue +54 -0
- package/app/components/catalog/product/productReviews.vue +56 -0
- package/app/components/catalog/product/productSpecs.vue +116 -0
- package/app/components/catalog/product/radiostation.vue +36 -0
- package/app/components/catalog/product/recentlyviewed.vue +43 -0
- package/app/components/catalog/product/relatedbrands.vue +54 -0
- package/app/components/catalog/product/relatedproducts.vue +58 -0
- package/app/components/catalog/product/relatedstations.vue +40 -0
- package/app/components/catalog/product/shippingOptions.vue +41 -0
- package/app/components/catalog/product/sizeOptions.vue +47 -0
- package/app/components/catalog/product/update-attribute-set.vue +209 -0
- package/app/components/catalog/product/update-attribute.vue +118 -0
- package/app/components/catalog/product/update-product.vue +372 -0
- package/app/components/catalog/product/update-showcase.vue +153 -0
- package/app/components/catalog/shops/relatedstores.vue +52 -0
- package/app/components/catalog/shops/restaurant.vue +66 -0
- package/app/components/catalog/shops/stores.vue +44 -0
- package/app/components/catalog/vendor/README.md +3 -0
- package/app/components/catalog/vendor/blocks/biggestcustomers.vue +33 -0
- package/app/components/catalog/vendor/blocks/lowestselling.vue +33 -0
- package/app/components/catalog/vendor/blocks/topcategories.vue +33 -0
- package/app/components/catalog/vendor/blocks/topproducts.vue +27 -0
- package/app/components/catalog/vendor/pages/attributes.vue +43 -0
- package/app/components/catalog/vendor/pages/commissions.vue +43 -0
- package/app/components/catalog/vendor/pages/crm.vue +67 -0
- package/app/components/catalog/vendor/pages/dashboard.vue +46 -0
- package/app/components/catalog/vendor/pages/emails.vue +43 -0
- package/app/components/catalog/vendor/pages/enquiries.vue +43 -0
- package/app/components/catalog/vendor/pages/invoices.vue +43 -0
- package/app/components/catalog/vendor/pages/orders.vue +68 -0
- package/app/components/catalog/vendor/pages/products.vue +55 -0
- package/app/components/catalog/vendor/pages/reviews.vue +48 -0
- package/app/components/catalog/vendor/pages/shipments.vue +43 -0
- package/app/components/catalog/vendor/pages/stores.vue +43 -0
- package/app/components/content/blocks/breadcrumbs.vue +0 -0
- package/app/components/content/blocks/currencySwitcher.vue +0 -0
- package/app/components/content/blocks/languageSwitcher.vue +0 -0
- package/app/components/content/blocks/videoproduct.vue +9 -0
- package/app/components/content/pages/checkout.vue +118 -0
- package/app/components/content/pages/meeoviGlobal.vue +68 -0
- package/app/components/content/pages/pickup-locations.vue +238 -0
- package/app/components/content/pages/showcases.vue +90 -0
- package/app/components/content/pages/success.vue +60 -0
- package/app/components/marketing/add-brand.vue +54 -0
- package/app/components/marketing/add-incentive.vue +54 -0
- package/app/components/marketing/promotions/giftcards.vue +127 -0
- package/app/components/marketing/promotions/subscriptions.vue +134 -0
- package/app/components/marketing/update-incentive.vue +326 -0
- package/app/components/menus/lowernav.vue +78 -0
- package/app/components/partials/LocaleSelector.vue +24 -0
- package/app/components/partials/ShoppingCart.vue +128 -0
- package/app/components/partials/StripePayment.vue +149 -0
- package/app/components/partials/addToCartBtn.vue +40 -0
- package/app/components/partials/cartItem.vue +124 -0
- package/app/components/partials/checkoutButton.vue +44 -0
- package/app/components/partials/compareBtn.vue +68 -0
- package/app/components/partials/ratings.vue +13 -0
- package/app/components/partials/store/CurrencySelector.vue +133 -0
- package/app/components/partials/store/StoreSwitcher.vue +13 -0
- package/app/components/related/brandCard.vue +41 -0
- package/app/components/related/incentiveCard.vue +44 -0
- package/app/components/related/invoiceCard.vue +43 -0
- package/app/components/related/orderCard.vue +43 -0
- package/app/components/related/relatedproducts.vue +17 -0
- package/app/components/sales/CartPageContent/CartPageContent.vue +37 -0
- package/app/components/sales/CheckoutAddress/CheckoutAddress.vue +50 -0
- package/app/components/sales/CheckoutAddress/__tests__/CheckoutAddress.spec.ts +16 -0
- package/app/components/sales/CheckoutAddress/types.ts +15 -0
- package/app/components/sales/CheckoutPayment/CheckoutPayment.vue +68 -0
- package/app/components/sales/CheckoutPayment/__tests__/CheckoutPayment.spec.ts +14 -0
- package/app/components/sales/CheckoutPayment/types.ts +12 -0
- package/app/components/sales/OrderSummary/OrderSummary.vue +57 -0
- package/app/components/sales/OrderSummary/__tests__/ContactInformation.spec.ts +52 -0
- package/app/components/sales/OrderSummary/types.ts +5 -0
- package/app/components/sales/incentives.vue +247 -0
- package/app/components/sales/invoices.vue +107 -0
- package/app/components/sales/orders.vue +378 -0
- package/app/components/sales/shipments.vue +65 -0
- package/app/components/sales/transactions.vue +109 -0
- package/app/components/shop/add-shop.vue +54 -0
- package/app/components/shop/cart/cartItem.vue +182 -0
- package/app/components/shop/cart/checkout.vue +415 -0
- package/app/components/shop/checkout/StripeCardElement.vue +206 -0
- package/app/components/shop/checkout/StripeCheckout.vue +49 -0
- package/app/components/shop/checkout/addressBilling.vue +263 -0
- package/app/components/shop/checkout/addressShipping.vue +175 -0
- package/app/components/shop/checkout/cart/ProductItem.vue +56 -0
- package/app/components/shop/checkout/cart/PromotionItem.vue +53 -0
- package/app/composables/_types.ts +17 -0
- package/app/composables/adapters/abstract/cartAdapter.ts +0 -0
- package/app/composables/adapters/abstract/categoryAdapter.ts +0 -0
- package/app/composables/adapters/abstract/customerAdapter.ts +0 -0
- package/app/composables/adapters/abstract/inventoryAdapter.ts +0 -0
- package/app/composables/adapters/abstract/orderAdapter.ts +0 -0
- package/app/composables/adapters/abstract/productAdapter.ts +7 -0
- package/app/composables/cart/registry.ts +13 -0
- package/app/composables/cart/types.ts +18 -0
- package/app/composables/cart/useCart.ts +15 -0
- package/app/composables/config.ts +19 -0
- package/app/composables/defs/apiDefinitions.ts +55 -0
- package/app/composables/defs/extension.feature +40 -0
- package/app/composables/defs/extension.mocks.ts +39 -0
- package/app/composables/defs/extension.test.ts +280 -0
- package/app/composables/defs/extension.ts +236 -0
- package/app/composables/defs/index.ts +3 -0
- package/app/composables/defs/types.ts +136 -0
- package/app/composables/domain/cart.ts +0 -0
- package/app/composables/domain/category.ts +0 -0
- package/app/composables/domain/order.ts +0 -0
- package/app/composables/domain/price.ts +0 -0
- package/app/composables/domain/product.ts +8 -0
- package/app/composables/domain/reward.ts +0 -0
- package/app/composables/domain/transactions.ts +0 -0
- package/app/composables/helpers/contextualizedNormalizers.feature +14 -0
- package/app/composables/helpers/contextualizedNormalizers.test.ts +85 -0
- package/app/composables/helpers/contextualizedNormalizers.ts +20 -0
- package/app/composables/helpers/index.ts +1 -0
- package/app/composables/index.ts +5 -0
- package/app/composables/methods/auth.ts +83 -0
- package/app/composables/methods/cart.ts +119 -0
- package/app/composables/methods/category.ts +27 -0
- package/app/composables/methods/checkout.ts +54 -0
- package/app/composables/methods/customer.ts +52 -0
- package/app/composables/methods/helpers.ts +5 -0
- package/app/composables/methods/index.ts +75 -0
- package/app/composables/methods/order.ts +39 -0
- package/app/composables/methods/product.ts +95 -0
- package/app/composables/methods/settings.ts +16 -0
- package/app/composables/models/cart.ts +95 -0
- package/app/composables/models/category.ts +13 -0
- package/app/composables/models/checkout.ts +17 -0
- package/app/composables/models/customer.ts +16 -0
- package/app/composables/models/facets.ts +25 -0
- package/app/composables/models/index.ts +94 -0
- package/app/composables/models/order.ts +43 -0
- package/app/composables/models/product.ts +73 -0
- package/app/composables/models/shared.ts +75 -0
- package/app/composables/products/registry.ts +13 -0
- package/app/composables/products/types.ts +13 -0
- package/app/composables/products/useEvents.ts +0 -0
- package/app/composables/products/useGiftCards.ts +0 -0
- package/app/composables/products/useProducts.ts +12 -0
- package/app/composables/products/useSubscriptions.ts +0 -0
- package/app/composables/stores/cart.ts +218 -0
- package/app/composables/stores/cartStore.ts +300 -0
- package/app/composables/stores/checkout.ts +19 -0
- package/app/composables/stores/compare.ts +65 -0
- package/app/composables/stores/currency.js +29 -0
- package/app/composables/stores/digital-products.js +11 -0
- package/app/composables/stores/index.js +0 -0
- package/app/composables/stores/orders.ts +161 -0
- package/app/composables/stores/product.ts +26 -0
- package/app/composables/stores/productList.ts +0 -0
- package/app/composables/stores/productListInfo.ts +0 -0
- package/app/composables/stores/products.ts +112 -0
- package/app/composables/stores/recentlyViewedProducts.ts +0 -0
- package/app/composables/stores/review.ts +25 -0
- package/app/composables/stores/storeInPickUp.ts +22 -0
- package/app/composables/stores/user.ts +20 -0
- package/app/composables/stores/wishlist.ts +19 -0
- package/app/composables/types/Order.type.ts +181 -0
- package/app/composables/types/index.ts +285 -0
- package/app/composables/types/product.ts +14 -0
- package/app/composables/useBreakpoints/index.ts +1 -0
- package/app/composables/useBreakpoints/useBreakpoints.ts +28 -0
- package/app/composables/useCart/__tests__/useCart.spec.ts +11 -0
- package/app/composables/useCart/index.ts +1 -0
- package/app/composables/useCart/types.ts +17 -0
- package/app/composables/useCart/useCart.ts +46 -0
- package/app/composables/useCartShippingMethods/__tests__/useCartShippingMethods.spec.ts +11 -0
- package/app/composables/useCartShippingMethods/index.ts +1 -0
- package/app/composables/useCartShippingMethods/types.ts +17 -0
- package/app/composables/useCartShippingMethods/useCartShippingMethods.ts +47 -0
- package/app/composables/useContent/index.ts +1 -0
- package/app/composables/useContent/types.ts +44 -0
- package/app/composables/useContent/useContent.ts +45 -0
- package/app/composables/useCustomer/__tests__/useCustomer.spec.ts +25 -0
- package/app/composables/useCustomer/index.ts +2 -0
- package/app/composables/useCustomer/types.ts +17 -0
- package/app/composables/useCustomer/useCustomer.ts +40 -0
- package/app/composables/useCustomerAddress/__tests__/useCustomerAddress.spec.ts +11 -0
- package/app/composables/useCustomerAddress/index.ts +2 -0
- package/app/composables/useCustomerAddress/types.ts +17 -0
- package/app/composables/useCustomerAddress/useCustomerAddress.ts +55 -0
- package/app/composables/useCustomerOrder/__tests__/useCustomerOrder.spec.ts +11 -0
- package/app/composables/useCustomerOrder/adress.ts +10 -0
- package/app/composables/useCustomerOrder/index.ts +2 -0
- package/app/composables/useCustomerOrder/product.ts +37 -0
- package/app/composables/useCustomerOrder/types.ts +40 -0
- package/app/composables/useCustomerOrder/useCustomerOrder.ts +63 -0
- package/app/composables/useCustomerOrders/__tests__/useCustomerOrders.spec.ts +11 -0
- package/app/composables/useCustomerOrders/index.ts +2 -0
- package/app/composables/useCustomerOrders/types.ts +20 -0
- package/app/composables/useCustomerOrders/useCustomerOrders.ts +56 -0
- package/app/composables/useCustomerReturns/__tests__/useCustomerReturns.spec.ts +11 -0
- package/app/composables/useCustomerReturns/index.ts +2 -0
- package/app/composables/useCustomerReturns/types.ts +17 -0
- package/app/composables/useCustomerReturns/useCustomerReturns.ts +41 -0
- package/app/composables/useHandleError/index.ts +1 -0
- package/app/composables/useHandleError/types.ts +11 -0
- package/app/composables/useHandleError/useHandleError.ts +27 -0
- package/app/composables/usePageTitle.ts +16 -0
- package/app/composables/useProduct/index.ts +2 -0
- package/app/composables/useProduct/types.ts +17 -0
- package/app/composables/useProduct/useProduct.ts +42 -0
- package/app/composables/useProductAttribute/__tests__/useProduct.mock.ts +31 -0
- package/app/composables/useProductAttribute/__tests__/useProductAttribute.spec.ts +14 -0
- package/app/composables/useProductAttribute/index.ts +1 -0
- package/app/composables/useProductAttribute/useProductAttribute.ts +37 -0
- package/app/composables/useProductRecommended/__tests__/useProductRecommended.spec.ts +12 -0
- package/app/composables/useProductRecommended/index.ts +1 -0
- package/app/composables/useProductRecommended/types.ts +17 -0
- package/app/composables/useProductRecommended/useProductRecommended.ts +43 -0
- package/app/composables/useProductReviews/__tests__/productReviews.mock.ts +20 -0
- package/app/composables/useProductReviews/__tests__/useProductReviews.spec.ts +22 -0
- package/app/composables/useProductReviews/index.ts +2 -0
- package/app/composables/useProductReviews/types.ts +17 -0
- package/app/composables/useProductReviews/useProductReviews.ts +46 -0
- package/app/composables/useProducts/__tests__/useProducts.spec.ts +11 -0
- package/app/composables/useProducts/types.ts +17 -0
- package/app/composables/useProducts/useProducts.ts +41 -0
- package/app/composables/utils/countryList.ts +14 -0
- package/app/composables/utils/currency.js +56 -0
- package/app/composables/utils/glossary.ts +0 -0
- package/app/composables/utils/importExport.ts +0 -0
- package/app/composables/utils/index.js +0 -0
- package/app/composables/utils/print.ts +0 -0
- package/app/composables/utils/shopThemes.ts +0 -0
- package/app/composables/utils/statistics.ts +0 -0
- package/app/composables/utils/stock.ts +0 -0
- package/app/composables/utils/stripe.ts +16 -0
- package/app/composables/utils/taxation.ts +0 -0
- package/app/composables/utils/tellFriends.ts +0 -0
- package/app/composables/validationRules/index.ts +1 -0
- package/app/composables/validationRules/password.feature +67 -0
- package/app/composables/validationRules/password.test.ts +89 -0
- package/app/composables/validationRules/password.ts +25 -0
- package/app/composables/vendors/index.ts +0 -0
- package/app/composables/vendors/registry.ts +0 -0
- package/app/composables/vendors/useAffiliates.ts +0 -0
- package/app/composables/vendors/useCommission.ts +0 -0
- package/app/pages/brand/[...slug].vue +92 -0
- package/app/pages/brands.vue +90 -0
- package/app/pages/cart.vue +142 -0
- package/app/pages/compare.vue +166 -0
- package/app/pages/incentive/[...id].vue +66 -0
- package/app/pages/invoice/[id].vue +309 -0
- package/app/pages/order/[id].vue +327 -0
- package/app/pages/product/[...id].vue +309 -0
- package/app/pages/product/showcases/index.vue +86 -0
- package/app/pages/shipment/[...id].vue +176 -0
- package/app/pages/shop/[...slug].vue +164 -0
- package/app/pages/shops.vue +83 -0
- package/app/pages/subscription/[...id].vue +147 -0
- package/app/pages/transaction/[...id].vue +74 -0
- package/app/types/shims-imports.d.ts +13 -0
- package/app/utils/client.ts +26 -0
- package/app/utils/index.ts +53 -0
- package/app/utils/normalizer.ts +23 -0
- package/app/utils/normalizers/magento.ts +29 -0
- package/app/utils/normalizers/shopify.ts +29 -0
- package/dist/client.js +1 -1
- package/nuxt.config.ts +11 -0
- package/package.json +9 -24
- package/tsconfig.json +15 -0
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div class="compare-page">
|
|
3
|
+
<div class="container mx-auto px-4 py-8">
|
|
4
|
+
<h1 class="text-3xl font-bold mb-8">Compare Products</h1>
|
|
5
|
+
|
|
6
|
+
<div v-if="loading" class="text-center">
|
|
7
|
+
<p>Loading products...</p>
|
|
8
|
+
</div>
|
|
9
|
+
|
|
10
|
+
<div v-else-if="error" class="text-center text-red-500">
|
|
11
|
+
<p>Error loading products: {{ error.message }}</p>
|
|
12
|
+
</div>
|
|
13
|
+
|
|
14
|
+
<div v-else-if="!products.length" class="text-center">
|
|
15
|
+
<p>No products selected for comparison. Add products to your compare list to see them here.</p>
|
|
16
|
+
<NuxtLink to="/" class="mt-4 inline-block text-blue-500 hover:text-blue-700">
|
|
17
|
+
Continue Shopping
|
|
18
|
+
</NuxtLink>
|
|
19
|
+
</div>
|
|
20
|
+
|
|
21
|
+
<div v-else>
|
|
22
|
+
<productCompareTable
|
|
23
|
+
:products="products"
|
|
24
|
+
@remove-product="handleRemoveProduct"
|
|
25
|
+
/>
|
|
26
|
+
|
|
27
|
+
<div class="mt-8 flex justify-between">
|
|
28
|
+
<button
|
|
29
|
+
@click="clearCompareList"
|
|
30
|
+
class="px-4 py-2 bg-red-500 text-white rounded hover:bg-red-600"
|
|
31
|
+
>
|
|
32
|
+
Clear Compare List
|
|
33
|
+
</button>
|
|
34
|
+
<NuxtLink
|
|
35
|
+
to="/"
|
|
36
|
+
class="px-4 py-2 bg-blue-500 text-white rounded hover:bg-blue-600"
|
|
37
|
+
>
|
|
38
|
+
Continue Shopping
|
|
39
|
+
</NuxtLink>
|
|
40
|
+
</div>
|
|
41
|
+
</div>
|
|
42
|
+
</div>
|
|
43
|
+
</div>
|
|
44
|
+
</template>
|
|
45
|
+
|
|
46
|
+
<script setup>
|
|
47
|
+
import { ref, onMounted, computed } from 'vue';
|
|
48
|
+
import { useQuery, useMutation } from '@vue/apollo-composable';
|
|
49
|
+
import gql from 'graphql-tag';
|
|
50
|
+
import productCompareTable from '~/components/catalog/product/productCompareTable.vue';
|
|
51
|
+
|
|
52
|
+
// GraphQL query to get compared products
|
|
53
|
+
const COMPARED_PRODUCTS_QUERY = gql`
|
|
54
|
+
query GetComparedProducts {
|
|
55
|
+
customer {
|
|
56
|
+
compare_list {
|
|
57
|
+
items {
|
|
58
|
+
product {
|
|
59
|
+
uid
|
|
60
|
+
sku
|
|
61
|
+
name
|
|
62
|
+
image {
|
|
63
|
+
url
|
|
64
|
+
}
|
|
65
|
+
price_range {
|
|
66
|
+
minimum_price {
|
|
67
|
+
regular_price {
|
|
68
|
+
currency
|
|
69
|
+
value
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
categories {
|
|
74
|
+
name
|
|
75
|
+
}
|
|
76
|
+
rating_summary
|
|
77
|
+
review_count
|
|
78
|
+
reviews_summary
|
|
79
|
+
price_history
|
|
80
|
+
custom_attributes
|
|
81
|
+
features
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
`;
|
|
88
|
+
|
|
89
|
+
// GraphQL mutation to clear compare list
|
|
90
|
+
const CLEAR_COMPARE_LIST_MUTATION = gql`
|
|
91
|
+
mutation ClearCompareList {
|
|
92
|
+
clearCompareList {
|
|
93
|
+
compare_list {
|
|
94
|
+
items {
|
|
95
|
+
product {
|
|
96
|
+
uid
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
`;
|
|
103
|
+
|
|
104
|
+
// GraphQL mutation to remove a single product from compare list
|
|
105
|
+
const REMOVE_PRODUCT_MUTATION = gql`
|
|
106
|
+
mutation RemoveFromCompareList($productId: ID!) {
|
|
107
|
+
removeProductsFromCompareList(input: { product_ids: [$productId] }) {
|
|
108
|
+
compare_list {
|
|
109
|
+
items {
|
|
110
|
+
product {
|
|
111
|
+
uid
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
`;
|
|
118
|
+
|
|
119
|
+
const { result, loading, error, refetch } = useQuery(COMPARED_PRODUCTS_QUERY);
|
|
120
|
+
const { mutate: clearCompareListMutation } = useMutation(CLEAR_COMPARE_LIST_MUTATION);
|
|
121
|
+
const { mutate: removeProductMutation } = useMutation(REMOVE_PRODUCT_MUTATION);
|
|
122
|
+
|
|
123
|
+
const products = computed(() => {
|
|
124
|
+
return result.value?.customer?.compare_list?.items?.map(item => item.product) || [];
|
|
125
|
+
});
|
|
126
|
+
|
|
127
|
+
const clearCompareList = async () => {
|
|
128
|
+
try {
|
|
129
|
+
await clearCompareListMutation();
|
|
130
|
+
await refetch();
|
|
131
|
+
} catch (error) {
|
|
132
|
+
console.error('Failed to clear compare list:', error);
|
|
133
|
+
}
|
|
134
|
+
};
|
|
135
|
+
|
|
136
|
+
const handleRemoveProduct = async (productId) => {
|
|
137
|
+
try {
|
|
138
|
+
await removeProductMutation({
|
|
139
|
+
variables: {
|
|
140
|
+
productId
|
|
141
|
+
}
|
|
142
|
+
});
|
|
143
|
+
await refetch();
|
|
144
|
+
} catch (error) {
|
|
145
|
+
console.error('Failed to remove product from compare list:', error);
|
|
146
|
+
}
|
|
147
|
+
};
|
|
148
|
+
|
|
149
|
+
onMounted(async () => {
|
|
150
|
+
await refetch();
|
|
151
|
+
});
|
|
152
|
+
</script>
|
|
153
|
+
|
|
154
|
+
<style scoped>
|
|
155
|
+
.compare-page {
|
|
156
|
+
min-height: 100vh;
|
|
157
|
+
background-color: #f9fafb;
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
@media (max-width: 768px) {
|
|
161
|
+
.container {
|
|
162
|
+
padding-left: 1rem;
|
|
163
|
+
padding-right: 1rem;
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
</style>
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div>
|
|
3
|
+
<section data-bs-version="5.1" class="firmm4_features1 features1 cid-uhBuptnWmV" id="features1-9v"
|
|
4
|
+
data-sortbtn="btn-primary">
|
|
5
|
+
<div class="container-fluid">
|
|
6
|
+
<div class="row justify-content-center">
|
|
7
|
+
<div class="card">
|
|
8
|
+
<div class="card_wrapper">
|
|
9
|
+
<div class="card-box">
|
|
10
|
+
<div class="icon_block">
|
|
11
|
+
<div class="iconfont-wrapper">
|
|
12
|
+
<span class="mbr-iconfont mobi-mbri-cart-full mobi-mbri"></span>
|
|
13
|
+
</div>
|
|
14
|
+
</div>
|
|
15
|
+
<p class="card-text mbr-fonts-style display-4">Invoice: {{ invoice?.id }}</p>
|
|
16
|
+
<p class="card-text mbr-fonts-style display-4">Invoice Date: {{ new Date(invoice?.created_at).toLocaleDateString() }}</p>
|
|
17
|
+
<p class="card-text mbr-fonts-style display-4">Order #: {{ invoice?.order_id?.orders_id?.id }}</p>
|
|
18
|
+
<p class="card-text mbr-fonts-style display-4">Order Date: {{ new Date(invoice?.updated_at).toLocaleDateString() }}
|
|
19
|
+
</p>
|
|
20
|
+
<p class="card-text mbr-fonts-style display-4">Bill to Name: {{ invoice?.user?.first_name }} {{ invoice?.user?.last_name }}</p>
|
|
21
|
+
<p class="card-text mbr-fonts-style display-4">Status: {{ invoice?.state }}</p>
|
|
22
|
+
<p class="card-text mbr-fonts-style display-4">Grand Total (Base): {{ invoice?.base_grand_total }}</p>
|
|
23
|
+
<p class="card-text mbr-fonts-style display-4">Grand Total (Purchased): {{ invoice?.grand_total }}</p>
|
|
24
|
+
<p class="btn_link mbr-fonts-style display-4"><NuxtLink :to="`/commerce/invoice/${invoice?.id}`" class="text-secondary">View<span class="mobi-mbri mobi-mbri-right mbr-iconfont"></span></NuxtLink></p>
|
|
25
|
+
</div>
|
|
26
|
+
</div>
|
|
27
|
+
</div>
|
|
28
|
+
</div>
|
|
29
|
+
</div>
|
|
30
|
+
</section>
|
|
31
|
+
</div>
|
|
32
|
+
</template>
|
|
33
|
+
|
|
34
|
+
<script setup>
|
|
35
|
+
import {
|
|
36
|
+
ref,
|
|
37
|
+
onMounted
|
|
38
|
+
} from 'vue';
|
|
39
|
+
const route = useRoute();
|
|
40
|
+
const {
|
|
41
|
+
$directus,
|
|
42
|
+
$readItem
|
|
43
|
+
} = useNuxtApp()
|
|
44
|
+
const user = useSupabaseUser()
|
|
45
|
+
|
|
46
|
+
const {
|
|
47
|
+
data: invoice
|
|
48
|
+
} = await useAsyncData('invoice', () => {
|
|
49
|
+
return $directus.request($readItem('invoices', route.params.id, {
|
|
50
|
+
filter: {
|
|
51
|
+
user: {
|
|
52
|
+
_eq: `${user?.id}`
|
|
53
|
+
}
|
|
54
|
+
},
|
|
55
|
+
limit: 1
|
|
56
|
+
})).then(response => response?.[0])
|
|
57
|
+
})
|
|
58
|
+
|
|
59
|
+
useHead({
|
|
60
|
+
title: 'Invoice' + invoice?.value?.id || 'Invoice Page',
|
|
61
|
+
})
|
|
62
|
+
|
|
63
|
+
definePageMeta({
|
|
64
|
+
//middleware: ['auth-logged-in'],
|
|
65
|
+
})
|
|
66
|
+
</script>
|
|
@@ -0,0 +1,309 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div>
|
|
3
|
+
<profilebar />
|
|
4
|
+
<section data-bs-version="5.1" class="features07 scalem5 cid-uhB4hw1yxB mbr-fullscreen" id="features07-9l">
|
|
5
|
+
<div class="container">
|
|
6
|
+
<div class="row">
|
|
7
|
+
<div class="col-12 col-lg-10 card">
|
|
8
|
+
<div class="title-wrapper">
|
|
9
|
+
<h2 class="mbr-section-title mbr-fonts-style display-5">
|
|
10
|
+
View Invoice</h2>
|
|
11
|
+
</div>
|
|
12
|
+
</div>
|
|
13
|
+
<div class="col-12 col-lg-8">
|
|
14
|
+
<div class="items-wrapper">
|
|
15
|
+
<div class="item features-without-image item-mb">
|
|
16
|
+
<div class="item-wrapper">
|
|
17
|
+
<div class="card-box">
|
|
18
|
+
<div class="icon-wrapper">
|
|
19
|
+
<span class="mbr-iconfont mobi-mbri-growing-chart mobi-mbri"></span>
|
|
20
|
+
</div>
|
|
21
|
+
<h4 class="card-title mbr-fonts-style display-7">
|
|
22
|
+
Order Information
|
|
23
|
+
</h4>
|
|
24
|
+
<NuxtLink class="card-text mbr-fonts-style display-7" :to="`/order/${invoice?.order_id}`">Order #:
|
|
25
|
+
{{ invoice?.order_id }}</NuxtLink>
|
|
26
|
+
<p class="card-text mbr-fonts-style display-7">Order Date:
|
|
27
|
+
{{ new Date(invoice?.created_at).toLocaleDateString() }}</p>
|
|
28
|
+
<p class="card-text mbr-fonts-style display-7">Order Status:
|
|
29
|
+
{{ invoice?.state }}</p>
|
|
30
|
+
<p class="card-text mbr-fonts-style display-7">Purchased From: {{ invoice?.store_id }}</p>
|
|
31
|
+
</div>
|
|
32
|
+
</div>
|
|
33
|
+
</div>
|
|
34
|
+
<div class="item features-without-image item-mb">
|
|
35
|
+
<div class="item-wrapper">
|
|
36
|
+
<div class="card-box">
|
|
37
|
+
<div class="icon-wrapper">
|
|
38
|
+
<span class="mbr-iconfont mobi-mbri-globe-2 mobi-mbri"></span>
|
|
39
|
+
</div>
|
|
40
|
+
<h4 class="card-title mbr-fonts-style display-7">
|
|
41
|
+
Account Information
|
|
42
|
+
</h4>
|
|
43
|
+
<p class="card-text mbr-fonts-style display-7">Customer Name: </p>
|
|
44
|
+
<p class="card-text mbr-fonts-style display-7">Email: {{ invoice?.email_sent }}</p>
|
|
45
|
+
<p class="card-text mbr-fonts-style display-7">Customer Group: </p>
|
|
46
|
+
</div>
|
|
47
|
+
</div>
|
|
48
|
+
</div>
|
|
49
|
+
<div class="item features-without-image item-mb">
|
|
50
|
+
<div class="item-wrapper">
|
|
51
|
+
<div class="card-box">
|
|
52
|
+
<div class="icon-wrapper">
|
|
53
|
+
<span class="mbr-iconfont mobi-mbri-delivery mobi-mbri"></span>
|
|
54
|
+
</div>
|
|
55
|
+
<h4 class="card-title mbr-fonts-style display-7">
|
|
56
|
+
Billing Address
|
|
57
|
+
</h4>
|
|
58
|
+
<p class="card-text mbr-fonts-style display-7">{{ invoice?.billing_address_id }}
|
|
59
|
+
</p>
|
|
60
|
+
</div>
|
|
61
|
+
</div>
|
|
62
|
+
</div>
|
|
63
|
+
<div class="item features-without-image item-mb">
|
|
64
|
+
<div class="item-wrapper">
|
|
65
|
+
<div class="card-box">
|
|
66
|
+
<div class="icon-wrapper">
|
|
67
|
+
<span class="mbr-iconfont mobi-mbri-refresh mobi-mbri"></span>
|
|
68
|
+
</div>
|
|
69
|
+
<h4 class="card-title mbr-fonts-style display-7">
|
|
70
|
+
Shipping Address
|
|
71
|
+
</h4>
|
|
72
|
+
<p class="card-text mbr-fonts-style display-7">{{ invoice?.shipping_address_id }}
|
|
73
|
+
</p>
|
|
74
|
+
</div>
|
|
75
|
+
</div>
|
|
76
|
+
</div>
|
|
77
|
+
<div class="item features-without-image item-mb">
|
|
78
|
+
<div class="item-wrapper">
|
|
79
|
+
<div class="card-box">
|
|
80
|
+
<div class="icon-wrapper">
|
|
81
|
+
<span class="mbr-iconfont mobi-mbri-responsive-2 mobi-mbri"></span>
|
|
82
|
+
</div>
|
|
83
|
+
<h4 class="card-title mbr-fonts-style display-7">
|
|
84
|
+
Payment Information
|
|
85
|
+
</h4>
|
|
86
|
+
<p class="card-text mbr-fonts-style display-7">The order was placed using
|
|
87
|
+
{{ invoice?.order_currency_code }}</p>
|
|
88
|
+
</div>
|
|
89
|
+
</div>
|
|
90
|
+
</div>
|
|
91
|
+
<div class="item features-without-image item-mb">
|
|
92
|
+
<div class="item-wrapper">
|
|
93
|
+
<div class="card-box">
|
|
94
|
+
<div class="icon-wrapper">
|
|
95
|
+
<span class="mbr-iconfont mobi-mbri-cash mobi-mbri"></span>
|
|
96
|
+
</div>
|
|
97
|
+
<h4 class="card-title mbr-fonts-style display-7">
|
|
98
|
+
Shipping Information
|
|
99
|
+
</h4>
|
|
100
|
+
<p class="card-text mbr-fonts-style display-7">{{ invoice?.shipping_address_id }}
|
|
101
|
+
</p>
|
|
102
|
+
<p class="card-text mbr-fonts-style display-7">Total Shipping Charges: {{ invoice?.shipping_amount }}</p>
|
|
103
|
+
<p class="card-text mbr-fonts-style display-7">
|
|
104
|
+
{{ invoice?.shipping_discount_tax_compensation_amount }}</p>
|
|
105
|
+
<p class="card-text mbr-fonts-style display-7">{{ invoice?.shipping_incl_tax }}</p>
|
|
106
|
+
<p class="card-text mbr-fonts-style display-7">{{ invoice?.shipping_tax_amount }}
|
|
107
|
+
</p>
|
|
108
|
+
</div>
|
|
109
|
+
</div>
|
|
110
|
+
</div>
|
|
111
|
+
</div>
|
|
112
|
+
|
|
113
|
+
</div>
|
|
114
|
+
</div>
|
|
115
|
+
</div>
|
|
116
|
+
<img src="../../assets/images/background2.jpg" alt="Invoices">
|
|
117
|
+
</section>
|
|
118
|
+
|
|
119
|
+
<v-card title="Invoice Items" flat>
|
|
120
|
+
<div class="container">
|
|
121
|
+
<v-data-table :headers="headers" :items="invoice?.items" :items-per-page="5" class="elevation-1">
|
|
122
|
+
<template v-slot:[`item.name`]="{ item }">
|
|
123
|
+
<strong>{{ item.name }}</strong>
|
|
124
|
+
</template>
|
|
125
|
+
<template v-slot:[`item.price_incl_tax`]="{ item }">
|
|
126
|
+
{{ item.price_incl_tax }}
|
|
127
|
+
</template>
|
|
128
|
+
<template v-slot:[`item.qty`]="{ item }">
|
|
129
|
+
{{ item.qty }}
|
|
130
|
+
</template>
|
|
131
|
+
<template v-slot:[`item.price`]="{ item }">
|
|
132
|
+
{{ item.price }}
|
|
133
|
+
</template>
|
|
134
|
+
<template v-slot:[`item.tax_amount`]="{ item }">
|
|
135
|
+
<span v-dompurify-html="item.tax_amount"></span>
|
|
136
|
+
</template>
|
|
137
|
+
<template v-slot:[`item.discount_amount`]="{ item }">
|
|
138
|
+
{{ item.discount_amount }}
|
|
139
|
+
</template>
|
|
140
|
+
<template v-slot:[`item.row_total`]="{ item }">
|
|
141
|
+
{{ item.row_total }}
|
|
142
|
+
</template>
|
|
143
|
+
</v-data-table>
|
|
144
|
+
</div>
|
|
145
|
+
</v-card>
|
|
146
|
+
<section data-bs-version="5.1" class="pricing1 lodgem5 cid-uhBqGPVpcI" id="apricing1-9s">
|
|
147
|
+
<div class="container">
|
|
148
|
+
<div class="row">
|
|
149
|
+
<div class="col-12">
|
|
150
|
+
<div class="mbr-section-head">
|
|
151
|
+
<h3 class="mbr-section-title mbr-fonts-style mb-0 display-5">
|
|
152
|
+
Invoice Totals</h3>
|
|
153
|
+
|
|
154
|
+
</div>
|
|
155
|
+
<div class="tabl-container">
|
|
156
|
+
<div class="tabl-item-row">
|
|
157
|
+
<div class="tabl-item-column">
|
|
158
|
+
<p class="card-text mbr-fonts-style mb-0 display-7">
|
|
159
|
+
Subtotal
|
|
160
|
+
</p>
|
|
161
|
+
</div>
|
|
162
|
+
<div class="tabl-item-column">
|
|
163
|
+
<p class="card-text mbr-fonts-style mb-0 display-7">
|
|
164
|
+
{{ invoice?.subtotal }}
|
|
165
|
+
</p>
|
|
166
|
+
</div>
|
|
167
|
+
|
|
168
|
+
</div>
|
|
169
|
+
|
|
170
|
+
<div class="tabl-item-row">
|
|
171
|
+
<div class="tabl-item-column">
|
|
172
|
+
<p class="card-text mbr-fonts-style mb-0 display-7">
|
|
173
|
+
Shipping & Handling
|
|
174
|
+
</p>
|
|
175
|
+
</div>
|
|
176
|
+
<div class="tabl-item-column">
|
|
177
|
+
<p class="card-text mbr-fonts-style mb-0 display-7">
|
|
178
|
+
{{ invoice?.base_shipping_incl_tax }}
|
|
179
|
+
</p>
|
|
180
|
+
</div>
|
|
181
|
+
|
|
182
|
+
</div>
|
|
183
|
+
<div class="tabl-item-row">
|
|
184
|
+
<div class="tabl-item-column">
|
|
185
|
+
<p class="card-text mbr-fonts-style mb-0 display-7">
|
|
186
|
+
Adjustment Refund
|
|
187
|
+
</p>
|
|
188
|
+
</div>
|
|
189
|
+
<div class="tabl-item-column">
|
|
190
|
+
<p class="card-text mbr-fonts-style mb-0 display-7">
|
|
191
|
+
{{ invoice?.adjustment_negative }} {{ invoice?.adjustment }}
|
|
192
|
+
{{ invoice?.adjustment_positive }}
|
|
193
|
+
</p>
|
|
194
|
+
</div>
|
|
195
|
+
|
|
196
|
+
</div>
|
|
197
|
+
<div class="tabl-item-row">
|
|
198
|
+
<div class="tabl-item-column">
|
|
199
|
+
<p class="card-text mbr-fonts-style mb-0 display-7">
|
|
200
|
+
Adjustment Fee
|
|
201
|
+
</p>
|
|
202
|
+
</div>
|
|
203
|
+
<div class="tabl-item-column">
|
|
204
|
+
<p class="card-text mbr-fonts-style mb-0 display-7">
|
|
205
|
+
{{ invoice?.base_adjustment_negative }} {{ invoice?.base_adjustment }}
|
|
206
|
+
{{ invoice?.base_adjustment_positive }}
|
|
207
|
+
</p>
|
|
208
|
+
</div>
|
|
209
|
+
|
|
210
|
+
</div>
|
|
211
|
+
<div class="tabl-item-row">
|
|
212
|
+
<div class="tabl-item-column">
|
|
213
|
+
<p class="card-text mbr-fonts-style mb-0 display-7">
|
|
214
|
+
Tax
|
|
215
|
+
</p>
|
|
216
|
+
</div>
|
|
217
|
+
<div class="tabl-item-column">
|
|
218
|
+
<p class="card-text mbr-fonts-style mb-0 display-7">
|
|
219
|
+
{{ invoice?.tax_amount }}
|
|
220
|
+
</p>
|
|
221
|
+
</div>
|
|
222
|
+
</div>
|
|
223
|
+
<div class="tabl-item-row">
|
|
224
|
+
<div class="tabl-item-column">
|
|
225
|
+
<p class="card-text mbr-fonts-style mb-0 display-7">
|
|
226
|
+
<strong>Grand Total</strong>
|
|
227
|
+
</p>
|
|
228
|
+
</div>
|
|
229
|
+
<div class="tabl-item-column">
|
|
230
|
+
<p class="card-text mbr-fonts-style mb-0 display-7">
|
|
231
|
+
<strong>{{ invoice?.grand_total }}</strong>
|
|
232
|
+
</p>
|
|
233
|
+
</div>
|
|
234
|
+
</div>
|
|
235
|
+
</div>
|
|
236
|
+
</div>
|
|
237
|
+
</div>
|
|
238
|
+
</div>
|
|
239
|
+
</section>
|
|
240
|
+
</div>
|
|
241
|
+
</template>
|
|
242
|
+
|
|
243
|
+
<script>
|
|
244
|
+
|
|
245
|
+
export default {
|
|
246
|
+
data: () => ({
|
|
247
|
+
headers: [{
|
|
248
|
+
text: 'Product',
|
|
249
|
+
value: 'name'
|
|
250
|
+
},
|
|
251
|
+
{
|
|
252
|
+
text: 'Price',
|
|
253
|
+
value: 'price_incl_tax'
|
|
254
|
+
},
|
|
255
|
+
{
|
|
256
|
+
text: 'Quantity',
|
|
257
|
+
value: 'qty'
|
|
258
|
+
},
|
|
259
|
+
{
|
|
260
|
+
text: 'Subtotal',
|
|
261
|
+
value: 'price'
|
|
262
|
+
},
|
|
263
|
+
{
|
|
264
|
+
text: 'Tax Amount',
|
|
265
|
+
value: 'tax_amount'
|
|
266
|
+
},
|
|
267
|
+
{
|
|
268
|
+
text: 'Discount Amount',
|
|
269
|
+
value: 'discount_amount'
|
|
270
|
+
},
|
|
271
|
+
{
|
|
272
|
+
text: 'Row Total',
|
|
273
|
+
value: 'tow_total',
|
|
274
|
+
},
|
|
275
|
+
],
|
|
276
|
+
}),
|
|
277
|
+
}
|
|
278
|
+
</script>
|
|
279
|
+
|
|
280
|
+
<script setup>
|
|
281
|
+
const route = useRoute();
|
|
282
|
+
const {
|
|
283
|
+
$directus,
|
|
284
|
+
$readItem
|
|
285
|
+
} = useNuxtApp()
|
|
286
|
+
const user = useSupabaseUser()
|
|
287
|
+
|
|
288
|
+
const {
|
|
289
|
+
data: invoice
|
|
290
|
+
} = await useAsyncData('invoice', () => {
|
|
291
|
+
return $directus.request($readItem('invoices', route.params.id, {
|
|
292
|
+
filter: {
|
|
293
|
+
user: {
|
|
294
|
+
_eq: `${user?.id}`
|
|
295
|
+
}
|
|
296
|
+
},
|
|
297
|
+
limit: 1
|
|
298
|
+
})).then(response => response?.[0])
|
|
299
|
+
})
|
|
300
|
+
|
|
301
|
+
useHead({
|
|
302
|
+
title: 'Invoice' + invoice?.value?.id || 'Invoice Page',
|
|
303
|
+
})
|
|
304
|
+
|
|
305
|
+
|
|
306
|
+
definePageMeta({
|
|
307
|
+
//middleware: ['auth-logged-in'],
|
|
308
|
+
})
|
|
309
|
+
</script>
|