@mframework/layer-commerce 0.0.7 → 0.0.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (206) hide show
  1. package/app/components/catalog/product/ProductAccordion/ProductAccordion.vue +41 -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 +52 -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 +69 -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 +61 -0
  22. package/app/components/catalog/product/exclusives.vue +58 -0
  23. package/app/components/catalog/product/featuredproducts.vue +69 -0
  24. package/app/components/catalog/product/giftCard.vue +63 -0
  25. package/app/components/catalog/product/latestproducts.vue +58 -0
  26. package/app/components/catalog/product/productCard.vue +71 -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 +120 -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 +58 -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 +47 -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 +52 -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/content/blocks/breadcrumbs.vue +0 -0
  67. package/app/components/content/blocks/currencySwitcher.vue +0 -0
  68. package/app/components/content/blocks/languageSwitcher.vue +0 -0
  69. package/app/components/content/blocks/videoproduct.vue +9 -0
  70. package/app/components/content/pages/checkout.vue +118 -0
  71. package/app/components/content/pages/meeoviGlobal.vue +68 -0
  72. package/app/components/content/pages/pickup-locations.vue +238 -0
  73. package/app/components/content/pages/showcases.vue +90 -0
  74. package/app/components/content/pages/success.vue +60 -0
  75. package/app/components/marketing/add-brand.vue +54 -0
  76. package/app/components/marketing/add-incentive.vue +54 -0
  77. package/app/components/marketing/promotions/giftcards.vue +127 -0
  78. package/app/components/marketing/promotions/subscriptions.vue +134 -0
  79. package/app/components/marketing/update-incentive.vue +326 -0
  80. package/app/components/menus/lowernav.vue +78 -0
  81. package/app/components/partials/LocaleSelector.vue +24 -0
  82. package/app/components/partials/ShoppingCart.vue +128 -0
  83. package/app/components/partials/StripePayment.vue +149 -0
  84. package/app/components/partials/addToCartBtn.vue +40 -0
  85. package/app/components/partials/cartItem.vue +124 -0
  86. package/app/components/partials/checkoutButton.vue +44 -0
  87. package/app/components/partials/compareBtn.vue +68 -0
  88. package/app/components/partials/ratings.vue +13 -0
  89. package/app/components/partials/store/CurrencySelector.vue +133 -0
  90. package/app/components/partials/store/StoreSwitcher.vue +13 -0
  91. package/app/components/related/brandCard.vue +41 -0
  92. package/app/components/related/incentiveCard.vue +44 -0
  93. package/app/components/related/invoiceCard.vue +43 -0
  94. package/app/components/related/orderCard.vue +43 -0
  95. package/app/components/related/relatedproducts.vue +17 -0
  96. package/app/components/sales/CartPageContent/CartPageContent.vue +43 -0
  97. package/app/components/sales/CheckoutAddress/CheckoutAddress.vue +50 -0
  98. package/app/components/sales/CheckoutAddress/__tests__/CheckoutAddress.spec.ts +16 -0
  99. package/app/components/sales/CheckoutAddress/types.ts +16 -0
  100. package/app/components/sales/CheckoutPayment/CheckoutPayment.vue +65 -0
  101. package/app/components/sales/CheckoutPayment/__tests__/CheckoutPayment.spec.ts +14 -0
  102. package/app/components/sales/CheckoutPayment/types.ts +12 -0
  103. package/app/components/sales/OrderSummary/OrderSummary.vue +57 -0
  104. package/app/components/sales/OrderSummary/__tests__/ContactInformation.spec.ts +52 -0
  105. package/app/components/sales/OrderSummary/types.ts +5 -0
  106. package/app/components/sales/incentives.vue +247 -0
  107. package/app/components/sales/invoices.vue +107 -0
  108. package/app/components/sales/orders.vue +378 -0
  109. package/app/components/sales/shipments.vue +65 -0
  110. package/app/components/sales/transactions.vue +109 -0
  111. package/app/components/shop/add-shop.vue +54 -0
  112. package/app/components/shop/cart/cartItem.vue +182 -0
  113. package/app/components/shop/cart/checkout.vue +415 -0
  114. package/app/components/shop/checkout/StripeCardElement.vue +206 -0
  115. package/app/components/shop/checkout/StripeCheckout.vue +49 -0
  116. package/app/components/shop/checkout/addressBilling.vue +263 -0
  117. package/app/components/shop/checkout/addressShipping.vue +175 -0
  118. package/app/components/shop/checkout/cart/ProductItem.vue +56 -0
  119. package/app/components/shop/checkout/cart/PromotionItem.vue +53 -0
  120. package/app/stores/cart.ts +1 -1
  121. package/app/types/Direction.type.ts +1 -1
  122. package/app/types/Global.type.ts +6 -6
  123. package/app/types/Layout.type.ts +1 -1
  124. package/app/{normalizers → types/normalizers}/Cart.query.ts +1 -1
  125. package/app/{normalizers → types/normalizers}/Cart.type.ts +2 -2
  126. package/app/{normalizers → types/normalizers}/Checkout.query.ts +2 -2
  127. package/app/{normalizers → types/normalizers}/Config.query.ts +1 -1
  128. package/app/{normalizers → types/normalizers}/Config.type.ts +1 -1
  129. package/app/{normalizers → types/normalizers}/ContactForm.query.ts +2 -2
  130. package/app/{normalizers → types/normalizers}/CreditMemo.type.ts +1 -1
  131. package/app/{normalizers → types/normalizers}/GiftCard.type.ts +1 -1
  132. package/app/{normalizers → types/normalizers}/Invoice.type.ts +1 -1
  133. package/app/{normalizers → types/normalizers}/MyAccount.query.ts +1 -1
  134. package/app/{normalizers → types/normalizers}/MyAccount.type.ts +1 -1
  135. package/app/{normalizers → types/normalizers}/NewsletterSubscription.query.ts +1 -1
  136. package/app/{normalizers → types/normalizers}/Order.query.ts +1 -1
  137. package/app/{normalizers → types/normalizers}/Order.type.ts +2 -2
  138. package/app/{normalizers → types/normalizers}/Payment.type.ts +1 -1
  139. package/app/{normalizers → types/normalizers}/ProductCompare.query.ts +1 -1
  140. package/app/{normalizers → types/normalizers}/ProductCompare.type.ts +1 -1
  141. package/app/{normalizers → types/normalizers}/ProductList.query.ts +2 -2
  142. package/app/{normalizers → types/normalizers}/ProductList.type.ts +2 -2
  143. package/app/{normalizers → types/normalizers}/Return.type.ts +1 -1
  144. package/app/{normalizers → types/normalizers}/Review.query.ts +1 -1
  145. package/app/{normalizers → types/normalizers}/Review.type.ts +1 -1
  146. package/app/{normalizers → types/normalizers}/StoreInPickUp.query.ts +1 -1
  147. package/app/{normalizers → types/normalizers}/Subscription.type.ts +1 -1
  148. package/app/{normalizers → types/normalizers}/Transaction.type.ts +1 -1
  149. package/app/{normalizers → types/normalizers}/UrlRewrites.query.ts +1 -1
  150. package/app/{normalizers → types/normalizers}/UrlRewrites.type.ts +1 -1
  151. package/app/{normalizers → types/normalizers}/Wishlist.query.ts +4 -4
  152. package/app/{normalizers → types/normalizers}/Wishlist.type.ts +1 -1
  153. package/app/utils/Address/Address.type.ts +1 -1
  154. package/app/utils/Address/index.ts +5 -5
  155. package/app/utils/Cart/Cart.ts +1 -1
  156. package/app/utils/Currency/Currency.ts +1 -1
  157. package/app/utils/History/History.type.ts +1 -1
  158. package/app/utils/Menu/Menu.ts +1 -1
  159. package/app/utils/Menu/Menu.type.ts +2 -2
  160. package/app/utils/Orders/Orders.ts +1 -1
  161. package/app/utils/Preload/CategoryPreload.ts +2 -2
  162. package/app/utils/Preload/ProductPreload.ts +1 -1
  163. package/app/utils/Preload/index.ts +1 -1
  164. package/app/utils/Price/Price.ts +1 -1
  165. package/app/utils/Product/Extract.ts +1 -1
  166. package/app/utils/Product/Product.ts +1 -1
  167. package/app/utils/Product/Product.type.ts +1 -1
  168. package/app/utils/Product/Transform.ts +1 -1
  169. package/app/utils/Wishlist/Wishlist.ts +1 -1
  170. package/app/utils/client.ts +19 -19
  171. package/package.json +1 -2
  172. package/tsconfig.json +2 -2
  173. package/app/cart/useCart.ts +0 -1
  174. /package/app/{components → composables}/ChevronIcon/ChevronIcon.config.ts +0 -0
  175. /package/app/{components → composables}/DateSelect/DateSelect.config.ts +0 -0
  176. /package/app/{components → composables}/Field/Field.config.ts +0 -0
  177. /package/app/{components → composables}/FieldDate/FieldDate.config.ts +0 -0
  178. /package/app/{components → composables}/Form/Form.type.ts +0 -0
  179. /package/app/{components → composables}/Product/Product.config.ts +0 -0
  180. /package/app/{components → composables}/Product/Stock.config.ts +0 -0
  181. /package/app/{components → composables}/ProductCustomizableOption/ProductCustomizableOption.config.ts +0 -0
  182. /package/app/{components → composables}/ProductGallery/ProductGallery.config.ts +0 -0
  183. /package/app/{components → composables}/ProductReviews/ProductReviews.config.ts +0 -0
  184. /package/app/{normalizers → types/normalizers}/Category.query.ts +0 -0
  185. /package/app/{normalizers → types/normalizers}/Category.type.ts +0 -0
  186. /package/app/{normalizers → types/normalizers}/CheckEmail.query.ts +0 -0
  187. /package/app/{normalizers → types/normalizers}/Checkout.type.ts +0 -0
  188. /package/app/{normalizers → types/normalizers}/CmsBlock.query.ts +0 -0
  189. /package/app/{normalizers → types/normalizers}/CmsBlock.type.ts +0 -0
  190. /package/app/{normalizers → types/normalizers}/CmsPage.query.ts +0 -0
  191. /package/app/{normalizers → types/normalizers}/CmsPage.type.ts +0 -0
  192. /package/app/{normalizers → types/normalizers}/Menu.query.ts +0 -0
  193. /package/app/{normalizers → types/normalizers}/Menu.type.ts +0 -0
  194. /package/app/{normalizers → types/normalizers}/ProductAlerts.query.ts +0 -0
  195. /package/app/{normalizers → types/normalizers}/Region.query.ts +0 -0
  196. /package/app/{normalizers → types/normalizers}/Region.type.ts +0 -0
  197. /package/app/{normalizers → types/normalizers}/Slider.query.ts +0 -0
  198. /package/app/{normalizers → types/normalizers}/Slider.type.ts +0 -0
  199. /package/app/{normalizers → types/normalizers}/StoreInPickUp.type.ts +0 -0
  200. /package/app/{routes → types/routes}/CategoryPage/CategoryPage.config.ts +0 -0
  201. /package/app/{routes → types/routes}/CategoryPage/CategoryPage.type.ts +0 -0
  202. /package/app/{routes → types/routes}/Checkout/Checkout.config.ts +0 -0
  203. /package/app/{routes → types/routes}/Checkout/Checkout.type.ts +0 -0
  204. /package/app/{routes → types/routes}/MyAccount/MyAccount.config.ts +0 -0
  205. /package/app/{routes → types/routes}/SearchPage/SearchPage.config.ts +0 -0
  206. /package/app/{routes → types/routes}/UrlRewrites/UrlRewrites.config.ts +0 -0
@@ -0,0 +1,378 @@
1
+ <template>
2
+ <div>
3
+ <section data-bs-version="5.1" class="info1 cid-v5A0K07pfT" id="info1-bd" data-sortbtn="btn-primary">
4
+ <div class="mbr-overlay" style="opacity: 0.5; background-color: rgb(68, 121, 217);"></div>
5
+ <div class="align-center container">
6
+ <div class="row justify-content-center">
7
+ <div class="col-12 col-lg-8">
8
+ <h3 class="mbr-section-title mb-4 mbr-fonts-style display-1">
9
+ <strong> {{ ordersPage?.name }}</strong>
10
+ </h3>
11
+ <p class="mbr-section-title mb-4 mbr-fonts-style display-7" v-dompurify-html="ordersPage?.content"></p>
12
+ </div>
13
+ </div>
14
+ </div>
15
+ </section>
16
+
17
+ <v-card variant="text">
18
+ <v-toolbar :style="`background-color: ${orderBar?.color}; color: ${orderBar?.colortext} !important`">
19
+ <v-toolbar-title>{{ orderBar?.name }}</v-toolbar-title>
20
+
21
+
22
+ <v-tabs v-model="tab" align-tabs="center">
23
+ <div v-for="(menu, index) in orderBar?.menus" :key="index">
24
+ <v-tab :value="menu?.value">
25
+ <v-btn variant="text"
26
+ :style="`color: ${orderBar?.colortext} !important`">{{ menu?.name }}</v-btn>
27
+ </v-tab>
28
+ </div>
29
+ </v-tabs>
30
+ </v-toolbar>
31
+ </v-card>
32
+
33
+ <v-tabs-window v-model="tab">
34
+ <!--Orders-->
35
+ <v-tabs-window-item :value="orderBar?.menus?.[0]?.value">
36
+ <v-row class="media-container-row">
37
+ <template v-if="orders?.length">
38
+ <v-col class="wrap col-sm-12 col-lg-4 feedPost" v-for="order in orders" :key="order.id">
39
+ <orderCard :order="order" />
40
+ </v-col>
41
+ </template>
42
+ <div class="center-text" v-else>No Activity yet</div>
43
+ </v-row>
44
+ </v-tabs-window-item>
45
+
46
+ <!--Pending Orders-->
47
+ <v-tabs-window-item :value="orderBar?.menus?.[1]?.value">
48
+ <v-row class="media-container-row">
49
+ <template v-if="pending?.length">
50
+ <v-col class="wrap col-sm-12 col-lg-4 feedPost" v-for="pendingOrder in pending"
51
+ :key="pendingOrder.id">
52
+ <orderCard :order="pendingOrder" />
53
+ </v-col>
54
+ </template>
55
+ <div class="center-text" v-else>No Pending Orders</div>
56
+ </v-row>
57
+ </v-tabs-window-item>
58
+
59
+ <!--Processing Orders-->
60
+ <v-tabs-window-item :value="orderBar?.menus?.[2]?.value">
61
+ <v-row class="media-container-row">
62
+ <template v-if="processing?.length">
63
+ <v-col class="wrap col-sm-12 col-lg-4 feedPost" v-for="processingOrder in processing"
64
+ :key="processingOrder.id">
65
+ <orderCard :order="processingOrder" />
66
+ </v-col>
67
+ </template>
68
+
69
+ <div class="center-text" v-else>No Processing Orders</div>
70
+ </v-row>
71
+ </v-tabs-window-item>
72
+
73
+ <!--On Hold Orders-->
74
+ <v-tabs-window-item :value="orderBar?.menus?.[3]?.value">
75
+ <v-row class="media-container-row">
76
+ <template v-if="onHold?.length">
77
+ <v-col class="wrap col-sm-12 col-lg-4 feedPost" v-for="onHoldOrder in onHold"
78
+ :key="onHoldOrder.id">
79
+ <orderCard :order="onHoldOrder" />
80
+ </v-col>
81
+ </template>
82
+
83
+ <div class="center-text" v-else>No On Hold Orders</div>
84
+ </v-row>
85
+ </v-tabs-window-item>
86
+
87
+ <!--Failed Orders-->
88
+ <v-tabs-window-item :value="orderBar?.menus?.[4]?.value">
89
+ <v-row class="media-container-row">
90
+ <template v-if="failed?.length">
91
+ <v-col class="wrap col-sm-12 col-lg-4 feedPost" v-for="failedOrder in failed"
92
+ :key="failedOrder.id">
93
+ <orderCard :order="failedOrder" />
94
+ </v-col>
95
+ </template>
96
+
97
+ <div class="center-text" v-else>No Failed Orders</div>
98
+ </v-row>
99
+ </v-tabs-window-item>
100
+
101
+ <!--Disputed Orders-->
102
+ <v-tabs-window-item :value="orderBar?.menus?.[2]?.value">
103
+ <v-row class="media-container-row">
104
+ <template v-if="disputed?.length">
105
+ <v-col class="wrap col-sm-12 col-lg-4 feedPost" v-for="disputedOrder in disputed"
106
+ :key="disputedOrder.id">
107
+ <orderCard :order="disputedOrder" />
108
+ </v-col>
109
+ </template>
110
+
111
+ <div class="center-text" v-else>No Disputed Orders</div>
112
+ </v-row>
113
+ </v-tabs-window-item>
114
+
115
+ <!--Completed Orders-->
116
+ <v-tabs-window-item :value="orderBar?.menus?.[5]?.value">
117
+ <v-row class="media-container-row">
118
+ <template v-if="completed?.length">
119
+ <v-col class="wrap col-sm-12 col-lg-4 feedPost" v-for="completedOrder in completed"
120
+ :key="completedOrder.id">
121
+ <orderCard :order="completedOrder" />
122
+ </v-col>
123
+ </template>
124
+ <div class="center-text" v-else>No Completed Orders</div>
125
+ </v-row>
126
+ </v-tabs-window-item>
127
+
128
+ <!--Refunded Orders-->
129
+ <v-tabs-window-item :value="orderBar?.menus?.[4]?.value">
130
+ <v-row class="media-container-row">
131
+ <template v-if="refunded?.length">
132
+ <v-col class="wrap col-sm-12 col-lg-4 feedPost" v-for="refundedOrder in refunded"
133
+ :key="refundedOrder.id">
134
+ <orderCard :order="refundedOrder" />
135
+ </v-col>
136
+ </template>
137
+ <div class="center-text" v-else>No Refunded Orders</div>
138
+ </v-row>
139
+ </v-tabs-window-item>
140
+
141
+ <!--Cancelled Orders-->
142
+ <v-tabs-window-item :value="orderBar?.menus?.[2]?.value">
143
+ <v-row class="media-container-row">
144
+ <template v-if="cancelled?.length">
145
+ <v-col class="wrap col-sm-12 col-lg-4 feedPost" v-for="cancelOrder in cancelled"
146
+ :key="cancelOrder.id">
147
+ <orderCard :order="cancelOrder" />
148
+ </v-col>
149
+ </template>
150
+
151
+ <div class="center-text" v-else>No Cancelled Orders</div>
152
+ </v-row>
153
+ </v-tabs-window-item>
154
+ </v-tabs-window>
155
+ </div>
156
+ </template>
157
+
158
+ <script setup>
159
+ import {
160
+ ref,
161
+ computed
162
+ } from 'vue'
163
+ import orderCard from '~/components/related/order.vue'
164
+ import {
165
+ useUserStore
166
+ } from '#auth/app/stores/user'
167
+
168
+ const user = useSupabaseUser()
169
+
170
+ const {
171
+ $directus,
172
+ $readItem,
173
+ $readItems
174
+ } = useNuxtApp()
175
+ const tab = ref(null);
176
+
177
+ const {
178
+ data: orderBar
179
+ } = await useAsyncData('orderBar', async () => {
180
+ const resp = await $directus.request($readItem('navigation', '84', {
181
+ fields: ['*', {
182
+ '*': ['*']
183
+ }]
184
+ }))
185
+ return resp?.data ?? resp ?? null
186
+ })
187
+
188
+ const {
189
+ data: ordersPage
190
+ } = await useAsyncData('ordersPage', () => {
191
+ return $directus.request($readItem('pages', '86', {
192
+ fields: ['*', {
193
+ '*': ['*']
194
+ }]
195
+ }))
196
+ })
197
+
198
+ const {
199
+ data: orders
200
+ } = await useAsyncData('orders', async () => {
201
+ const resp = await $directus.request($readItems('orders', {
202
+ fields: ['*', {
203
+ '*': ['*']
204
+ }],
205
+ filter: {
206
+ user_id: {
207
+ _eq: user?.id
208
+ }
209
+ },
210
+ sort: '-dated_created'
211
+ }))
212
+ return resp?.data ?? resp ?? []
213
+ })
214
+
215
+ const {
216
+ data: pending
217
+ } = await useAsyncData('pending', async () => {
218
+ const resp = await $directus.request($readItems('orders', {
219
+ fields: ['*', {
220
+ '*': ['*']
221
+ }],
222
+ filter: {
223
+ user_id: {
224
+ _eq: user?.id
225
+ },
226
+ payment_status: {
227
+ _eq: 'pending'
228
+ }
229
+ },
230
+ sort: '-dated_created'
231
+ }))
232
+ return resp?.data ?? resp ?? []
233
+ })
234
+
235
+ const {
236
+ data: processing
237
+ } = await useAsyncData('processing', async () => {
238
+ const resp = await $directus.request($readItems('orders', {
239
+ fields: ['*', {
240
+ '*': ['*']
241
+ }],
242
+ filter: {
243
+ user_id: {
244
+ _eq: user?.id
245
+ },
246
+ payment_status: {
247
+ _eq: 'processing'
248
+ }
249
+ },
250
+ sort: '-dated_created'
251
+ }))
252
+ return resp?.data ?? resp ?? []
253
+ })
254
+
255
+ const {
256
+ data: onHold
257
+ } = await useAsyncData('onHold', async () => {
258
+ const resp = await $directus.request($readItems('orders', {
259
+ fields: ['*', {
260
+ '*': ['*']
261
+ }],
262
+ filter: {
263
+ user_id: {
264
+ _eq: user?.id
265
+ },
266
+ payment_status: {
267
+ _eq: 'on-hold'
268
+ }
269
+ },
270
+ sort: '-dated_created'
271
+ }))
272
+ return resp?.data ?? resp ?? []
273
+ })
274
+
275
+ const {
276
+ data: failed
277
+ } = await useAsyncData('failed', async () => {
278
+ const resp = await $directus.request($readItems('orders', {
279
+ fields: ['*', {
280
+ '*': ['*']
281
+ }],
282
+ filter: {
283
+ user_id: {
284
+ _eq: user?.id
285
+ },
286
+ payment_status: {
287
+ _eq: 'failed'
288
+ }
289
+ },
290
+ sort: '-dated_created'
291
+ }))
292
+ return resp?.data ?? resp ?? []
293
+ })
294
+
295
+ const {
296
+ data: disputed
297
+ } = await useAsyncData('disputed', async () => {
298
+ const resp = await $directus.request($readItems('orders', {
299
+ fields: ['*', {
300
+ '*': ['*']
301
+ }],
302
+ filter: {
303
+ user_id: {
304
+ _eq: user?.id
305
+ },
306
+ payment_status: {
307
+ _eq: 'disputed'
308
+ }
309
+ },
310
+ sort: '-dated_created'
311
+ }))
312
+ return resp?.data ?? resp ?? []
313
+ })
314
+
315
+ const {
316
+ data: completed
317
+ } = await useAsyncData('completed', async () => {
318
+ const resp = await $directus.request($readItems('orders', {
319
+ fields: ['*', {
320
+ '*': ['*']
321
+ }],
322
+ filter: {
323
+ user_id: {
324
+ _eq: user?.id
325
+ },
326
+ payment_status: {
327
+ _eq: 'completed'
328
+ }
329
+ },
330
+ sort: '-dated_created'
331
+ }))
332
+ return resp?.data ?? resp ?? []
333
+ })
334
+
335
+ const {
336
+ data: refunded
337
+ } = await useAsyncData('refunded', async () => {
338
+ const resp = await $directus.request($readItems('orders', {
339
+ fields: ['*', {
340
+ '*': ['*']
341
+ }],
342
+ filter: {
343
+ user_id: {
344
+ _eq: user?.id
345
+ },
346
+ payment_status: {
347
+ _eq: 'refunded'
348
+ }
349
+ },
350
+ sort: '-dated_created'
351
+ }))
352
+ return resp?.data ?? resp ?? []
353
+ })
354
+
355
+ const {
356
+ data: cancelled
357
+ } = await useAsyncData('cancelled', async () => {
358
+ const resp = await $directus.request($readItems('orders', {
359
+ fields: ['*', {
360
+ '*': ['*']
361
+ }],
362
+ filter: {
363
+ user_id: {
364
+ _eq: user?.id
365
+ },
366
+ payment_status: {
367
+ _eq: 'cancelled'
368
+ }
369
+ },
370
+ sort: '-dated_created'
371
+ }))
372
+ return resp?.data ?? resp ?? []
373
+ })
374
+
375
+ useHead({
376
+ title: 'Activity Feed',
377
+ })
378
+ </script>
@@ -0,0 +1,65 @@
1
+ <template>
2
+ <div>
3
+ <!--<profilebar />-->
4
+ <section class="firmm4_features1 features1">
5
+ <div class="container-fluid">
6
+ <div class="row">
7
+ <div class="col-12 title_block">
8
+ <h3 class="mbr-section-title mbr-fonts-style align-center mb-0 display-2">
9
+ <strong>Shipments</strong>
10
+ </h3>
11
+ </div>
12
+ </div>
13
+ <div class="row justify-content-center">
14
+ <div class="card col-12 col-lg-3 col-md-6 col-sm-6" v-for="shipment in shipments" :key="shipment.id">
15
+ <div class="card_wrapper">
16
+ <div class="card-box">
17
+ <div class="icon_block">
18
+ <div class="iconfont-wrapper">
19
+ <span class="mbr-iconfont mobi-mbri-cart-full mobi-mbri"></span>
20
+ </div>
21
+ </div>
22
+ <p class="card-text mbr-fonts-style display-4">Shipment: {{ shipment.id }}</p>
23
+ <p class="card-text mbr-fonts-style display-4">Ship Date: {{ new Date(shipment.createdAt).toLocaleDateString() }}</p>
24
+ <p class="card-text mbr-fonts-style display-4">Order #: {{ shipment.order?.code }}</p>
25
+ <p class="card-text mbr-fonts-style display-4">Total Quantity: {{ shipment.lines?.length }}</p>
26
+ <p class="btn_link mbr-fonts-style display-4"><a :href="`/account/user/shipment/${shipment.id}`" class="text-secondary">View<span class="mobi-mbri mobi-mbri-right mbr-iconfont"></span></a></p>
27
+ </div>
28
+ </div>
29
+ </div>
30
+ </div>
31
+ </div>
32
+ </section>
33
+ </div>
34
+ </template>
35
+
36
+ <script setup lang="ts">
37
+ import {
38
+ ref,
39
+ onMounted
40
+ } from 'vue';
41
+ import {
42
+ useVendureQuery
43
+ } from '../../composables/useVendureQuery';
44
+ import getCustomerShipmentsQuery from '#graphql/app/commerce/queries/getCustomerShipments.gql';
45
+
46
+ const shipments = ref([]);
47
+ const {
48
+ data,
49
+ refetch
50
+ } = useVendureQuery(getCustomerShipmentsQuery);
51
+
52
+ onMounted(() => {
53
+ if (data.value?.activeCustomer?.shipments?.items) {
54
+ shipments.value = data.value.activeCustomer.shipments.items;
55
+ }
56
+ });
57
+
58
+ useHead({
59
+ title: 'Shipments',
60
+ })
61
+
62
+ definePageMeta({
63
+ //middleware: ['auth-logged-in'],
64
+ })
65
+ </script>
@@ -0,0 +1,109 @@
1
+ <template>
2
+ <div>
3
+ <section data-bs-version="5.1" class="info1 cid-v5A0K07pfT" id="info1-bd" data-sortbtn="btn-primary">
4
+ <div class="mbr-overlay" style="opacity: 0.5; background-color: rgb(68, 121, 217);"></div>
5
+ <div class="align-center container">
6
+ <div class="row justify-content-center">
7
+ <div class="col-12 col-lg-8">
8
+ <h3 class="mbr-section-title mb-4 mbr-fonts-style display-1">
9
+ <strong> {{ transactionPage?.name }}</strong>
10
+ </h3>
11
+ <p class="mbr-section-title mb-4 mbr-fonts-style display-7" v-dompurify-html="transactionPage?.content"></p>
12
+ </div>
13
+ </div>
14
+ </div>
15
+ </section>
16
+
17
+ <v-card variant="text">
18
+ <v-toolbar
19
+ :style="`background-color: ${transactionBar?.color}; color: ${transactionBar?.colortext} !important`">
20
+ <v-toolbar-title>{{ transactionBar?.name }}</v-toolbar-title>
21
+
22
+
23
+ <v-tabs v-model="tab" align-tabs="center">
24
+ <div v-for="(menu, index) in transactionBar?.menus" :key="index">
25
+ <v-tab :value="menu?.value">
26
+ <v-btn variant="text"
27
+ :style="`color: ${transactionBar?.colortext} !important`">{{ menu?.name }}</v-btn>
28
+ </v-tab>
29
+ </div>
30
+ </v-tabs>
31
+ </v-toolbar>
32
+ </v-card>
33
+
34
+ <v-tabs-window v-model="tab">
35
+ <!--Transactions-->
36
+ <v-tabs-window-item :value="transactionBar?.menus?.[0]?.value">
37
+ <v-row class="media-container-row">
38
+ <template v-if="transactions?.length">
39
+ <v-col class="wrap col-sm-12 col-lg-4 feedPost" v-for="transaction in transactions" :key="transaction.id">
40
+ <postCard :post="transaction" />
41
+ </v-col>
42
+ </template>
43
+ <div class="center-text" v-else>No Transactions Available</div>
44
+ </v-row>
45
+ </v-tabs-window-item>
46
+ </v-tabs-window>
47
+ </div>
48
+ </template>
49
+
50
+ <script setup>
51
+ import {
52
+ ref,
53
+ computed
54
+ } from 'vue'
55
+ import postCard from '~/components/related/post.vue'
56
+ import {
57
+ useUserStore
58
+ } from '#auth/app/stores/user'
59
+
60
+ const user = useSupabaseUser()
61
+
62
+ const {
63
+ $directus,
64
+ $readItem,
65
+ $readItems
66
+ } = useNuxtApp()
67
+ const tab = ref(null);
68
+
69
+ const {
70
+ data: transactionBar
71
+ } = await useAsyncData('transactionBar', async () => {
72
+ const resp = await $directus.request($readItem('navigation', '118', {
73
+ fields: ['*', {
74
+ '*': ['*']
75
+ }]
76
+ }))
77
+ return resp?.data ?? resp ?? null
78
+ })
79
+
80
+ const {
81
+ data: transactionPage
82
+ } = await useAsyncData('transactionPage', () => {
83
+ return $directus.request($readItem('pages', '86', {
84
+ fields: ['*', {
85
+ '*': ['*']
86
+ }]
87
+ }))
88
+ })
89
+
90
+ const {
91
+ data: transactions
92
+ } = await useAsyncData('transactions', async () => {
93
+ const resp = await $directus.request($readItems('transactions', {
94
+ fields: ['*', {
95
+ '*': ['*']
96
+ }],
97
+ filter: {
98
+ user_id: {
99
+ _eq: user?.id
100
+ }
101
+ }
102
+ }))
103
+ return resp?.data ?? resp ?? []
104
+ })
105
+
106
+ useHead({
107
+ title: 'Transactions',
108
+ })
109
+ </script>
@@ -0,0 +1,54 @@
1
+ <template>
2
+ <v-row justify="center">
3
+ <v-dialog v-model="dialog" :scrim="false" transition="dialog-bottom-transition">
4
+ <template v-slot:activator="{ props }">
5
+ <v-btn v-bind="props" class="rightAddBtn">
6
+ <v-icon start icon="fas:fa fa-plus"></v-icon>Create a Shop
7
+ </v-btn>
8
+ </template>
9
+ <v-card class="b-1">
10
+ <v-card-title>
11
+ <h3>Create New Shop</h3>
12
+ </v-card-title>
13
+
14
+ <v-card-text>
15
+ <div v-if="formError" class="error">{{ formError }}</div>
16
+ <div v-else-if="formSuccess" class="success">{{ formSuccess }}</div>
17
+ <form @submit.prevent="submitForm">
18
+ <DirectusFormElement v-for="field in shopFields" :key="field.field" :field="field" v-model="form[field.field]" />
19
+ <v-btn type="submit">Submit</v-btn>
20
+ </form>
21
+ </v-card-text>
22
+ </v-card>
23
+ </v-dialog>
24
+ </v-row>
25
+
26
+ </template>
27
+
28
+ <script setup>
29
+ import { ref } from 'vue'
30
+ import DirectusFormElement from '#shared/app/components/ui/forms/DirectusFormElement.vue'
31
+ import { useDirectusForm } from '#shared/app/composables/globals/useDirectusForm'
32
+
33
+ const dialog = ref(false)
34
+ const { $directus, $readFieldsByCollection } = useNuxtApp()
35
+
36
+ const { data, error } = await useAsyncData('shops', async () => {
37
+ return $directus.request($readFieldsByCollection('shops'))
38
+ })
39
+
40
+ // guard against undefined/null data.value and empty arrays
41
+ if (error.value || data.value == null || (data.value?.length ?? 0) === 0) {
42
+ console.error(error)
43
+ throw createError({
44
+ statusCode: 404,
45
+ statusMessage: 'Shop not found'
46
+ })
47
+ }
48
+
49
+ const shopFields = data
50
+
51
+
52
+ // use composable for form handling (validation, submit, provide context)
53
+ const { form, formError, formSuccess, submitForm } = useDirectusForm('shops', shopFields, { clearOnSuccess: true, closeDialogRef: dialog })
54
+ </script>