@mframework/layer-commerce 0.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +101 -0
- package/app/cart/useCart.ts +1 -0
- package/app/components/ChevronIcon/ChevronIcon.config.ts +17 -0
- package/app/components/DateSelect/DateSelect.config.ts +15 -0
- package/app/components/Field/Field.config.ts +14 -0
- package/app/components/FieldDate/FieldDate.config.ts +16 -0
- package/app/components/Form/Form.type.ts +8 -0
- package/app/components/Product/Product.config.ts +19 -0
- package/app/components/Product/Stock.config.ts +15 -0
- package/app/components/ProductCustomizableOption/ProductCustomizableOption.config.ts +5 -0
- package/app/components/ProductGallery/ProductGallery.config.ts +15 -0
- package/app/components/ProductReviews/ProductReviews.config.ts +8 -0
- package/app/composables/_types.ts +18 -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 +20 -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/typeHelpers.ts +8 -0
- package/app/composables/defs/types.ts +136 -0
- package/app/composables/domain/product.ts +12 -0
- package/app/composables/featured-products.ts +20 -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 +9 -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/orders.ts +69 -0
- package/app/composables/products/registry.ts +86 -0
- package/app/composables/products/types.ts +8 -0
- package/app/composables/products/useEvents.ts +26 -0
- package/app/composables/products/useGiftCards.ts +29 -0
- package/app/composables/products/useProducts.ts +12 -0
- package/app/composables/products/useSubscriptions.ts +29 -0
- package/app/composables/products.ts +30 -0
- package/app/composables/registry.ts +24 -0
- package/app/composables/useAuth.ts +43 -0
- package/app/composables/useBreakpoints/index.ts +1 -0
- package/app/composables/useBreakpoints/useBreakpoints.ts +28 -0
- package/app/composables/useCache.ts +38 -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/useCatalog.ts +26 -0
- package/app/composables/useContent.ts +26 -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/useInventory.ts +29 -0
- package/app/composables/useLoading.ts +21 -0
- package/app/composables/useNotification.ts +21 -0
- package/app/composables/usePageTitle.ts +20 -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 +22 -0
- package/app/composables/useProducts/useProducts.ts +41 -0
- package/app/composables/useTax.ts +27 -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/normalizers/Cart.query.ts +729 -0
- package/app/normalizers/Cart.type.ts +285 -0
- package/app/normalizers/Category.query.ts +146 -0
- package/app/normalizers/Category.type.ts +55 -0
- package/app/normalizers/CheckEmail.query.ts +28 -0
- package/app/normalizers/Checkout.query.ts +253 -0
- package/app/normalizers/Checkout.type.ts +77 -0
- package/app/normalizers/CmsBlock.query.ts +57 -0
- package/app/normalizers/CmsBlock.type.ts +25 -0
- package/app/normalizers/CmsPage.query.ts +59 -0
- package/app/normalizers/CmsPage.type.ts +26 -0
- package/app/normalizers/Config.query.ts +224 -0
- package/app/normalizers/Config.type.ts +196 -0
- package/app/normalizers/ContactForm.query.ts +49 -0
- package/app/normalizers/CreditMemo.type.ts +49 -0
- package/app/normalizers/GiftCard.type.ts +24 -0
- package/app/normalizers/Invoice.type.ts +58 -0
- package/app/normalizers/Menu.query.ts +54 -0
- package/app/normalizers/Menu.type.ts +22 -0
- package/app/normalizers/MyAccount.query.ts +268 -0
- package/app/normalizers/MyAccount.type.ts +129 -0
- package/app/normalizers/NewsletterSubscription.query.ts +38 -0
- package/app/normalizers/Order.query.ts +741 -0
- package/app/normalizers/Order.type.ts +268 -0
- package/app/normalizers/Payment.type.ts +28 -0
- package/app/normalizers/ProductAlerts.query.ts +23 -0
- package/app/normalizers/ProductCompare.query.ts +226 -0
- package/app/normalizers/ProductCompare.type.ts +90 -0
- package/app/normalizers/ProductList.query.ts +1620 -0
- package/app/normalizers/ProductList.type.ts +726 -0
- package/app/normalizers/Region.query.ts +58 -0
- package/app/normalizers/Region.type.ts +23 -0
- package/app/normalizers/Return.type.ts +50 -0
- package/app/normalizers/Review.query.ts +81 -0
- package/app/normalizers/Review.type.ts +42 -0
- package/app/normalizers/Slider.query.ts +72 -0
- package/app/normalizers/Slider.type.ts +26 -0
- package/app/normalizers/StoreInPickUp.query.ts +54 -0
- package/app/normalizers/StoreInPickUp.type.ts +59 -0
- package/app/normalizers/Subscription.type.ts +25 -0
- package/app/normalizers/Transaction.type.ts +20 -0
- package/app/normalizers/UrlRewrites.query.ts +55 -0
- package/app/normalizers/UrlRewrites.type.ts +25 -0
- package/app/normalizers/Wishlist.query.ts +202 -0
- package/app/normalizers/Wishlist.type.ts +42 -0
- package/app/pages/brand/[...slug].vue +76 -0
- package/app/pages/brands.vue +67 -0
- package/app/pages/cart.vue +142 -0
- package/app/pages/compare.vue +166 -0
- package/app/pages/departments/[...slug].vue +353 -0
- package/app/pages/departments/category/[...slug].vue +114 -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 +158 -0
- package/app/pages/shops.vue +76 -0
- package/app/pages/subscription/[...id].vue +147 -0
- package/app/pages/transaction/[...id].vue +74 -0
- package/app/routes/CategoryPage/CategoryPage.config.ts +28 -0
- package/app/routes/CategoryPage/CategoryPage.type.ts +8 -0
- package/app/routes/Checkout/Checkout.config.ts +3 -0
- package/app/routes/Checkout/Checkout.type.ts +14 -0
- package/app/routes/MyAccount/MyAccount.config.ts +1 -0
- package/app/routes/SearchPage/SearchPage.config.ts +1 -0
- package/app/routes/UrlRewrites/UrlRewrites.config.ts +5 -0
- package/app/stores/Cart/Cart.type.ts +26 -0
- package/app/stores/MyAccount/MyAccount.action.ts +7 -0
- package/app/stores/Notification/Notification.action.ts +40 -0
- package/app/stores/Notification/Notification.type.ts +16 -0
- package/app/stores/Popup/Popup.action.ts +30 -0
- package/app/stores/Product/Product.dispatcher.ts +53 -0
- package/app/stores/Product/Product.reducer.ts +12 -0
- package/app/stores/ProductList/ProductList.dispatcher.ts +35 -0
- package/app/stores/ProductList/ProductList.reducer.ts +13 -0
- package/app/stores/Store.type.ts +31 -0
- package/app/stores/Wishlist/Wishlist.type.ts +12 -0
- package/app/stores/cart.ts +218 -0
- package/app/stores/cartStore.ts +224 -0
- package/app/stores/checkout.ts +18 -0
- package/app/stores/compare.ts +65 -0
- package/app/stores/currency.js +29 -0
- package/app/stores/digital-products.js +11 -0
- package/app/stores/orders.ts +172 -0
- package/app/stores/product.ts +34 -0
- package/app/stores/productList.ts +35 -0
- package/app/stores/productListInfo.ts +0 -0
- package/app/stores/products.ts +118 -0
- package/app/stores/recentlyViewedProducts.ts +56 -0
- package/app/stores/review.ts +33 -0
- package/app/stores/storeInPickUp.ts +21 -0
- package/app/stores/user.ts +20 -0
- package/app/stores/wishlist.ts +46 -0
- package/app/types/Account.type.ts +141 -0
- package/app/types/Breadcrumbs.type.ts +23 -0
- package/app/types/CMS.type.ts +33 -0
- package/app/types/Category.type.ts +67 -0
- package/app/types/Checkout.type.ts +58 -0
- package/app/types/Common.type.ts +77 -0
- package/app/types/Config.type.ts +47 -0
- package/app/types/Device.type.ts +37 -0
- package/app/types/Direction.type.ts +23 -0
- package/app/types/Downloadable.type.ts +24 -0
- package/app/types/Error.type.ts +22 -0
- package/app/types/Field.type.ts +151 -0
- package/app/types/Global.type.ts +156 -0
- package/app/types/Graphql.type.ts +4497 -0
- package/app/types/Layout.type.ts +18 -0
- package/app/types/Menu.type.ts +39 -0
- package/app/types/MiniCart.type.ts +61 -0
- package/app/types/NotificationList.type.ts +34 -0
- package/app/types/Order.type.ts +174 -0
- package/app/types/Price.type.ts +72 -0
- package/app/types/ProductCompare.type.ts +24 -0
- package/app/types/ProductList.type.ts +351 -0
- package/app/types/Rating.type.ts +42 -0
- package/app/types/Router.type.ts +67 -0
- package/app/types/Slider.type.ts +25 -0
- package/app/types/StockStatus.type.ts +21 -0
- package/app/types/domain/index.ts +94 -0
- package/app/types/index.ts +33 -0
- package/app/types/shims.d.ts +52 -0
- package/app/types/tilework-opus.d.ts +48 -0
- package/app/utils/Address/Address.type.ts +28 -0
- package/app/utils/Address/index.ts +325 -0
- package/app/utils/Auth/IsSignedIn.ts +4 -0
- package/app/utils/Auth/Token.ts +9 -0
- package/app/utils/Base64/Base64.ts +16 -0
- package/app/utils/Base64/index.ts +12 -0
- package/app/utils/Browser/Browser.ts +29 -0
- package/app/utils/Browser/index.ts +12 -0
- package/app/utils/BrowserDatabase/BrowserDatabase.ts +70 -0
- package/app/utils/BrowserDatabase/index.ts +12 -0
- package/app/utils/CSS/CSS.ts +65 -0
- package/app/utils/CSS/index.ts +12 -0
- package/app/utils/Cache/Cache.ts +99 -0
- package/app/utils/Cart/Cart.ts +300 -0
- package/app/utils/Cart/Cart.type.ts +76 -0
- package/app/utils/Cart/Token.ts +59 -0
- package/app/utils/Cart/index.ts +13 -0
- package/app/utils/Category/Filters.ts +39 -0
- package/app/utils/Category/index.ts +12 -0
- package/app/utils/Common/index.ts +32 -0
- package/app/utils/Compare/Compare.ts +89 -0
- package/app/utils/Compare/index.ts +12 -0
- package/app/utils/Currency/Currency.ts +84 -0
- package/app/utils/Currency/index.ts +12 -0
- package/app/utils/DynamicReducer/DynamicReducer.type.ts +14 -0
- package/app/utils/DynamicReducer/Helper.ts +30 -0
- package/app/utils/DynamicReducer/index.tsx +35 -0
- package/app/utils/ElementTransition/ElementTransition.ts +100 -0
- package/app/utils/Form/Extract.ts +316 -0
- package/app/utils/Form/Form.ts +46 -0
- package/app/utils/Form/Form.type.ts +60 -0
- package/app/utils/Form/Transform.ts +33 -0
- package/app/utils/FormPortalCollector/index.ts +45 -0
- package/app/utils/History/History.type.ts +31 -0
- package/app/utils/History/index.ts +17 -0
- package/app/utils/Manipulations/Array.ts +18 -0
- package/app/utils/Manipulations/Date.ts +36 -0
- package/app/utils/Manipulations/index.ts +14 -0
- package/app/utils/Media/Media.ts +27 -0
- package/app/utils/Media/index.ts +13 -0
- package/app/utils/Menu/Menu.ts +116 -0
- package/app/utils/Menu/Menu.type.ts +37 -0
- package/app/utils/Menu/index.ts +12 -0
- package/app/utils/Mobile/index.ts +13 -0
- package/app/utils/Mobile/isMobile.ts +34 -0
- package/app/utils/Orders/Orders.ts +71 -0
- package/app/utils/Orders/Orders.type.ts +19 -0
- package/app/utils/Orders/index.ts +13 -0
- package/app/utils/Polyfill/index.ts +336 -0
- package/app/utils/Preload/CategoryPreload.ts +74 -0
- package/app/utils/Preload/ProductPreload.ts +28 -0
- package/app/utils/Preload/index.ts +75 -0
- package/app/utils/Price/Price.config.ts +189 -0
- package/app/utils/Price/Price.ts +63 -0
- package/app/utils/Price/index.ts +12 -0
- package/app/utils/Product/Extract.ts +652 -0
- package/app/utils/Product/Product.ts +575 -0
- package/app/utils/Product/Product.type.ts +260 -0
- package/app/utils/Product/Transform.ts +382 -0
- package/app/utils/Product/index.ts +12 -0
- package/app/utils/Promise/MakeCancelable.ts +44 -0
- package/app/utils/Promise/Promise.type.ts +15 -0
- package/app/utils/Promise/index.ts +13 -0
- package/app/utils/Query/Field.ts +71 -0
- package/app/utils/Query/Fragment.ts +22 -0
- package/app/utils/Query/PrepareDocument.ts +119 -0
- package/app/utils/Query/Query.type.ts +26 -0
- package/app/utils/Query/index.ts +15 -0
- package/app/utils/Request/Config.ts +21 -0
- package/app/utils/Request/DataContainer.ts +102 -0
- package/app/utils/Request/Debounce.ts +48 -0
- package/app/utils/Request/Error.ts +31 -0
- package/app/utils/Request/Hash.ts +88 -0
- package/app/utils/Request/LowPriorityLoad.ts +32 -0
- package/app/utils/Request/LowPriorityRender.ts +55 -0
- package/app/utils/Request/Mutation.ts +25 -0
- package/app/utils/Request/Query.ts +25 -0
- package/app/utils/Request/QueryDispatcher.ts +135 -0
- package/app/utils/Request/Request.ts +310 -0
- package/app/utils/Store/Store.type.ts +26 -0
- package/app/utils/Store/index.ts +71 -0
- package/app/utils/Url/Url.ts +297 -0
- package/app/utils/Url/index.ts +12 -0
- package/app/utils/Validator/Config.ts +96 -0
- package/app/utils/Validator/Validator.ts +268 -0
- package/app/utils/Validator/Validator.type.ts +47 -0
- package/app/utils/Validator/index.ts +12 -0
- package/app/utils/Wishlist/Wishlist.ts +65 -0
- package/app/utils/Wishlist/index.ts +12 -0
- package/app/utils/client.ts +280 -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/nuxt.config.ts +11 -0
- package/package.json +43 -0
- package/tsconfig.json +45 -0
|
@@ -0,0 +1,309 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div class="contentPage">
|
|
3
|
+
<div v-if="loading">Loading...</div>
|
|
4
|
+
<div v-else-if="error">Error: {{ error.message }}</div>
|
|
5
|
+
<div v-else-if="product">
|
|
6
|
+
<v-row>
|
|
7
|
+
<v-col cols="12">
|
|
8
|
+
<v-row>
|
|
9
|
+
<v-col cols="12">
|
|
10
|
+
<div>
|
|
11
|
+
<productDetails :productDetails="product" />
|
|
12
|
+
</div>
|
|
13
|
+
</v-col>
|
|
14
|
+
</v-row>
|
|
15
|
+
</v-col>
|
|
16
|
+
|
|
17
|
+
<v-col cols="12">
|
|
18
|
+
<v-card elevation="0">
|
|
19
|
+
<v-tabs v-model="tab" :bg-color="productbar?.color">
|
|
20
|
+
<div v-for="(menu, index) in productbar?.menus" :key="index">
|
|
21
|
+
<v-tab v-if="menu?.active === 'Active'" :value="menu?.value">{{ menu?.name }}</v-tab>
|
|
22
|
+
</div>
|
|
23
|
+
<!-- <v-tab value="four">FAQS</v-tab>
|
|
24
|
+
<v-tab value="five">Compare</v-tab>-->
|
|
25
|
+
<v-tab value="six" v-if="product?.type === 'Grouped Product'">Products</v-tab>
|
|
26
|
+
<v-tab value="seven" v-if="product?.type === 'Bundled Product'">Products</v-tab>
|
|
27
|
+
<v-tab value="eight" v-if="product?.type === 'Configurable Product'">Products</v-tab>
|
|
28
|
+
<v-tab value="nine" v-if="product?.product_types?.product_types_id?.name === 'Gift Card'">Redeem</v-tab>
|
|
29
|
+
</v-tabs>
|
|
30
|
+
|
|
31
|
+
<v-card-text>
|
|
32
|
+
<v-window v-model="tab">
|
|
33
|
+
<!--Product Description-->
|
|
34
|
+
<v-window-item :value="productbar?.menus[0]?.value">
|
|
35
|
+
<v-card variant="text">
|
|
36
|
+
<v-card-text style="font-size: 20px;" v-dompurify-html="product?.content"></v-card-text>
|
|
37
|
+
</v-card>
|
|
38
|
+
</v-window-item>
|
|
39
|
+
|
|
40
|
+
<!--Product Reviews-->
|
|
41
|
+
<v-window-item :value="productbar?.menus[1]?.value">
|
|
42
|
+
<!---<div v-if="product?.reviews?.items?.length > 0">
|
|
43
|
+
<div v-for="(review, index) in product?.reviews?.items" :key="index">
|
|
44
|
+
<productReviews :review="review" />
|
|
45
|
+
</div>
|
|
46
|
+
</div>-->
|
|
47
|
+
<comments :productName="product?.name"
|
|
48
|
+
:productImage="`${$directus.url}/assets/${product?.image?.filename_disk}`"
|
|
49
|
+
:productSku="product?.id" />
|
|
50
|
+
</v-window-item>
|
|
51
|
+
|
|
52
|
+
<!--Product Specifications-->
|
|
53
|
+
<v-window-item :value="productbar?.menus[2]?.value">
|
|
54
|
+
<productSpecs :product="product" />
|
|
55
|
+
</v-window-item>
|
|
56
|
+
|
|
57
|
+
<!--Product FAQs-->
|
|
58
|
+
<v-window-item :value="productbar?.menus[3]?.value">
|
|
59
|
+
<v-expansion-panels v-for="(faqs, index) in product?.faqs?.faqs_id" :key="index">
|
|
60
|
+
<v-expansion-panel :title="faqs.question" :text="faqs.answer">
|
|
61
|
+
</v-expansion-panel>
|
|
62
|
+
</v-expansion-panels>
|
|
63
|
+
</v-window-item>
|
|
64
|
+
|
|
65
|
+
<!--Product Compare List
|
|
66
|
+
<v-window-item :value="productbar?.menus[4]?.value">
|
|
67
|
+
<productCompare />
|
|
68
|
+
</v-window-item>-->
|
|
69
|
+
|
|
70
|
+
<!-- Group Products List -->
|
|
71
|
+
<v-window-item value="six">
|
|
72
|
+
<v-row v-if="product?.type === 'Grouped Product'">
|
|
73
|
+
<v-col cols="4" v-for="item in groupedProducts?.products" :key="item">
|
|
74
|
+
<productCard :product="item?.products_id" />
|
|
75
|
+
</v-col>
|
|
76
|
+
</v-row>
|
|
77
|
+
|
|
78
|
+
<v-row v-else>
|
|
79
|
+
<v-col cols="12">
|
|
80
|
+
<p>No products in this group.</p>
|
|
81
|
+
</v-col>
|
|
82
|
+
</v-row>
|
|
83
|
+
</v-window-item>
|
|
84
|
+
|
|
85
|
+
<!--Bundle Products List-->
|
|
86
|
+
<v-window-item value="seven">
|
|
87
|
+
<v-row v-if="product?.type === 'Bundled Product'">
|
|
88
|
+
<v-col cols="4" v-for="(product, index) in bundledProducts?.products" :key="index">
|
|
89
|
+
<productCard :product="product?.products_id" />
|
|
90
|
+
</v-col>
|
|
91
|
+
</v-row>
|
|
92
|
+
|
|
93
|
+
<v-row v-else>
|
|
94
|
+
<v-col cols="12">
|
|
95
|
+
<p>No products in this bundle.</p>
|
|
96
|
+
</v-col>
|
|
97
|
+
</v-row>
|
|
98
|
+
</v-window-item>
|
|
99
|
+
|
|
100
|
+
<!--Configurable Products List-->
|
|
101
|
+
<v-window-item value="eight">
|
|
102
|
+
<v-row v-if="product?.type === 'Configurable Product'">
|
|
103
|
+
<v-col cols="4" v-for="(product, index) in configurableProducts?.products" :key="index">
|
|
104
|
+
<productCard :product="product?.products_id" />
|
|
105
|
+
</v-col>
|
|
106
|
+
</v-row>
|
|
107
|
+
|
|
108
|
+
<v-row v-else>
|
|
109
|
+
<v-col cols="12">
|
|
110
|
+
<p>No products in this configuration.</p>
|
|
111
|
+
</v-col>
|
|
112
|
+
</v-row>
|
|
113
|
+
</v-window-item>
|
|
114
|
+
|
|
115
|
+
<!--Gift Cards Redeem Information-->
|
|
116
|
+
<v-window-item value="nine">
|
|
117
|
+
<v-row v-if="product?.product_types?.product_types_id?.name === 'Gift Card'">
|
|
118
|
+
<v-col cols="12">
|
|
119
|
+
<giftCard :gift="product" />
|
|
120
|
+
</v-col>
|
|
121
|
+
</v-row>
|
|
122
|
+
|
|
123
|
+
<v-row v-else>
|
|
124
|
+
<v-col cols="12">
|
|
125
|
+
<p>Not a valid Gift Card.</p>
|
|
126
|
+
</v-col>
|
|
127
|
+
</v-row>
|
|
128
|
+
</v-window-item>
|
|
129
|
+
</v-window>
|
|
130
|
+
</v-card-text>
|
|
131
|
+
</v-card>
|
|
132
|
+
</v-col>
|
|
133
|
+
|
|
134
|
+
<v-col cols="12">
|
|
135
|
+
<!--Crossell Products-->
|
|
136
|
+
<v-sheet class="mx-auto sliderProducts row align-items-stretch items-row justify-content-center">
|
|
137
|
+
<h4>This product goes great together with...</h4>
|
|
138
|
+
<!--Crossell Products-->
|
|
139
|
+
<v-slide-group v-model="model" class="pa-4" selected-class="bg-success" show-arrows>
|
|
140
|
+
<v-slide-group-item v-for="(crossSell, index) in product?.cross_sell_products" :key="index"
|
|
141
|
+
v-slot="{ isSelected, toggle, selectedClass }">
|
|
142
|
+
<productCard :product="crossSell?.products_id" :class="['ma-4', selectedClass]" @click="toggle" />
|
|
143
|
+
<div class="d-flex fill-height align-center justify-center">
|
|
144
|
+
<v-scale-transition>
|
|
145
|
+
<v-icon v-if="isSelected" color="white" icon="mdi-close-circle-outline" size="48"></v-icon>
|
|
146
|
+
</v-scale-transition>
|
|
147
|
+
</div>
|
|
148
|
+
</v-slide-group-item>
|
|
149
|
+
</v-slide-group>
|
|
150
|
+
</v-sheet>
|
|
151
|
+
|
|
152
|
+
<!--Related Products-->
|
|
153
|
+
<v-sheet class="mx-auto sliderProducts row align-items-stretch items-row justify-content-center">
|
|
154
|
+
<h4>Related Products</h4>
|
|
155
|
+
<div v-if="product?.related_products?.length > 0">
|
|
156
|
+
<v-slide-group v-model="model" class="pa-4" selected-class="bg-success" show-arrows>
|
|
157
|
+
<v-slide-group-item v-for="(relatedProduct, index) in product?.related_products" :key="index"
|
|
158
|
+
v-slot="{ isSelected, toggle, selectedClass }">
|
|
159
|
+
<productCard :product="relatedProduct?.products_id" :class="['ma-4', selectedClass]"
|
|
160
|
+
@click="toggle" />
|
|
161
|
+
<div class="d-flex fill-height align-center justify-center">
|
|
162
|
+
<v-scale-transition>
|
|
163
|
+
<v-icon v-if="isSelected" color="white" icon="mdi-close-circle-outline" size="48"></v-icon>
|
|
164
|
+
</v-scale-transition>
|
|
165
|
+
</div>
|
|
166
|
+
</v-slide-group-item>
|
|
167
|
+
</v-slide-group>
|
|
168
|
+
</div>
|
|
169
|
+
<div v-else>
|
|
170
|
+
<p>No related products available.</p>
|
|
171
|
+
</div>
|
|
172
|
+
</v-sheet>
|
|
173
|
+
|
|
174
|
+
<!--Product featured in Shops-->
|
|
175
|
+
<v-sheet class="mx-auto sliderProducts row align-items-stretch items-row justify-content-center">
|
|
176
|
+
<h4>Product featured in these Shops</h4>
|
|
177
|
+
<div v-if="product?.shops?.length > 0">
|
|
178
|
+
<v-slide-group v-model="model" class="pa-4" selected-class="bg-success" show-arrows>
|
|
179
|
+
<v-slide-group-item v-for="(shops, index) in product?.shops" :key="index"
|
|
180
|
+
v-slot="{ isSelected, toggle, selectedClass }">
|
|
181
|
+
<shop :shop="shops?.shops_id" :class="['ma-4', selectedClass]" @click="toggle" />
|
|
182
|
+
<div class="d-flex fill-height align-center justify-center">
|
|
183
|
+
<v-scale-transition>
|
|
184
|
+
<v-icon v-if="isSelected" color="white" icon="mdi-close-circle-outline" size="48"></v-icon>
|
|
185
|
+
</v-scale-transition>
|
|
186
|
+
</div>
|
|
187
|
+
</v-slide-group-item>
|
|
188
|
+
</v-slide-group>
|
|
189
|
+
</div>
|
|
190
|
+
<div v-else>
|
|
191
|
+
<p>Not featured in any shops.</p>
|
|
192
|
+
</div>
|
|
193
|
+
</v-sheet>
|
|
194
|
+
|
|
195
|
+
<!--Product featured in Vibez-->
|
|
196
|
+
<v-sheet class="mx-auto sliderProducts row align-items-stretch items-row justify-content-center">
|
|
197
|
+
<h4>Product featured in these Vibez</h4>
|
|
198
|
+
<div v-if="product?.shorts?.length > 0">
|
|
199
|
+
<v-slide-group v-model="model" class="pa-4" selected-class="bg-success" show-arrows>
|
|
200
|
+
<v-slide-group-item v-for="(shorts, index) in product?.shorts" :key="index"
|
|
201
|
+
v-slot="{ isSelected, toggle, selectedClass }">
|
|
202
|
+
<short :short="shorts?.shorts_id" :class="['ma-4', selectedClass]" @click="toggle" />
|
|
203
|
+
<div class="d-flex fill-height align-center justify-center">
|
|
204
|
+
<v-scale-transition>
|
|
205
|
+
<v-icon v-if="isSelected" color="white" icon="mdi-close-circle-outline" size="48"></v-icon>
|
|
206
|
+
</v-scale-transition>
|
|
207
|
+
</div>
|
|
208
|
+
</v-slide-group-item>
|
|
209
|
+
</v-slide-group>
|
|
210
|
+
</div>
|
|
211
|
+
<div v-else>
|
|
212
|
+
<p>Not featured in any shorts.</p>
|
|
213
|
+
</div>
|
|
214
|
+
</v-sheet>
|
|
215
|
+
|
|
216
|
+
<!--Product featured in Spaces-->
|
|
217
|
+
<v-sheet class="mx-auto sliderProducts row align-items-stretch items-row justify-content-center">
|
|
218
|
+
<h4>Product featured in these Spaces</h4>
|
|
219
|
+
<div v-if="product?.spaces?.length > 0">
|
|
220
|
+
<v-slide-group v-model="model" class="pa-4" selected-class="bg-success" show-arrows>
|
|
221
|
+
<v-slide-group-item v-for="(spaces, index) in product?.spaces" :key="index"
|
|
222
|
+
v-slot="{ isSelected, toggle, selectedClass }">
|
|
223
|
+
<spaces :space="spaces?.spaces_id" :class="['ma-4', selectedClass]" @click="toggle" />
|
|
224
|
+
<div class="d-flex fill-height align-center justify-center">
|
|
225
|
+
<v-scale-transition>
|
|
226
|
+
<v-icon v-if="isSelected" color="white" icon="mdi-close-circle-outline" size="48"></v-icon>
|
|
227
|
+
</v-scale-transition>
|
|
228
|
+
</div>
|
|
229
|
+
</v-slide-group-item>
|
|
230
|
+
</v-slide-group>
|
|
231
|
+
</div>
|
|
232
|
+
<div v-else>
|
|
233
|
+
<p>Not featured in any spaces.</p>
|
|
234
|
+
</div>
|
|
235
|
+
</v-sheet>
|
|
236
|
+
</v-col>
|
|
237
|
+
</v-row>
|
|
238
|
+
</div>
|
|
239
|
+
<div v-else>No product found</div>
|
|
240
|
+
</div>
|
|
241
|
+
</template>
|
|
242
|
+
|
|
243
|
+
<script setup>
|
|
244
|
+
import {
|
|
245
|
+
ref,
|
|
246
|
+
computed,
|
|
247
|
+
watch
|
|
248
|
+
} from 'vue';
|
|
249
|
+
import comments from '@/components/placeholders/Comments.vue'
|
|
250
|
+
|
|
251
|
+
import productDetails from '../../components/catalog/product/productDetails.vue'
|
|
252
|
+
import productSpecs from '../../components/catalog/product/productSpecs.vue'
|
|
253
|
+
import productCard from '../../components/catalog/product/productCard.vue'
|
|
254
|
+
import giftCard from '../../components/catalog/product/giftCard.vue'
|
|
255
|
+
import short from '@/components/placeholders/Short.vue'
|
|
256
|
+
import spaces from '@/components/placeholders/Space.vue'
|
|
257
|
+
import shop from '../../components/catalog/shops/stores.vue'
|
|
258
|
+
|
|
259
|
+
const tab = ref(null);
|
|
260
|
+
const model = ref(null);
|
|
261
|
+
const error = ref(null);
|
|
262
|
+
const loading = ref(false)
|
|
263
|
+
|
|
264
|
+
// Product query
|
|
265
|
+
const route = useRoute()
|
|
266
|
+
|
|
267
|
+
const { $commerce } = useNuxtApp()
|
|
268
|
+
|
|
269
|
+
const { data: product } = await useAsyncData('product', async () => {
|
|
270
|
+
return await $commerce.getProduct(route.params.id)
|
|
271
|
+
})
|
|
272
|
+
|
|
273
|
+
// Grouped/bundled products: Magento provider currently doesn't expose
|
|
274
|
+
// these specific relations via the generic interface. Fetch a small page
|
|
275
|
+
// of products as a fallback so the UI can render product cards.
|
|
276
|
+
const { data: groupedProducts } = await useAsyncData('groupedProducts', async () => {
|
|
277
|
+
return await $commerce.getProducts({ pageSize: 6 })
|
|
278
|
+
})
|
|
279
|
+
|
|
280
|
+
const { data: bundledProducts } = await useAsyncData('bundledProducts', async () => {
|
|
281
|
+
return await $commerce.getProducts({ pageSize: 6 })
|
|
282
|
+
})
|
|
283
|
+
|
|
284
|
+
const {
|
|
285
|
+
data: productBlocks
|
|
286
|
+
} = await useAsyncData('productBlocks', () => {
|
|
287
|
+
return $directus.request($readItem('page_blocks', '8', {
|
|
288
|
+
fields: ['*', 'media.directus_files_id.filename_disk', 'content.*'],
|
|
289
|
+
}))
|
|
290
|
+
})
|
|
291
|
+
|
|
292
|
+
const {
|
|
293
|
+
data: productbar
|
|
294
|
+
} = await useAsyncData('productbar', () => {
|
|
295
|
+
return $directus.request($readItem('navigation', '52'))
|
|
296
|
+
})
|
|
297
|
+
|
|
298
|
+
useHead({
|
|
299
|
+
title: computed(() => product?.value?.name || 'Product Page')
|
|
300
|
+
})
|
|
301
|
+
|
|
302
|
+
import { addViewed } from '../../composables/products/useRecentlyViewed'
|
|
303
|
+
|
|
304
|
+
watch(product, (newVal) => {
|
|
305
|
+
if (process.client && newVal?.id) {
|
|
306
|
+
addViewed(newVal.id)
|
|
307
|
+
}
|
|
308
|
+
}, { immediate: true })
|
|
309
|
+
</script>
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div class="contentPage">
|
|
3
|
+
<v-card elevation="0">
|
|
4
|
+
<v-toolbar :title="showcasebar?.name" :color="showcasebar?.color"></v-toolbar>
|
|
5
|
+
|
|
6
|
+
<v-tabs v-model="tab" bg-color="purple">
|
|
7
|
+
<div v-for="(menu, index) in showcasebar?.menus" :key="index">
|
|
8
|
+
<v-tab v-if="menu?.active === 'Active'" :value="menu?.value">{{ menu?.name }}</v-tab>
|
|
9
|
+
</div>
|
|
10
|
+
</v-tabs>
|
|
11
|
+
|
|
12
|
+
<v-card-text>
|
|
13
|
+
<v-tabs-window v-model="tab">
|
|
14
|
+
<!--Bundle Products List-->
|
|
15
|
+
<v-window-item :value="showcasebar?.menus[0]?.value">
|
|
16
|
+
<v-row>
|
|
17
|
+
<v-col cols="4" v-for="(product, index) in bundledProducts" :key="index">
|
|
18
|
+
<productCard :product="product" />
|
|
19
|
+
</v-col>
|
|
20
|
+
</v-row>
|
|
21
|
+
</v-window-item>
|
|
22
|
+
|
|
23
|
+
<!-- Group Products List -->
|
|
24
|
+
<v-window-item :value="showcasebar?.menus[1]?.value">
|
|
25
|
+
<v-row>
|
|
26
|
+
<v-col cols="4" v-for="item in groupedProducts" :key="item">
|
|
27
|
+
<productCard :product="item" />
|
|
28
|
+
</v-col>
|
|
29
|
+
</v-row>
|
|
30
|
+
</v-window-item>
|
|
31
|
+
|
|
32
|
+
<!--Bundle Products List-->
|
|
33
|
+
<v-window-item :value="showcasebar?.menus[2]?.value">
|
|
34
|
+
<v-row>
|
|
35
|
+
<v-col cols="4" v-for="(product, index) in subscriptions" :key="index">
|
|
36
|
+
<productCard :product="product" />
|
|
37
|
+
</v-col>
|
|
38
|
+
</v-row>
|
|
39
|
+
</v-window-item>
|
|
40
|
+
</v-tabs-window>
|
|
41
|
+
</v-card-text>
|
|
42
|
+
</v-card>
|
|
43
|
+
</div>
|
|
44
|
+
</template>
|
|
45
|
+
|
|
46
|
+
<script setup>
|
|
47
|
+
import {
|
|
48
|
+
ref,
|
|
49
|
+
computed
|
|
50
|
+
} from 'vue'
|
|
51
|
+
import productCard from '~/components/catalog/product/productCard.vue'
|
|
52
|
+
|
|
53
|
+
const tab = ref(null);
|
|
54
|
+
|
|
55
|
+
const { $commerce } = useNuxtApp()
|
|
56
|
+
|
|
57
|
+
const { data: groupedProducts } = await useAsyncData('groupedProducts', async () => {
|
|
58
|
+
return await $commerce.getProducts({ pageSize: 12 })
|
|
59
|
+
})
|
|
60
|
+
|
|
61
|
+
const { data: bundledProducts } = await useAsyncData('bundledProducts', async () => {
|
|
62
|
+
return await $commerce.getProducts({ pageSize: 12 })
|
|
63
|
+
})
|
|
64
|
+
|
|
65
|
+
const { data: subscriptions } = await useAsyncData('subscriptions', async () => {
|
|
66
|
+
return await $commerce.getProducts({ pageSize: 12 })
|
|
67
|
+
})
|
|
68
|
+
|
|
69
|
+
const {
|
|
70
|
+
data: productBlocks
|
|
71
|
+
} = await useAsyncData('productBlocks', () => {
|
|
72
|
+
return $directus.request($readItem('page_blocks', '8', {
|
|
73
|
+
fields: ['*', 'media.directus_files_id.filename_disk', 'content.*'],
|
|
74
|
+
}))
|
|
75
|
+
})
|
|
76
|
+
|
|
77
|
+
const {
|
|
78
|
+
data: showcasebar
|
|
79
|
+
} = await useAsyncData('showcasebar', () => {
|
|
80
|
+
return $directus.request($readItem('navigation', '54'))
|
|
81
|
+
})
|
|
82
|
+
|
|
83
|
+
useHead({
|
|
84
|
+
title: 'Showcases',
|
|
85
|
+
});
|
|
86
|
+
</script>
|
|
@@ -0,0 +1,176 @@
|
|
|
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 Shipment</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
|
+
<a class="card-text mbr-fonts-style display-7" :href="`/order/${shipment?.order_id}`">Order #:
|
|
25
|
+
{{ shipment?.order_id }}</a>
|
|
26
|
+
<p class="card-text mbr-fonts-style display-7">Order Date:
|
|
27
|
+
{{ new Date(shipment?.created_at).toLocaleDateString() }}</p>
|
|
28
|
+
<p class="card-text mbr-fonts-style display-7">Order Status:
|
|
29
|
+
{{ shipment?.shipment_status }}</p>
|
|
30
|
+
<p class="card-text mbr-fonts-style display-7">Purchased From: {{ shipment?.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: {{ shipment?.customer_id }}</p>
|
|
44
|
+
<p class="card-text mbr-fonts-style display-7">Email: {{ shipment?.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">{{ shipment?.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">{{ shipment?.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
|
+
{{ shipment?.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 and Tracking Information
|
|
99
|
+
</h4>
|
|
100
|
+
<p class="card-text mbr-fonts-style display-7">Carrier: {{ shipment?.tracks?.carrier_code }}</p>
|
|
101
|
+
<p class="card-text mbr-fonts-style display-7">Title: {{ shipment?.tracks?.title }}</p>
|
|
102
|
+
<p class="card-text mbr-fonts-style display-7">Weight: {{ shipment?.tracks?.weight }}</p>
|
|
103
|
+
<p class="card-text mbr-fonts-style display-7">Description: {{ shipment?.tracks?.description }}</p>
|
|
104
|
+
<p class="card-text mbr-fonts-style display-7">Tracking #: {{ shipment?.tracks?.track_number }}</p>
|
|
105
|
+
</div>
|
|
106
|
+
</div>
|
|
107
|
+
</div>
|
|
108
|
+
</div>
|
|
109
|
+
|
|
110
|
+
</div>
|
|
111
|
+
</div>
|
|
112
|
+
</div>
|
|
113
|
+
<img src="../../assets/images/background2.jpg" alt="Shipments">
|
|
114
|
+
</section>
|
|
115
|
+
|
|
116
|
+
<v-card title="Shipment Items" flat>
|
|
117
|
+
<div class="container">
|
|
118
|
+
<v-data-table :headers="headers" :items="shipment?.items" :items-per-page="5" class="elevation-1">
|
|
119
|
+
<template v-slot:[`item.name`]="{ item }">
|
|
120
|
+
<strong>{{ item.name }}</strong>
|
|
121
|
+
</template>
|
|
122
|
+
<template v-slot:[`item.qty`]="{ item }">
|
|
123
|
+
{{ item.qty }}
|
|
124
|
+
</template>
|
|
125
|
+
</v-data-table>
|
|
126
|
+
</div>
|
|
127
|
+
</v-card>
|
|
128
|
+
</div>
|
|
129
|
+
</template>
|
|
130
|
+
|
|
131
|
+
<script>
|
|
132
|
+
export default {
|
|
133
|
+
data: () => ({
|
|
134
|
+
headers: [{
|
|
135
|
+
text: 'Product',
|
|
136
|
+
value: 'name'
|
|
137
|
+
},
|
|
138
|
+
{
|
|
139
|
+
text: 'Quantity',
|
|
140
|
+
value: 'qty'
|
|
141
|
+
}
|
|
142
|
+
],
|
|
143
|
+
}),
|
|
144
|
+
}
|
|
145
|
+
</script>
|
|
146
|
+
|
|
147
|
+
<script setup>
|
|
148
|
+
const route = useRoute();
|
|
149
|
+
|
|
150
|
+
const {
|
|
151
|
+
$directus,
|
|
152
|
+
$readItem
|
|
153
|
+
} = useNuxtApp()
|
|
154
|
+
const user = useSupabaseUser()
|
|
155
|
+
|
|
156
|
+
const {
|
|
157
|
+
data: shipment
|
|
158
|
+
} = await useAsyncData('shipment', () => {
|
|
159
|
+
return $directus.request($readItem('shipments', route.params.id, {
|
|
160
|
+
filter: {
|
|
161
|
+
user: {
|
|
162
|
+
_eq: `${user?.id}`
|
|
163
|
+
}
|
|
164
|
+
},
|
|
165
|
+
limit: 1
|
|
166
|
+
})).then(response => response?.[0])
|
|
167
|
+
})
|
|
168
|
+
|
|
169
|
+
useHead({
|
|
170
|
+
title: 'Shipment' + shipment?.value?.id || 'Shipment Page',
|
|
171
|
+
})
|
|
172
|
+
|
|
173
|
+
definePageMeta({
|
|
174
|
+
//middleware: ['auth-logged-in'],
|
|
175
|
+
})
|
|
176
|
+
</script>
|