@meeovi/layer-commerce 1.0.10 → 1.0.13

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.
Files changed (324) hide show
  1. package/app/components/catalog/product/ProductAccordion/ProductAccordion.vue +39 -0
  2. package/app/components/catalog/product/ProductAccordion/__tests__/ProductAccordion.spec.ts +15 -0
  3. package/app/components/catalog/product/ProductAccordion/types.ts +5 -0
  4. package/app/components/catalog/product/ProductProperties/ProductProperties.vue +50 -0
  5. package/app/components/catalog/product/ProductProperties/__tests__/ProductProperties.spec.ts +15 -0
  6. package/app/components/catalog/product/ProductProperties/types.ts +5 -0
  7. package/app/components/catalog/product/ProductSlider/ProductSlider.vue +28 -0
  8. package/app/components/catalog/product/ProductSlider/__tests__/ProductSlider.spec.ts +14 -0
  9. package/app/components/catalog/product/ProductSlider/types.ts +7 -0
  10. package/app/components/catalog/product/RecommendedProducts/RecommendedProducts.vue +12 -0
  11. package/app/components/catalog/product/RecommendedProducts/types.ts +5 -0
  12. package/app/components/catalog/product/RenderContentProductSlider/RenderContentProductSlider.vue +11 -0
  13. package/app/components/catalog/product/add-attribute.vue +54 -0
  14. package/app/components/catalog/product/add-product-type.vue +54 -0
  15. package/app/components/catalog/product/add-product.vue +53 -0
  16. package/app/components/catalog/product/add-showcase.vue +52 -0
  17. package/app/components/catalog/product/add-station.vue +54 -0
  18. package/app/components/catalog/product/bestsellers.vue +57 -0
  19. package/app/components/catalog/product/bidding.vue +93 -0
  20. package/app/components/catalog/product/colorOptions.vue +58 -0
  21. package/app/components/catalog/product/deals.vue +46 -0
  22. package/app/components/catalog/product/exclusives.vue +56 -0
  23. package/app/components/catalog/product/featuredproducts.vue +57 -0
  24. package/app/components/catalog/product/giftCard.vue +63 -0
  25. package/app/components/catalog/product/latestproducts.vue +46 -0
  26. package/app/components/catalog/product/productCard.vue +105 -0
  27. package/app/components/catalog/product/productCompare.vue +60 -0
  28. package/app/components/catalog/product/productCompareTable.vue +441 -0
  29. package/app/components/catalog/product/productDetails.vue +126 -0
  30. package/app/components/catalog/product/productFaqs.vue +17 -0
  31. package/app/components/catalog/product/productGallery.vue +16 -0
  32. package/app/components/catalog/product/productQty.vue +54 -0
  33. package/app/components/catalog/product/productReviews.vue +56 -0
  34. package/app/components/catalog/product/productSpecs.vue +116 -0
  35. package/app/components/catalog/product/radiostation.vue +36 -0
  36. package/app/components/catalog/product/recentlyviewed.vue +43 -0
  37. package/app/components/catalog/product/relatedbrands.vue +54 -0
  38. package/app/components/catalog/product/relatedproducts.vue +43 -0
  39. package/app/components/catalog/product/relatedstations.vue +40 -0
  40. package/app/components/catalog/product/shippingOptions.vue +41 -0
  41. package/app/components/catalog/product/sizeOptions.vue +42 -0
  42. package/app/components/catalog/product/update-attribute-set.vue +209 -0
  43. package/app/components/catalog/product/update-attribute.vue +118 -0
  44. package/app/components/catalog/product/update-product.vue +372 -0
  45. package/app/components/catalog/product/update-showcase.vue +153 -0
  46. package/app/components/catalog/shops/relatedstores.vue +37 -0
  47. package/app/components/catalog/shops/restaurant.vue +66 -0
  48. package/app/components/catalog/shops/stores.vue +44 -0
  49. package/app/components/catalog/vendor/README.md +3 -0
  50. package/app/components/catalog/vendor/blocks/biggestcustomers.vue +33 -0
  51. package/app/components/catalog/vendor/blocks/lowestselling.vue +33 -0
  52. package/app/components/catalog/vendor/blocks/topcategories.vue +33 -0
  53. package/app/components/catalog/vendor/blocks/topproducts.vue +27 -0
  54. package/app/components/catalog/vendor/pages/attributes.vue +43 -0
  55. package/app/components/catalog/vendor/pages/commissions.vue +43 -0
  56. package/app/components/catalog/vendor/pages/crm.vue +67 -0
  57. package/app/components/catalog/vendor/pages/dashboard.vue +46 -0
  58. package/app/components/catalog/vendor/pages/emails.vue +43 -0
  59. package/app/components/catalog/vendor/pages/enquiries.vue +43 -0
  60. package/app/components/catalog/vendor/pages/invoices.vue +43 -0
  61. package/app/components/catalog/vendor/pages/orders.vue +68 -0
  62. package/app/components/catalog/vendor/pages/products.vue +55 -0
  63. package/app/components/catalog/vendor/pages/reviews.vue +48 -0
  64. package/app/components/catalog/vendor/pages/shipments.vue +43 -0
  65. package/app/components/catalog/vendor/pages/stores.vue +43 -0
  66. package/app/components/categories/chart/[id].vue +200 -0
  67. package/app/components/categories/chart/add-chart.vue +142 -0
  68. package/app/components/categories/chart/chart.vue +82 -0
  69. package/app/components/categories/chart/monthlyChart.vue +46 -0
  70. package/app/components/categories/chart/weeklyChart.vue +46 -0
  71. package/app/components/categories/chart/yearlyChart.vue +46 -0
  72. package/app/components/categories/charts.vue +118 -0
  73. package/app/components/categories/deals.vue +101 -0
  74. package/app/components/categories/eats.vue +49 -0
  75. package/app/components/categories/restaurants.vue +26 -0
  76. package/app/components/categories/station/[id].vue +72 -0
  77. package/app/components/categories/stations.vue +124 -0
  78. package/app/components/categories/time/time.vue +63 -0
  79. package/app/components/categories/travel.vue +75 -0
  80. package/app/components/categories/weather/weather.vue +44 -0
  81. package/app/components/content/blocks/breadcrumbs.vue +0 -0
  82. package/app/components/content/blocks/currencySwitcher.vue +0 -0
  83. package/app/components/content/blocks/languageSwitcher.vue +0 -0
  84. package/app/components/content/blocks/videoproduct.vue +9 -0
  85. package/app/components/content/pages/checkout.vue +118 -0
  86. package/app/components/content/pages/meeoviGlobal.vue +68 -0
  87. package/app/components/content/pages/pickup-locations.vue +238 -0
  88. package/app/components/content/pages/showcases.vue +90 -0
  89. package/app/components/content/pages/success.vue +60 -0
  90. package/app/components/marketing/add-brand.vue +54 -0
  91. package/app/components/marketing/add-incentive.vue +54 -0
  92. package/app/components/marketing/promotions/giftcards.vue +102 -0
  93. package/app/components/marketing/promotions/subscriptions.vue +121 -0
  94. package/app/components/marketing/update-incentive.vue +326 -0
  95. package/app/components/menus/lowernav.vue +78 -0
  96. package/app/components/partials/LocaleSelector.vue +24 -0
  97. package/app/components/partials/ShoppingCart.vue +128 -0
  98. package/app/components/partials/StripePayment.vue +149 -0
  99. package/app/components/partials/addToCartBtn.vue +40 -0
  100. package/app/components/partials/cartItem.vue +124 -0
  101. package/app/components/partials/checkoutButton.vue +44 -0
  102. package/app/components/partials/compareBtn.vue +68 -0
  103. package/app/components/partials/ratings.vue +13 -0
  104. package/app/components/partials/store/CurrencySelector.vue +133 -0
  105. package/app/components/partials/store/StoreSwitcher.vue +13 -0
  106. package/app/components/placeholders/Comments.vue +15 -0
  107. package/app/components/placeholders/CreateListBtn.vue +7 -0
  108. package/app/components/placeholders/Event.vue +9 -0
  109. package/app/components/placeholders/ListShowcases.vue +9 -0
  110. package/app/components/placeholders/Short.vue +9 -0
  111. package/app/components/placeholders/Space.vue +9 -0
  112. package/app/components/placeholders/Tag.vue +7 -0
  113. package/app/components/related/brandCard.vue +41 -0
  114. package/app/components/related/incentiveCard.vue +44 -0
  115. package/app/components/related/invoiceCard.vue +43 -0
  116. package/app/components/related/orderCard.vue +43 -0
  117. package/app/components/related/relatedproducts.vue +17 -0
  118. package/app/components/sales/CartPageContent/CartPageContent.vue +37 -0
  119. package/app/components/sales/CheckoutAddress/CheckoutAddress.vue +50 -0
  120. package/app/components/sales/CheckoutAddress/__tests__/CheckoutAddress.spec.ts +16 -0
  121. package/app/components/sales/CheckoutAddress/types.ts +16 -0
  122. package/app/components/sales/CheckoutPayment/CheckoutPayment.vue +68 -0
  123. package/app/components/sales/CheckoutPayment/__tests__/CheckoutPayment.spec.ts +14 -0
  124. package/app/components/sales/CheckoutPayment/types.ts +12 -0
  125. package/app/components/sales/OrderSummary/OrderSummary.vue +57 -0
  126. package/app/components/sales/OrderSummary/__tests__/ContactInformation.spec.ts +52 -0
  127. package/app/components/sales/OrderSummary/types.ts +5 -0
  128. package/app/components/sales/incentives.vue +223 -0
  129. package/app/components/sales/invoices.vue +107 -0
  130. package/app/components/sales/orders.vue +378 -0
  131. package/app/components/sales/shipments.vue +65 -0
  132. package/app/components/sales/transactions.vue +109 -0
  133. package/app/components/shop/add-shop.vue +54 -0
  134. package/app/components/shop/cart/cartItem.vue +182 -0
  135. package/app/components/shop/cart/checkout.vue +415 -0
  136. package/app/components/shop/checkout/StripeCardElement.vue +206 -0
  137. package/app/components/shop/checkout/StripeCheckout.vue +49 -0
  138. package/app/components/shop/checkout/addressBilling.vue +263 -0
  139. package/app/components/shop/checkout/addressShipping.vue +175 -0
  140. package/app/components/shop/checkout/cart/ProductItem.vue +56 -0
  141. package/app/components/shop/checkout/cart/PromotionItem.vue +53 -0
  142. package/app/composables/_types.ts +18 -0
  143. package/app/composables/adapters/abstract/cartAdapter.ts +0 -0
  144. package/app/composables/adapters/abstract/categoryAdapter.ts +0 -0
  145. package/app/composables/adapters/abstract/customerAdapter.ts +0 -0
  146. package/app/composables/adapters/abstract/inventoryAdapter.ts +0 -0
  147. package/app/composables/adapters/abstract/orderAdapter.ts +0 -0
  148. package/app/composables/adapters/abstract/productAdapter.ts +7 -0
  149. package/app/composables/cart/registry.ts +20 -0
  150. package/app/composables/cart/types.ts +18 -0
  151. package/app/composables/cart/useCart.ts +15 -0
  152. package/app/composables/config.ts +19 -0
  153. package/app/composables/defs/apiDefinitions.ts +55 -0
  154. package/app/composables/defs/extension.feature +40 -0
  155. package/app/composables/defs/extension.mocks.ts +39 -0
  156. package/app/composables/defs/extension.test.ts +280 -0
  157. package/app/composables/defs/extension.ts +236 -0
  158. package/app/composables/defs/index.ts +3 -0
  159. package/app/composables/defs/types.ts +136 -0
  160. package/app/composables/domain/cart.ts +0 -0
  161. package/app/composables/domain/category.ts +0 -0
  162. package/app/composables/domain/order.ts +0 -0
  163. package/app/composables/domain/price.ts +0 -0
  164. package/app/composables/domain/product.ts +8 -0
  165. package/app/composables/domain/reward.ts +0 -0
  166. package/app/composables/domain/transactions.ts +0 -0
  167. package/app/composables/helpers/contextualizedNormalizers.feature +14 -0
  168. package/app/composables/helpers/contextualizedNormalizers.test.ts +85 -0
  169. package/app/composables/helpers/contextualizedNormalizers.ts +20 -0
  170. package/app/composables/helpers/index.ts +1 -0
  171. package/app/composables/index.ts +6 -0
  172. package/app/composables/methods/auth.ts +83 -0
  173. package/app/composables/methods/cart.ts +119 -0
  174. package/app/composables/methods/category.ts +27 -0
  175. package/app/composables/methods/checkout.ts +54 -0
  176. package/app/composables/methods/customer.ts +52 -0
  177. package/app/composables/methods/helpers.ts +5 -0
  178. package/app/composables/methods/index.ts +75 -0
  179. package/app/composables/methods/order.ts +39 -0
  180. package/app/composables/methods/product.ts +95 -0
  181. package/app/composables/methods/settings.ts +16 -0
  182. package/app/composables/models/cart.ts +95 -0
  183. package/app/composables/models/category.ts +13 -0
  184. package/app/composables/models/checkout.ts +17 -0
  185. package/app/composables/models/customer.ts +16 -0
  186. package/app/composables/models/facets.ts +25 -0
  187. package/app/composables/models/index.ts +94 -0
  188. package/app/composables/models/order.ts +43 -0
  189. package/app/composables/models/product.ts +73 -0
  190. package/app/composables/models/shared.ts +75 -0
  191. package/app/composables/products/registry.ts +20 -0
  192. package/app/composables/products/types.ts +13 -0
  193. package/app/composables/products/useEvents.ts +0 -0
  194. package/app/composables/products/useGiftCards.ts +0 -0
  195. package/app/composables/products/useProducts.ts +12 -0
  196. package/app/composables/products/useSubscriptions.ts +0 -0
  197. package/app/composables/registry.ts +21 -0
  198. package/app/composables/stores/cart.ts +218 -0
  199. package/app/composables/stores/cartStore.ts +300 -0
  200. package/app/composables/stores/checkout.ts +19 -0
  201. package/app/composables/stores/compare.ts +65 -0
  202. package/app/composables/stores/currency.js +29 -0
  203. package/app/composables/stores/digital-products.js +11 -0
  204. package/app/composables/stores/index.js +0 -0
  205. package/app/composables/stores/orders.ts +161 -0
  206. package/app/composables/stores/product.ts +26 -0
  207. package/app/composables/stores/productList.ts +0 -0
  208. package/app/composables/stores/productListInfo.ts +0 -0
  209. package/app/composables/stores/products.ts +112 -0
  210. package/app/composables/stores/recentlyViewedProducts.ts +0 -0
  211. package/app/composables/stores/review.ts +25 -0
  212. package/app/composables/stores/storeInPickUp.ts +22 -0
  213. package/app/composables/stores/user.ts +20 -0
  214. package/app/composables/stores/wishlist.ts +19 -0
  215. package/app/composables/types/Order.type.ts +181 -0
  216. package/app/composables/types/index.ts +285 -0
  217. package/app/composables/types/product.ts +14 -0
  218. package/app/composables/useBreakpoints/index.ts +1 -0
  219. package/app/composables/useBreakpoints/useBreakpoints.ts +28 -0
  220. package/app/composables/useCart/__tests__/useCart.spec.ts +11 -0
  221. package/app/composables/useCart/index.ts +1 -0
  222. package/app/composables/useCart/types.ts +17 -0
  223. package/app/composables/useCart/useCart.ts +46 -0
  224. package/app/composables/useCartShippingMethods/__tests__/useCartShippingMethods.spec.ts +11 -0
  225. package/app/composables/useCartShippingMethods/index.ts +1 -0
  226. package/app/composables/useCartShippingMethods/types.ts +17 -0
  227. package/app/composables/useCartShippingMethods/useCartShippingMethods.ts +47 -0
  228. package/app/composables/useCatalog.ts +64 -0
  229. package/app/composables/useContent/index.ts +1 -0
  230. package/app/composables/useContent/types.ts +44 -0
  231. package/app/composables/useContent/useContent.ts +45 -0
  232. package/app/composables/useContent.ts +57 -0
  233. package/app/composables/useCustomer/__tests__/useCustomer.spec.ts +25 -0
  234. package/app/composables/useCustomer/index.ts +2 -0
  235. package/app/composables/useCustomer/types.ts +17 -0
  236. package/app/composables/useCustomer/useCustomer.ts +40 -0
  237. package/app/composables/useCustomerAddress/__tests__/useCustomerAddress.spec.ts +11 -0
  238. package/app/composables/useCustomerAddress/index.ts +2 -0
  239. package/app/composables/useCustomerAddress/types.ts +17 -0
  240. package/app/composables/useCustomerAddress/useCustomerAddress.ts +55 -0
  241. package/app/composables/useCustomerOrder/__tests__/useCustomerOrder.spec.ts +11 -0
  242. package/app/composables/useCustomerOrder/adress.ts +10 -0
  243. package/app/composables/useCustomerOrder/index.ts +2 -0
  244. package/app/composables/useCustomerOrder/product.ts +37 -0
  245. package/app/composables/useCustomerOrder/types.ts +40 -0
  246. package/app/composables/useCustomerOrder/useCustomerOrder.ts +63 -0
  247. package/app/composables/useCustomerOrders/__tests__/useCustomerOrders.spec.ts +11 -0
  248. package/app/composables/useCustomerOrders/index.ts +2 -0
  249. package/app/composables/useCustomerOrders/types.ts +20 -0
  250. package/app/composables/useCustomerOrders/useCustomerOrders.ts +56 -0
  251. package/app/composables/useCustomerReturns/__tests__/useCustomerReturns.spec.ts +11 -0
  252. package/app/composables/useCustomerReturns/index.ts +2 -0
  253. package/app/composables/useCustomerReturns/types.ts +17 -0
  254. package/app/composables/useCustomerReturns/useCustomerReturns.ts +41 -0
  255. package/app/composables/useHandleError/index.ts +1 -0
  256. package/app/composables/useHandleError/types.ts +11 -0
  257. package/app/composables/useHandleError/useHandleError.ts +27 -0
  258. package/app/composables/usePageTitle.ts +16 -0
  259. package/app/composables/useProduct/index.ts +2 -0
  260. package/app/composables/useProduct/types.ts +17 -0
  261. package/app/composables/useProduct/useProduct.ts +42 -0
  262. package/app/composables/useProductAttribute/__tests__/useProduct.mock.ts +31 -0
  263. package/app/composables/useProductAttribute/__tests__/useProductAttribute.spec.ts +14 -0
  264. package/app/composables/useProductAttribute/index.ts +1 -0
  265. package/app/composables/useProductAttribute/useProductAttribute.ts +37 -0
  266. package/app/composables/useProductRecommended/__tests__/useProductRecommended.spec.ts +12 -0
  267. package/app/composables/useProductRecommended/index.ts +1 -0
  268. package/app/composables/useProductRecommended/types.ts +17 -0
  269. package/app/composables/useProductRecommended/useProductRecommended.ts +43 -0
  270. package/app/composables/useProductReviews/__tests__/productReviews.mock.ts +20 -0
  271. package/app/composables/useProductReviews/__tests__/useProductReviews.spec.ts +22 -0
  272. package/app/composables/useProductReviews/index.ts +2 -0
  273. package/app/composables/useProductReviews/types.ts +17 -0
  274. package/app/composables/useProductReviews/useProductReviews.ts +46 -0
  275. package/app/composables/useProducts/__tests__/useProducts.spec.ts +11 -0
  276. package/app/composables/useProducts/types.ts +22 -0
  277. package/app/composables/useProducts/useProducts.ts +41 -0
  278. package/app/composables/utils/countryList.ts +14 -0
  279. package/app/composables/utils/currency.js +56 -0
  280. package/app/composables/utils/glossary.ts +0 -0
  281. package/app/composables/utils/importExport.ts +0 -0
  282. package/app/composables/utils/index.js +0 -0
  283. package/app/composables/utils/print.ts +0 -0
  284. package/app/composables/utils/shopThemes.ts +0 -0
  285. package/app/composables/utils/statistics.ts +0 -0
  286. package/app/composables/utils/stock.ts +0 -0
  287. package/app/composables/utils/stripe.ts +16 -0
  288. package/app/composables/utils/taxation.ts +0 -0
  289. package/app/composables/utils/tellFriends.ts +0 -0
  290. package/app/composables/validationRules/index.ts +1 -0
  291. package/app/composables/validationRules/password.feature +67 -0
  292. package/app/composables/validationRules/password.test.ts +89 -0
  293. package/app/composables/validationRules/password.ts +25 -0
  294. package/app/composables/vendors/index.ts +0 -0
  295. package/app/composables/vendors/registry.ts +0 -0
  296. package/app/composables/vendors/useAffiliates.ts +0 -0
  297. package/app/composables/vendors/useCommission.ts +0 -0
  298. package/app/modules/vue-head/composables/useHead.ts +3 -0
  299. package/app/pages/brand/[...slug].vue +92 -0
  300. package/app/pages/brands.vue +90 -0
  301. package/app/pages/cart.vue +142 -0
  302. package/app/pages/compare.vue +166 -0
  303. package/app/pages/departments/[...slug].vue +385 -0
  304. package/app/pages/departments/category/[...slug].vue +135 -0
  305. package/app/pages/incentive/[...id].vue +66 -0
  306. package/app/pages/invoice/[id].vue +309 -0
  307. package/app/pages/order/[id].vue +327 -0
  308. package/app/pages/product/[...id].vue +309 -0
  309. package/app/pages/product/showcases/index.vue +86 -0
  310. package/app/pages/shipment/[...id].vue +176 -0
  311. package/app/pages/shop/[...slug].vue +158 -0
  312. package/app/pages/shops.vue +76 -0
  313. package/app/pages/subscription/[...id].vue +147 -0
  314. package/app/pages/transaction/[...id].vue +74 -0
  315. package/app/types/shims-imports.d.ts +13 -0
  316. package/app/utils/client.ts +26 -0
  317. package/app/utils/index.ts +53 -0
  318. package/app/utils/normalizer.ts +23 -0
  319. package/app/utils/normalizers/magento.ts +29 -0
  320. package/app/utils/normalizers/shopify.ts +29 -0
  321. package/global.d.ts +149 -0
  322. package/index.js +3 -0
  323. package/package.json +3 -9
  324. package/tsconfig.json +31 -0
@@ -0,0 +1,372 @@
1
+ <template>
2
+ <div>
3
+ <form>
4
+ <v-toolbar dark color="rgb(var(--v-theme-primary))!important">
5
+ <v-card-title>
6
+ <span class="text-h6">Update Product</span>
7
+ </v-card-title>
8
+ </v-toolbar>
9
+ <v-card-text>
10
+ <v-container>
11
+ <v-row>
12
+ <v-col cols="12">
13
+ <v-text-field v-model="searchSku" label="Search Product by SKU" append-icon="mdi-magnify"
14
+ @click:append="fetchProduct(searchSku)"></v-text-field>
15
+ </v-col>
16
+ <v-col cols="12">
17
+ <h5>Basic Information</h5>
18
+ </v-col>
19
+ <v-divider></v-divider>
20
+ <v-col cols="6">
21
+ <v-select v-model="status" :items="['Enable', 'Disable']" label="Status*"></v-select>
22
+ </v-col>
23
+ <v-col cols="6">
24
+ <v-select v-model="type" :items="['simple', 'configurable', 'virtual', 'downloadable']"
25
+ label="Product Type*"></v-select>
26
+ </v-col>
27
+ <v-col cols="12">
28
+ <v-text-field v-model="name" label="Product Name*" required></v-text-field>
29
+ </v-col>
30
+ <v-col cols="12">
31
+ <v-text-field v-model="sku" type="number" label="SKU*" required></v-text-field>
32
+ </v-col>
33
+ <v-col cols="12">
34
+ <v-text-field v-model="price" type="number" label="Price*" required></v-text-field>
35
+ </v-col>
36
+ <v-col cols="6">
37
+ <v-select v-model="tax_class" :items="[
38
+ { text: 'None', value: 0 },
39
+ { text: 'Taxable Goods', value: 2 },
40
+ { text: 'Shipping', value: 4 }
41
+ ]" label="Tax Class"></v-select>
42
+
43
+ </v-col>
44
+ <v-col cols="6">
45
+ <v-text-field v-model="quantity_per_source" type="number" label="Quantity"></v-text-field>
46
+ </v-col>
47
+ <v-col cols="6">
48
+ <v-text-field v-model="weight" type="number" label="Weight"></v-text-field>
49
+ </v-col>
50
+ <v-col cols="6">
51
+ <v-text-field v-model="height" type="number" label="Height"></v-text-field>
52
+ </v-col>
53
+ <v-col cols="6">
54
+ <v-autocomplete v-model="catalog_visibility" :items="['public', 'private']"
55
+ label="Visibility">
56
+ </v-autocomplete>
57
+ </v-col>
58
+ <v-col cols="6">
59
+ <v-autocomplete v-model="categories" :items="['public']" label="Categories">
60
+ </v-autocomplete>
61
+ </v-col>
62
+ <v-col cols="6">
63
+ <v-autocomplete v-model="manufacture" :items="['public']" label="Manufacture">
64
+ </v-autocomplete>
65
+ </v-col>
66
+ <v-col cols="6">
67
+ <v-autocomplete v-model="country" :items="['public']" label="Country of Manufacture">
68
+ </v-autocomplete>
69
+ </v-col>
70
+ <v-col cols="6">
71
+ <v-select v-model="tax_status" :items="['0-17']" label="Tags">
72
+ </v-select>
73
+ </v-col>
74
+
75
+ <v-col cols="12">
76
+ <h5>Content</h5>
77
+ </v-col>
78
+ <v-divider></v-divider>
79
+
80
+ <v-col cols="12">
81
+ <v-textarea v-model="short_description" label="Short Description*"></v-textarea>
82
+ </v-col>
83
+ <v-col cols="12">
84
+ <h6>Description</h6>
85
+ <editor />
86
+ </v-col>
87
+
88
+ <v-col cols="12">
89
+ <h5>Images and Files</h5>
90
+ </v-col>
91
+ <v-divider></v-divider>
92
+
93
+ <v-col cols="12">
94
+ <v-file-input label="Product Image*" multiple required></v-file-input>
95
+ </v-col>
96
+ <v-col cols="12">
97
+ <v-file-input label="Product Thumbnails" multiple></v-file-input>
98
+ </v-col>
99
+ <v-col cols="12">
100
+ <v-file-input label="Product Files" multiple></v-file-input>
101
+ </v-col>
102
+
103
+ <v-col cols="12">
104
+ <h5>Related Products, Up-Sells, and Cross-Sells</h5>
105
+ </v-col>
106
+ <v-divider></v-divider>
107
+
108
+ <v-col cols="12">
109
+ <v-select v-model="related_ids" :items="['0-17']" label="Related Products">
110
+ </v-select>
111
+ </v-col>
112
+
113
+ <v-col cols="12">
114
+ <h5>Other Information</h5>
115
+ </v-col>
116
+ <v-divider></v-divider>
117
+
118
+ <v-col cols="6">
119
+ <v-text-field v-model="width" type="number" label="Part Number"></v-text-field>
120
+ </v-col>
121
+ <v-col cols="6">
122
+ <v-text-field v-model="manufacturer_part_number" type="number"
123
+ label="Manufacturer Part Number"></v-text-field>
124
+ </v-col>
125
+
126
+ <v-col cols="12">
127
+ <h5>Downloadable Information</h5>
128
+ </v-col>
129
+ <v-divider></v-divider>
130
+
131
+ <v-col cols="6">
132
+ <v-select v-model="format" :items="['Downloadable', 'Not Downloadable']" label="format">
133
+ </v-select>
134
+ </v-col>
135
+ </v-row>
136
+ </v-container>
137
+ <small>*indicates required field</small>
138
+ </v-card-text>
139
+ <v-card-actions>
140
+ <v-spacer></v-spacer>
141
+ <v-btn color="red-darken-1" variant="text" @click="deleteProduct">
142
+ Delete
143
+ </v-btn>
144
+ <v-btn color="blue-darken-1" variant="text" @click="dialog = false">
145
+ Close
146
+ </v-btn>
147
+ <v-btn color="blue-darken-1" variant="text" @click="updateProduct">
148
+ Update Product
149
+ </v-btn>
150
+ </v-card-actions>
151
+
152
+ </form>
153
+ </div>
154
+ </template>
155
+
156
+ <script setup>
157
+ import {
158
+ ref
159
+ } from 'vue'
160
+
161
+ import editor from '~/components/partials/globals/editor.vue'
162
+
163
+ const config = useRuntimeConfig();
164
+ const name = ref('');
165
+ const status = ref('');
166
+ const short_description = ref('');
167
+ const description = ref('');
168
+ const type = ref('');
169
+ const sku = ref('');
170
+ const image = ref('');
171
+ const height = ref('');
172
+ const weight = ref('');
173
+ const tax_status = ref('');
174
+ const price = ref('');
175
+ const tax_class = ref('');
176
+ const catalog_visibility = ref('');
177
+ const related_ids = ref('');
178
+ const categories = ref('');
179
+ const manufacture = ref('');
180
+ const country = ref('');
181
+ const brand = ref('');
182
+ const width = ref('');
183
+ const format = ref('');
184
+ const errorMessage = ref('');
185
+ const successMessage = ref('');
186
+ const searchSku = ref('');
187
+
188
+ const updateProduct = async () => {
189
+ try {
190
+ const UPDATE_PRODUCT = `
191
+ mutation updateProduct(
192
+ $sku: String!
193
+ $name: String
194
+ $price: Float
195
+ $status: Int
196
+ $weight: Float
197
+ $description: String
198
+ $short_description: String
199
+ $tax_class_id: Int
200
+ ) {
201
+ updateSimpleProduct(
202
+ input: {
203
+ sku: $sku
204
+ name: $name
205
+ price: $price
206
+ status: $status
207
+ weight: $weight
208
+ description: { html: $description }
209
+ short_description: { html: $short_description }
210
+ tax_class_id: $tax_class_id
211
+ }
212
+ ) {
213
+ product {
214
+ id
215
+ name
216
+ sku
217
+ price {
218
+ regularPrice {
219
+ amount {
220
+ value
221
+ }
222
+ }
223
+ }
224
+ }
225
+ }
226
+ }
227
+ `;
228
+
229
+ const variables = {
230
+ sku: sku.value,
231
+ name: name.value,
232
+ price: parseFloat(price.value),
233
+ status: status.value === 'Enable' ? 1 : 2,
234
+ weight: parseFloat(weight.value),
235
+ description: description.value,
236
+ short_description: short_description.value,
237
+ tax_class_id: parseInt(tax_class.value)
238
+ };
239
+
240
+ const response = await fetch(`${config.public.commerceUrl}/graphql`, {
241
+ method: 'POST',
242
+ headers: {
243
+ 'Content-Type': 'application/json',
244
+ 'Authorization': `Bearer ${config.public.commerceApiToken}`
245
+ },
246
+ body: JSON.stringify({
247
+ query: UPDATE_PRODUCT,
248
+ variables
249
+ })
250
+ });
251
+
252
+ const result = await response.json();
253
+ if (result.errors) {
254
+ throw new Error(result.errors[0].message);
255
+ }
256
+
257
+ successMessage.value = 'Product updated successfully';
258
+ } catch (error) {
259
+ errorMessage.value = error.message;
260
+ }
261
+ };
262
+
263
+ const deleteProduct = async () => {
264
+ try {
265
+ const DELETE_PRODUCT = `
266
+ mutation deleteProduct($sku: String!) {
267
+ deleteProducts(
268
+ skus: [$sku]
269
+ ) {
270
+ result
271
+ }
272
+ }
273
+ `;
274
+
275
+ const variables = {
276
+ sku: sku.value
277
+ };
278
+
279
+ const response = await fetch(`${config.public.commerceUrl}/graphql`, {
280
+ method: 'POST',
281
+ headers: {
282
+ 'Content-Type': 'application/json',
283
+ 'Authorization': `Bearer ${config.public.commerceApiToken}`
284
+ },
285
+ body: JSON.stringify({
286
+ query: DELETE_PRODUCT,
287
+ variables
288
+ })
289
+ });
290
+
291
+ const result = await response.json();
292
+ if (result.errors) {
293
+ throw new Error(result.errors[0].message);
294
+ }
295
+
296
+ successMessage.value = 'Product deleted successfully';
297
+ } catch (error) {
298
+ errorMessage.value = error.message;
299
+ }
300
+ };
301
+
302
+ // Add a method to fetch product data for editing
303
+ const fetchProduct = async (sku) => {
304
+ try {
305
+ const GET_PRODUCT = `
306
+ query getProduct($sku: String!) {
307
+ products(filter: { sku: { eq: $sku } }) {
308
+ items {
309
+ name
310
+ sku
311
+ price {
312
+ regularPrice {
313
+ amount {
314
+ value
315
+ }
316
+ }
317
+ }
318
+ status
319
+ weight
320
+ description {
321
+ html
322
+ }
323
+ short_description {
324
+ html
325
+ }
326
+ tax_class_id
327
+ }
328
+ }
329
+ }
330
+ `;
331
+
332
+ const response = await fetch(`${config.public.commerceUrl}/graphql`, {
333
+ method: 'POST',
334
+ headers: {
335
+ 'Content-Type': 'application/json',
336
+ 'Authorization': `Bearer ${config.public.commerceApiToken}`
337
+ },
338
+ body: JSON.stringify({
339
+ query: GET_PRODUCT,
340
+ variables: {
341
+ sku
342
+ }
343
+ })
344
+ });
345
+
346
+ const result = await response.json();
347
+ if (result.errors) {
348
+ throw new Error(result.errors[0].message);
349
+ }
350
+
351
+ const product = result.data.products.items[0];
352
+ if (product) {
353
+ // After successful update or delete
354
+ dialog.value = false;
355
+ name.value = product.name;
356
+ sku.value = product.sku;
357
+ price.value = product.price.regularPrice.amount.value;
358
+ status.value = product.status === 1 ? 'Enable' : 'Disable';
359
+ weight.value = product.weight;
360
+ description.value = product.description.html;
361
+ short_description.value = product.short_description.html;
362
+ tax_class.value = product.tax_class_id;
363
+ }
364
+ } catch (error) {
365
+ errorMessage.value = error.message;
366
+ }
367
+ };
368
+
369
+ useHead({
370
+ title: 'Update Product',
371
+ })
372
+ </script>
@@ -0,0 +1,153 @@
1
+ <template>
2
+ <div>
3
+ <v-card elevation="0">
4
+ <v-toolbar title="Update A Showcase"></v-toolbar>
5
+ <v-form @submit.prevent="updateShowcase">
6
+ <v-container>
7
+ <v-row>
8
+ <v-col cols="6">
9
+ <v-text-field v-model="title" label="Showcase Name" required></v-text-field>
10
+ </v-col>
11
+ <v-col cols="6">
12
+ <v-combobox v-model="type" label="Status" :items="['Public', 'Private']"></v-combobox>
13
+ </v-col>
14
+ <v-col cols="12">
15
+ <v-file-input clearable label="Showcase Image"></v-file-input>
16
+ </v-col>
17
+ <v-col cols="12">
18
+ <v-textarea v-model="description" label="Showcase Description"></v-textarea>
19
+ </v-col>
20
+ <v-col cols="12">
21
+ <v-card title="Choose a Product for your Showcase">
22
+ <v-card-text>
23
+ <v-text-field density="compact" variant="solo" label="Search Meeovi for products"
24
+ append-inner-icon="fas:fa fa-search" single-line hide-details
25
+ @click:append-inner="onClick"></v-text-field>
26
+ <v-spacer></v-spacer>
27
+ <div class="d-flex pa-4">
28
+ <v-checkbox-btn v-model="includeFiles" class="pe-2" color="orange">
29
+ </v-checkbox-btn>
30
+ <!--<NuxtLink :to="`/product/${products.id}`">
31
+ <v-card class="ma-4" height="580" width="250" @click="toggle">
32
+ <NuxtImg loading="lazy" class="align-end text-white" height="280"
33
+ :src="`${products.featuredAsset.preview}`" :alt="products.name" cover />
34
+
35
+ <v-card-title class="pt-4">
36
+ {{ products.name }}
37
+ </v-card-title>
38
+
39
+ <v-card-text>
40
+ <div>Sku: {{ products.variants.sku }}</div>
41
+ </v-card-text>
42
+
43
+ <v-card-actions>
44
+ <v-card-title>$ {{ products.variants.price }}
45
+ </v-card-title>
46
+ </v-card-actions>
47
+ <div class="d-flex fill-height align-center justify-center">
48
+ <v-scale-transition>
49
+ <v-icon v-if="isSelected" color="white" size="48"
50
+ icon="mdi-close-circle-outline"></v-icon>
51
+ </v-scale-transition>
52
+ </div>
53
+ </v-card>
54
+ </NuxtLink>-->
55
+ </div>
56
+ </v-card-text>
57
+ </v-card>
58
+ </v-col>
59
+ </v-row>
60
+ </v-container>
61
+
62
+ <v-divider class="mt-12"></v-divider>
63
+ <v-card-actions>
64
+ <v-btn color="blue-darken-1" variant="text" type="submit" @click.prevent="deleteShowcaseAndRefresh">
65
+ Delete
66
+ </v-btn>
67
+ <v-spacer></v-spacer>
68
+ <v-btn color="blue-darken-1" variant="text" type="submit" @click.prevent="updateShowcaseAndRefresh">
69
+ Update
70
+ </v-btn>
71
+ </v-card-actions>
72
+ </v-form>
73
+ </v-card>
74
+ </div>
75
+ </template>
76
+
77
+ <script setup>
78
+ import { ref } from 'vue';
79
+
80
+ import { useRoute, useRouter } from 'vue-router';
81
+ /*import { UPDATE_SHOWCASE, DELETE_SHOWCASE } from '#graphql/cms/queries/showcases'
82
+
83
+ const route = useRoute();
84
+ const router = useRouter();
85
+ const id = route.params.id;
86
+
87
+ const dialog = ref(false)
88
+ const includeFiles = ref(true)
89
+ const enabled = ref(false)
90
+ const name = ref('');
91
+ const title = ref('');
92
+ const color = ref('');
93
+ const colortext = ref('');
94
+ const showcaseFields = ref('');
95
+ const description = ref('');
96
+ const image = ref('');
97
+ const rating = ref('');
98
+ const products = ref('');
99
+
100
+ const { client: apolloClient } = useApolloClient();
101
+
102
+ const updateShowcase = async () => {
103
+ try {
104
+ const { data } = await apolloClient.mutate({
105
+ mutation: UPDATE_SHOWCASE,
106
+ variables: {
107
+ name: name.value,
108
+ title: title.value,
109
+ color: showcaseFields.color.value,
110
+ colortext: showcaseFields.colortext.value,
111
+ description: showcaseFields.description.value,
112
+ image: showcaseFields.image.node.sourceUrl,
113
+ id: id,
114
+ },
115
+ });
116
+ console.log('Showcase updated:', data.updateShowcase.showcase);
117
+ } catch (error) {
118
+ console.error('Error updating showcase:', error);
119
+ }
120
+ };
121
+
122
+ const deleteShowcase = async () => {
123
+ try {
124
+ const { data } = await apolloClient.mutate({
125
+ mutation: DELETE_SHOWCASE,
126
+ variables: {
127
+ id: id,
128
+ },
129
+ });
130
+ console.log('Showcase deleted:', data.deleteShowcase.showcase.id);
131
+ } catch (error) {
132
+ console.error('Error deleting showcase:', error);
133
+ }
134
+ };
135
+
136
+ const deleteShowcaseAndRefresh = async () => {
137
+ await deleteShowcase();
138
+ router.push('/product/showcase/showcases'); // Refresh the current route
139
+ };
140
+
141
+ const updateShowcaseAndRefresh = async () => {
142
+ await updateShowcase();
143
+ router.go(0); // Refresh the current route
144
+ };
145
+
146
+ const reset = () => {
147
+ router.go(0);
148
+ };*/
149
+
150
+ useHead({
151
+ title: 'Update Showcase',
152
+ })
153
+ </script>
@@ -0,0 +1,37 @@
1
+ <template>
2
+ <v-sheet class="mx-auto sliderProducts row align-items-stretch items-row justify-content-center" elevation="0">
3
+ <v-toolbar title="Stores on Meeovi" color="transparent">
4
+ <div>
5
+ <NuxtLink to="/shops/">All Stores</NuxtLink>
6
+ </div>
7
+ </v-toolbar>
8
+ <v-slide-group v-model="model" class="pa-4" selected-class="bg-primary" show-arrows>
9
+ <v-slide-group-item v-for="store in shops" :key="store" v-slot="{ toggle, selectedClass }">
10
+ <store :store="store" />
11
+ </v-slide-group-item>
12
+ </v-slide-group>
13
+
14
+ <v-expand-transition>
15
+ <v-sheet v-if="model != null" height="200">
16
+ <div class="d-flex fill-height align-center justify-center">
17
+ <h3 class="text-h6">
18
+ Selected {{ model }}
19
+ </h3>
20
+ </div>
21
+ </v-sheet>
22
+ </v-expand-transition>
23
+ </v-sheet>
24
+ </template>
25
+
26
+ <script setup>
27
+ import { ref } from 'vue'
28
+ import store from './stores.vue'
29
+ import { useContentFallback } from '../../../composables/useContent'
30
+
31
+ const model = ref(null)
32
+ const content = useContentFallback()
33
+
34
+ const { data: shops } = await useAsyncData('shops', () => {
35
+ return content.listShops({ fields: ['*', { '*': ['*'] }] })
36
+ })
37
+ </script>
@@ -0,0 +1,66 @@
1
+ <template>
2
+ <div>
3
+ <div v-if="restaurant">
4
+ <section data-bs-version="5.1" class="features01 stockm5 cid-uwd9RxG0Y8" id="features01-aa">
5
+ <div class="container">
6
+ <div class="row">
7
+ <div class="col-12">
8
+ <div class="title-wrapper">
9
+ <div class="desc-wrapper">
10
+ <p class="mbr-desc mbr-fonts-style display-4">
11
+ Restaurants
12
+ </p>
13
+ </div>
14
+ <div class="title-wrap">
15
+ <h2 class="mbr-section-title mbr-fonts-style display-2">
16
+ <strong><span><b>Great Tastes</b></span> near you!</strong>
17
+ </h2>
18
+ </div>
19
+ </div>
20
+ </div>
21
+ </div>
22
+ <div class="row items-wrapper">
23
+ <div class="item features-image col-12 col-lg-4">
24
+ <div class="item-wrapper">
25
+ <div class="item-img">
26
+ <NuxtLink :to="`/shops/${restaurant?.id}`"><img loading="lazy" class="align-end text-white" v-if="restaurant?.image"
27
+ :src="`${$directus.url}assets/${restaurant?.image?.filename_disk}`" :alt="restaurant?.name"></NuxtLink>
28
+ </div>
29
+ <div class="item-content">
30
+ <div class="desc-wrap">
31
+ <p class="item-desc desc_1 mbr-fonts-style display-4">
32
+ {{ restaurant?.food_offered }}
33
+ </p>
34
+ </div>
35
+ <h4 class="item-title mbr-fonts-style display-5">
36
+ <strong>{{ restaurant?.name }}</strong>
37
+ </h4>
38
+ <p class="item-text mbr-fonts-style display-4" v-dompurify-html="restaurant?.description"></p>
39
+ </div>
40
+ </div>
41
+ </div>
42
+ </div>
43
+ </div>
44
+ </section>
45
+ </div>
46
+ <p v-else>No restaurants found.</p>
47
+ </div>
48
+ </template>
49
+
50
+ <script setup>
51
+ import {
52
+ useRuntimeConfig
53
+ } from '#imports';
54
+
55
+ const config = useRuntimeConfig();
56
+ const props = defineProps({
57
+ restaurant: {
58
+ type: Object,
59
+ required: true,
60
+ },
61
+ });
62
+
63
+ const {
64
+ restaurant
65
+ } = props;
66
+ </script>
@@ -0,0 +1,44 @@
1
+ <template>
2
+ <div>
3
+ <div v-if="store">
4
+ <div class="card col-12 col-md-6 col-lg-4">
5
+ <div class="card-wrapper">
6
+ <div class="img-wrapper">
7
+ <NuxtImg loading="lazy" class="align-end text-white" v-if="store?.image"
8
+ :src="`${$directus.url}/assets/${store?.image?.filename_disk}`" :alt="store?.name"
9
+ cover />
10
+ </div>
11
+ <div class="card-box align-center">
12
+ <h5 class="card-title mbr-fonts-style display-5">
13
+ {{ store?.name }}
14
+ </h5>
15
+ <p class="mbr-text mbr-fonts-style display-4">{{ store?.description }}</p>
16
+ </div>
17
+ <div class="mbr-section-btn mt-3">
18
+ <NuxtLink class="btn btn-secondary display-4" :href="`/shops/${store?.id}`">Enter
19
+ </NuxtLink>
20
+ </div>
21
+ </div>
22
+ </div>
23
+ </div>
24
+ <p v-else>No stores found.</p>
25
+ </div>
26
+ </template>
27
+
28
+ <script setup>
29
+ import {
30
+ useRuntimeConfig
31
+ } from '#imports';
32
+
33
+ const config = useRuntimeConfig();
34
+ const props = defineProps({
35
+ store: {
36
+ type: Object,
37
+ required: true,
38
+ },
39
+ });
40
+
41
+ const {
42
+ store
43
+ } = props;
44
+ </script>
@@ -0,0 +1,3 @@
1
+ ## Dashboard Directory
2
+
3
+ This is part of the admin panel for the marketplace functionality also called the Seller's Dashboard on the frontend.