flowrix 1.0.1-beta.9 → 1.0.1-beta.91

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 (231) hide show
  1. package/dist/module.d.mts +1 -6
  2. package/dist/module.json +1 -1
  3. package/dist/module.mjs +103 -34
  4. package/dist/runtime/composables/Blog/useBlogIndex.d.ts +2 -5
  5. package/dist/runtime/composables/Brand/brand.js +2 -0
  6. package/dist/runtime/composables/Cart/useCart.d.ts +40 -0
  7. package/dist/runtime/composables/Cart/useCart.js +10 -0
  8. package/dist/runtime/composables/Cart/useCartDetail.d.ts +15 -5
  9. package/dist/runtime/composables/Cart/useCartDetail.js +3 -0
  10. package/dist/runtime/composables/Checkout/PaymentMethods/useFlowrixpay.d.ts +40 -1
  11. package/dist/runtime/composables/Checkout/PaymentMethods/useFlowrixpay.js +2 -2
  12. package/dist/runtime/composables/Checkout/PaymentMethods/useOpayo.d.ts +40 -1
  13. package/dist/runtime/composables/Checkout/PaymentMethods/useOpayo.js +2 -2
  14. package/dist/runtime/composables/Checkout/PaymentMethods/usePaymentMethods.js +3 -14
  15. package/dist/runtime/composables/Checkout/PaymentMethods/useStripe.d.ts +2 -2
  16. package/dist/runtime/composables/Checkout/useCheckout.d.ts +84 -73
  17. package/dist/runtime/composables/Checkout/useCheckout.js +81 -34
  18. package/dist/runtime/composables/Checkout/useCheckoutBillingAddress.d.ts +43 -0
  19. package/dist/runtime/composables/Checkout/useCheckoutBillingAddress.js +84 -0
  20. package/dist/runtime/composables/Checkout/useCheckoutShippingAddress.d.ts +55 -0
  21. package/dist/runtime/composables/Checkout/useCheckoutShippingAddress.js +196 -0
  22. package/dist/runtime/composables/Checkout/useCreateAccount.d.ts +7 -7
  23. package/dist/runtime/composables/Checkout/useCreateAccount.js +3 -1
  24. package/dist/runtime/composables/Checkout/useDeliveryMethod.d.ts +2 -2
  25. package/dist/runtime/composables/Checkout/useDeliveryMethod.js +8 -7
  26. package/dist/runtime/composables/Customer/useBillingAddress.d.ts +112 -0
  27. package/dist/runtime/composables/Customer/useBillingAddress.js +93 -0
  28. package/dist/runtime/composables/Customer/useLogin.d.ts +9 -0
  29. package/dist/runtime/composables/Customer/useLogin.js +34 -0
  30. package/dist/runtime/composables/Customer/useOrders.d.ts +29 -0
  31. package/dist/runtime/composables/Customer/useOrders.js +56 -0
  32. package/dist/runtime/composables/Customer/usePasswordReset.d.ts +26 -0
  33. package/dist/runtime/composables/Customer/usePasswordReset.js +258 -0
  34. package/dist/runtime/composables/Customer/useProfile.d.ts +75 -0
  35. package/dist/runtime/composables/Customer/useProfile.js +106 -0
  36. package/dist/runtime/composables/Customer/useQuotations.d.ts +32 -0
  37. package/dist/runtime/composables/Customer/useQuotations.js +40 -0
  38. package/dist/runtime/composables/Customer/useRegister.d.ts +120 -11
  39. package/dist/runtime/composables/Customer/useRegister.js +311 -34
  40. package/dist/runtime/composables/Customer/useShippingAddress.d.ts +121 -0
  41. package/dist/runtime/composables/Customer/useShippingAddress.js +145 -0
  42. package/dist/runtime/composables/Customer/useUpdatePassword.d.ts +21 -0
  43. package/dist/runtime/composables/Customer/useUpdatePassword.js +94 -0
  44. package/dist/runtime/composables/Customer/useUserCards.d.ts +22 -0
  45. package/dist/runtime/composables/Customer/useUserCards.js +65 -0
  46. package/dist/runtime/composables/{useWishlists.d.ts → Customer/useWishlists.d.ts} +6 -19
  47. package/dist/runtime/composables/{useWishlists.js → Customer/useWishlists.js} +21 -29
  48. package/dist/runtime/composables/Extras/useCountry.d.ts +11 -6
  49. package/dist/runtime/composables/Extras/useCountry.js +5 -4
  50. package/dist/runtime/composables/Header/useHeader.d.ts +6 -20
  51. package/dist/runtime/composables/Header/useHeader.js +3 -2
  52. package/dist/runtime/composables/Product/CustomProduct/useSteps.d.ts +1 -1
  53. package/dist/runtime/composables/Product/useProductComponent.js +2 -0
  54. package/dist/runtime/composables/Product/useProductSlug.d.ts +8 -1
  55. package/dist/runtime/composables/Product/useQuickView.d.ts +8 -0
  56. package/dist/runtime/composables/Product/useQuickView.js +27 -0
  57. package/dist/runtime/composables/Product/useService.d.ts +1 -1
  58. package/dist/runtime/composables/Product/useService.js +0 -3
  59. package/dist/runtime/composables/SideBar/Filters/useFilters.d.ts +2 -2
  60. package/dist/runtime/composables/SideBar/Filters/useSorting.d.ts +2 -2
  61. package/dist/runtime/composables/index.d.ts +16 -12
  62. package/dist/runtime/composables/index.js +16 -12
  63. package/dist/runtime/composables/useAddresses.js +6 -6
  64. package/dist/runtime/composables/useCards.js +2 -2
  65. package/dist/runtime/composables/useDataLayer.js +2 -1
  66. package/dist/runtime/composables/useLocation.d.ts +2 -12
  67. package/dist/runtime/composables/useQuotationCheckout.d.ts +78 -0
  68. package/dist/runtime/composables/useQuotationCheckout.js +138 -0
  69. package/dist/runtime/middleware/flowrix.d.ts +5 -4
  70. package/dist/runtime/middleware/flowrix.js +41 -21
  71. package/dist/runtime/pages/flowrix-default.d.vue.ts +3 -0
  72. package/dist/runtime/pages/flowrix-default.vue +34 -0
  73. package/dist/runtime/pages/flowrix-default.vue.d.ts +3 -0
  74. package/dist/runtime/plugin.d.ts +1 -1
  75. package/dist/runtime/server/api/albums.d.ts +1 -0
  76. package/dist/runtime/server/api/albums.js +38 -12
  77. package/dist/runtime/server/api/auth/forgot.js +1 -1
  78. package/dist/runtime/server/api/auth/login.js +5 -6
  79. package/dist/runtime/server/api/auth/logout.js +1 -1
  80. package/dist/runtime/server/api/auth/register.js +1 -1
  81. package/dist/runtime/server/api/auth/session.get.js +1 -1
  82. package/dist/runtime/server/api/auth/user/reset-password.js +1 -1
  83. package/dist/runtime/server/api/auth/user/session.js +1 -1
  84. package/dist/runtime/server/api/auth/user/verify-token.js +1 -1
  85. package/dist/runtime/server/api/banners.js +15 -12
  86. package/dist/runtime/server/api/brand/[...slug].js +55 -0
  87. package/dist/runtime/server/api/brand/index.d.ts +3 -0
  88. package/dist/runtime/server/api/brand/index.js +49 -0
  89. package/dist/runtime/server/api/cache/[...slug].delete.d.ts +2 -0
  90. package/dist/runtime/server/api/cache/[...slug].delete.js +40 -0
  91. package/dist/runtime/server/api/cache/clean.get.d.ts +5 -0
  92. package/dist/runtime/server/api/cache/clean.get.js +16 -0
  93. package/dist/runtime/server/api/cart/[slug]/add.d.ts +1 -1
  94. package/dist/runtime/server/api/cart/[slug]/add.js +11 -11
  95. package/dist/runtime/server/api/cart/[slug]/update.d.ts +1 -1
  96. package/dist/runtime/server/api/cart/[slug]/update.js +11 -11
  97. package/dist/runtime/server/api/{blog/blog.d.ts → cart/related.d.ts} +0 -1
  98. package/dist/runtime/server/api/cart/related.js +21 -0
  99. package/dist/runtime/server/api/cart/remove.js +1 -1
  100. package/dist/runtime/server/api/cart/service/[slug]/add.d.ts +1 -1
  101. package/dist/runtime/server/api/cart/service/[slug]/add.js +12 -12
  102. package/dist/runtime/server/api/catalog/brands.d.ts +3 -0
  103. package/dist/runtime/server/api/catalog/brands.js +49 -0
  104. package/dist/runtime/server/api/catalog/categories.js +22 -16
  105. package/dist/runtime/server/api/catalog/categoriesall.d.ts +3 -0
  106. package/dist/runtime/server/api/catalog/categoriesall.js +49 -0
  107. package/dist/runtime/server/api/catalog/featured.js +22 -14
  108. package/dist/runtime/server/api/catalog/posts.d.ts +3 -0
  109. package/dist/runtime/server/api/catalog/posts.js +49 -0
  110. package/dist/runtime/server/api/catalog/samples.js +22 -16
  111. package/dist/runtime/server/api/catalog/search.js +21 -15
  112. package/dist/runtime/server/api/category/[...slug].js +22 -16
  113. package/dist/runtime/server/api/checkout/applyCoupon.d.ts +1 -1
  114. package/dist/runtime/server/api/checkout/applyCoupon.js +13 -13
  115. package/dist/runtime/server/api/checkout/configs.d.ts +1 -1
  116. package/dist/runtime/server/api/checkout/configs.js +11 -11
  117. package/dist/runtime/server/api/checkout/countries.d.ts +1 -1
  118. package/dist/runtime/server/api/checkout/countries.js +5 -9
  119. package/dist/runtime/server/api/checkout/paymentmethod.d.ts +1 -1
  120. package/dist/runtime/server/api/checkout/paymentmethod.js +16 -11
  121. package/dist/runtime/server/api/checkout/quotation/[slug].d.ts +2 -0
  122. package/dist/runtime/server/api/checkout/quotation/[slug].js +21 -0
  123. package/dist/runtime/server/api/checkout/quotation/guest/[slug].d.ts +2 -0
  124. package/dist/runtime/server/api/checkout/quotation/guest/[slug].js +37 -0
  125. package/dist/runtime/server/api/checkout/quotation/guest/customer.d.ts +2 -0
  126. package/dist/runtime/server/api/checkout/quotation/guest/customer.js +21 -0
  127. package/dist/runtime/server/api/checkout/quotation/submit/[slug].d.ts +2 -0
  128. package/dist/runtime/server/api/checkout/quotation/submit/[slug].js +23 -0
  129. package/dist/runtime/server/api/{blog/[slug].js → cmspost/[...slug].js} +19 -18
  130. package/dist/runtime/server/api/cmspost/all.d.ts +3 -0
  131. package/dist/runtime/server/api/cmspost/all.js +49 -0
  132. package/dist/runtime/server/api/company/profile.d.ts +1 -1
  133. package/dist/runtime/server/api/company/profile.js +9 -9
  134. package/dist/runtime/server/api/contact-center/webforms/[id]/details.d.ts +1 -1
  135. package/dist/runtime/server/api/contact-center/webforms/[id]/details.js +48 -15
  136. package/dist/runtime/server/api/contact-center/webforms/create.d.ts +1 -1
  137. package/dist/runtime/server/api/contact-center/webforms/create.js +10 -10
  138. package/dist/runtime/server/api/countries.d.ts +2 -0
  139. package/dist/runtime/server/api/countries.js +42 -0
  140. package/dist/runtime/server/api/customer/address/add.js +1 -1
  141. package/dist/runtime/server/api/customer/address/delete.js +2 -2
  142. package/dist/runtime/server/api/customer/address/setshipping.js +1 -1
  143. package/dist/runtime/server/api/customer/address/update.js +1 -1
  144. package/dist/runtime/server/api/customer/cards/delete.js +2 -2
  145. package/dist/runtime/server/api/customer/cards/get.js +2 -2
  146. package/dist/runtime/server/api/customer/change-password.js +2 -2
  147. package/dist/runtime/server/api/customer/checkout.js +1 -1
  148. package/dist/runtime/server/api/customer/orders.js +2 -2
  149. package/dist/runtime/server/api/customer/profile/update.js +1 -1
  150. package/dist/runtime/server/api/customer/quotations.js +2 -2
  151. package/dist/runtime/server/api/customer/search.js +1 -1
  152. package/dist/runtime/server/api/customer/tax-invoice.js +1 -1
  153. package/dist/runtime/server/api/customer/wishlist/add.js +1 -1
  154. package/dist/runtime/server/api/customer/wishlist/createWishList.js +1 -1
  155. package/dist/runtime/server/api/customer/wishlist/deleteFromWishList.js +1 -1
  156. package/dist/runtime/server/api/customer/wishlist/deleteWishList.js +1 -1
  157. package/dist/runtime/server/api/customer/wishlist/get.js +2 -2
  158. package/dist/runtime/server/api/customer/wishlist/getWishListItems.js +1 -1
  159. package/dist/runtime/server/api/customer/wishlist/updateWishList.js +2 -2
  160. package/dist/runtime/server/api/featured.d.ts +3 -0
  161. package/dist/runtime/server/api/featured.js +49 -0
  162. package/dist/runtime/server/api/generate/robots.get.d.ts +2 -0
  163. package/dist/runtime/server/api/generate/robots.get.js +20 -0
  164. package/dist/runtime/server/api/generate/sitemap.get.d.ts +2 -0
  165. package/dist/runtime/server/api/generate/sitemap.get.js +32 -0
  166. package/dist/runtime/server/api/location.d.ts +1 -1
  167. package/dist/runtime/server/api/location.js +20 -12
  168. package/dist/runtime/server/api/nav/[id]/links.d.ts +1 -0
  169. package/dist/runtime/server/api/nav/[id]/links.js +48 -14
  170. package/dist/runtime/server/api/page/{[slug].js → [...slug].js} +18 -17
  171. package/dist/runtime/server/api/product/[...slug].js +23 -9
  172. package/dist/runtime/server/api/{v2/[...slug].d.ts → quickview/[slug].d.ts} +0 -1
  173. package/dist/runtime/server/api/quickview/[slug].js +17 -0
  174. package/dist/runtime/server/api/reviews.d.ts +2 -0
  175. package/dist/runtime/server/api/reviews.js +18 -0
  176. package/dist/runtime/server/api/samples.d.ts +3 -0
  177. package/dist/runtime/server/api/samples.js +50 -0
  178. package/dist/runtime/server/api/search.d.ts +3 -0
  179. package/dist/runtime/server/api/search.js +50 -0
  180. package/dist/runtime/server/api/service/[slug].js +17 -13
  181. package/dist/runtime/server/api/service/availability.d.ts +1 -1
  182. package/dist/runtime/server/api/service/availability.js +11 -13
  183. package/dist/runtime/server/api/service/getall.d.ts +3 -0
  184. package/dist/runtime/server/api/service/getall.js +55 -0
  185. package/dist/runtime/server/api/shop.d.ts +3 -0
  186. package/dist/runtime/server/api/shop.js +50 -0
  187. package/dist/runtime/server/api/subscribe.d.ts +1 -1
  188. package/dist/runtime/server/api/subscribe.js +19 -14
  189. package/dist/runtime/server/api/v2/[...slug].get.d.ts +2 -0
  190. package/dist/runtime/server/api/v2/[...slug].get.js +16 -0
  191. package/dist/runtime/server/api/webform.d.ts +3 -0
  192. package/dist/runtime/server/api/webform.js +52 -0
  193. package/dist/runtime/server/tsconfig.json +3 -3
  194. package/dist/runtime/stores/Cart.d.ts +12 -0
  195. package/dist/runtime/stores/Cart.js +56 -19
  196. package/dist/runtime/stores/Checkout.d.ts +9 -15
  197. package/dist/runtime/stores/Checkout.js +19 -24
  198. package/dist/runtime/stores/Search.d.ts +1 -1
  199. package/dist/runtime/stores/Services.js +2 -2
  200. package/dist/runtime/stores/auth.d.ts +8 -11
  201. package/dist/runtime/stores/auth.js +390 -8
  202. package/dist/runtime/stores/countries.d.ts +1 -3
  203. package/dist/runtime/stores/countries.js +4 -8
  204. package/dist/runtime/stores/product/slug.d.ts +1 -17
  205. package/dist/runtime/stores/wishlists.d.ts +114 -6
  206. package/dist/runtime/stores/wishlists.js +209 -9
  207. package/dist/runtime/utils/api.js +9 -13
  208. package/dist/runtime/utils/htmlCache.d.ts +2 -2
  209. package/dist/runtime/utils/htmlCache.js +23 -13
  210. package/dist/types.d.mts +6 -2
  211. package/package.json +30 -20
  212. package/dist/runtime/composables/Checkout/useBillingAddress.d.ts +0 -19
  213. package/dist/runtime/composables/Checkout/useBillingAddress.js +0 -82
  214. package/dist/runtime/composables/Checkout/useShippingAddress.d.ts +0 -9
  215. package/dist/runtime/composables/Checkout/useShippingAddress.js +0 -121
  216. package/dist/runtime/composables/useAuth.d.ts +0 -45
  217. package/dist/runtime/composables/useAuth.js +0 -180
  218. package/dist/runtime/composables/useCountries.d.ts +0 -12
  219. package/dist/runtime/composables/useCountries.js +0 -50
  220. package/dist/runtime/composables/useOrders.d.ts +0 -21
  221. package/dist/runtime/composables/useOrders.js +0 -82
  222. package/dist/runtime/composables/useQuotations.d.ts +0 -14
  223. package/dist/runtime/composables/useQuotations.js +0 -50
  224. package/dist/runtime/plugins/fullReload.client.d.ts +0 -2
  225. package/dist/runtime/plugins/fullReload.client.js +0 -10
  226. package/dist/runtime/server/api/blog/blog.js +0 -17
  227. package/dist/runtime/server/api/brand/[slug].js +0 -58
  228. package/dist/runtime/server/api/v2/[...slug].js +0 -9
  229. /package/dist/runtime/server/api/brand/{[slug].d.ts → [...slug].d.ts} +0 -0
  230. /package/dist/runtime/server/api/{blog/[slug].d.ts → cmspost/[...slug].d.ts} +0 -0
  231. /package/dist/runtime/server/api/page/{[slug].d.ts → [...slug].d.ts} +0 -0
@@ -1,48 +1,325 @@
1
- import { ref } from "vue";
2
- export default function() {
1
+ import { ref, watch } from "vue";
2
+ import { useRouter, useRoute } from "#vue-router";
3
+ import { useAuthStore } from "../../stores/auth.js";
4
+ import useLogin from "./useLogin.js";
5
+ export default function(countries) {
3
6
  const router = useRouter();
4
7
  const route = useRoute();
5
- const { signUp } = useAuth();
6
- const form_error = ref("");
7
- const inputData = ref({ passwordStrengthValue: 0 });
8
- const { showPassword, togglePassword } = useTogglePassword();
9
- const {
10
- passwordStrength,
11
- passwordStrengthClass,
12
- passwordStrengthTextColor,
13
- passwordStrengthWidth
14
- } = usePasswordFormatter(inputData.value.password, inputData.value);
15
- const { inputValue: mobile, errorMessage, handleInput } = useNumberOnly();
16
- const signupFunction = async () => {
17
- if (!inputData.value.firstname || !inputData.value.lastname || !inputData.value.email || !inputData.value.password || !inputData.value.password_confirmation) {
18
- console.error("All fields are required");
19
- form_error.value = "All fields are required";
8
+ const { CustomerLogin, logResponse } = useLogin();
9
+ const inputData = ref({
10
+ abn: "",
11
+ addresses: [],
12
+ address: "",
13
+ postCode: "",
14
+ suburb: "",
15
+ billing_address: "",
16
+ businessAddress: "",
17
+ billing_country: "",
18
+ billing_firstname: "",
19
+ billing_lastname: "",
20
+ billing_mobile: "",
21
+ billing_postcode: "",
22
+ billing_state: "",
23
+ billing_suburb: "",
24
+ company_name: "",
25
+ email: "",
26
+ email_confirmation: "",
27
+ firstname: "",
28
+ lastname: "",
29
+ mobile: "",
30
+ newsletterSignup: false,
31
+ password: "",
32
+ password_confirmation: "",
33
+ recaptcha: "",
34
+ shipping_address: "",
35
+ shipping_country: "",
36
+ shipping_postcode: "",
37
+ shipping_state: "",
38
+ shipping_suburb: "",
39
+ shipping_town: "",
40
+ shipping_mobile: "",
41
+ subscribe: false
42
+ });
43
+ const regResponse = ref(null);
44
+ const CustomerRegister = (async (registerFields) => {
45
+ regResponse.value = await useAuthStore().signUp(registerFields);
46
+ });
47
+ const isBusinessAccount = ref(false);
48
+ const companyName = ref("");
49
+ const abn = ref("");
50
+ const address = ref("");
51
+ const sameAsCustomerDetails = ref(true);
52
+ const showPassword = ref(false);
53
+ const showConfirmPassword = ref(false);
54
+ const isLoading = ref(false);
55
+ const alertMessage = ref("");
56
+ const alertType = ref("danger");
57
+ const showAlert = ref(false);
58
+ const getStates = (countryId) => {
59
+ const activeCountry = countries.data.find((country) => country.id == countryId);
60
+ return activeCountry ? activeCountry.states : [];
61
+ };
62
+ const validateEmail = (email) => {
63
+ return /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(email);
64
+ };
65
+ const validateForm = () => {
66
+ if (!inputData.value.firstname.trim()) return "First Name is required";
67
+ if (!inputData.value.lastname.trim()) return "Last Name is required";
68
+ if (!inputData.value.address.trim()) return "Address is required";
69
+ if (!String(inputData.value.billing_country).trim()) return "Country is required";
70
+ if (!String(inputData.value.billing_state).trim()) return "State is required";
71
+ if (!inputData.value.billing_postcode.trim()) return "Post Code is required";
72
+ if (!inputData.value.billing_suburb.trim()) return "Suburb is required";
73
+ if (!validateEmail(inputData.value.email)) return "Please enter a valid email address";
74
+ if (inputData.value.email !== inputData.value.email_confirmation) return "Email addresses do not match";
75
+ if (inputData.value.password.length < 6) return "Password must be at least 6 characters";
76
+ if (inputData.value.password !== inputData.value.password_confirmation) return "Passwords do not match";
77
+ if (!inputData.value.mobile.trim()) return "Mobile Number is required";
78
+ if (isBusinessAccount.value) {
79
+ if (!companyName.value.trim()) return "Company Name is required";
80
+ if (!abn.value.trim()) return "ABN is required";
81
+ if (!address.value.trim()) return "Business Address is required";
82
+ }
83
+ if (!sameAsCustomerDetails.value) {
84
+ if (!inputData.value.shipping_address.trim()) return "Shipping Address is required";
85
+ if (!String(inputData.value.shipping_country).trim()) return "Shipping country is required.";
86
+ if (!inputData.value.shipping_town.trim()) return "Shipping Town is required";
87
+ if (!String(inputData.value.shipping_state).trim()) return "Shipping State is required";
88
+ if (!inputData.value.shipping_postcode.trim()) return "Shipping Post Code is required";
89
+ if (!inputData.value.shipping_mobile.trim()) return "Shipping Mobile is required";
90
+ }
91
+ return true;
92
+ };
93
+ const togglePassword = () => {
94
+ showPassword.value = !showPassword.value;
95
+ };
96
+ const toggleConfirmPassword = () => {
97
+ showConfirmPassword.value = !showConfirmPassword.value;
98
+ };
99
+ const handleSameAsCustomerDetails = () => {
100
+ if (sameAsCustomerDetails.value) {
101
+ const billingAddr = isBusinessAccount.value ? address.value : inputData.value.address;
102
+ const billingSuburb = inputData.value.billing_suburb;
103
+ const billingPostcode = inputData.value.billing_postcode;
104
+ const billingMobile = inputData.value.mobile;
105
+ inputData.value.shipping_address = billingAddr;
106
+ inputData.value.shipping_country = inputData.value.billing_country;
107
+ inputData.value.shipping_state = inputData.value.billing_state;
108
+ inputData.value.shipping_town = billingSuburb;
109
+ inputData.value.shipping_suburb = billingSuburb;
110
+ inputData.value.shipping_postcode = billingPostcode;
111
+ inputData.value.shipping_mobile = billingMobile;
112
+ } else {
113
+ inputData.value.shipping_address = "";
114
+ inputData.value.shipping_town = "";
115
+ inputData.value.shipping_suburb = "";
116
+ inputData.value.shipping_postcode = "";
117
+ inputData.value.shipping_mobile = "";
118
+ }
119
+ };
120
+ const initializeShippingData = () => {
121
+ if (sameAsCustomerDetails.value) {
122
+ handleSameAsCustomerDetails();
123
+ }
124
+ };
125
+ const dismissAlert = () => {
126
+ showAlert.value = false;
127
+ alertMessage.value = "";
128
+ };
129
+ const displayAlert = (message, type) => {
130
+ alertMessage.value = message;
131
+ alertType.value = type;
132
+ showAlert.value = true;
133
+ if (type === "success") {
134
+ setTimeout(() => {
135
+ dismissAlert();
136
+ }, 5e3);
137
+ }
138
+ };
139
+ watch(() => inputData.value.billing_postcode, (newPostcode) => {
140
+ if (sameAsCustomerDetails.value && newPostcode) {
141
+ inputData.value.shipping_postcode = newPostcode;
142
+ }
143
+ });
144
+ watch(() => inputData.value.billing_suburb, (newSuburb) => {
145
+ if (sameAsCustomerDetails.value && newSuburb) {
146
+ inputData.value.shipping_suburb = newSuburb;
147
+ inputData.value.shipping_town = newSuburb;
148
+ }
149
+ });
150
+ watch(() => inputData.value.address, (newAddress) => {
151
+ if (sameAsCustomerDetails.value && newAddress) {
152
+ inputData.value.shipping_address = newAddress;
153
+ }
154
+ });
155
+ watch(() => inputData.value.mobile, (newMobile) => {
156
+ if (sameAsCustomerDetails.value && newMobile) {
157
+ inputData.value.shipping_mobile = newMobile;
158
+ }
159
+ });
160
+ watch(() => inputData.value.billing_country, (newCountry) => {
161
+ if (sameAsCustomerDetails.value && newCountry) {
162
+ inputData.value.shipping_country = newCountry;
163
+ }
164
+ });
165
+ watch(() => inputData.value.billing_state, (newState) => {
166
+ if (sameAsCustomerDetails.value && newState) {
167
+ inputData.value.shipping_state = newState;
168
+ }
169
+ });
170
+ watch(isBusinessAccount, (newValue) => {
171
+ if (sameAsCustomerDetails.value) {
172
+ handleSameAsCustomerDetails();
173
+ }
174
+ });
175
+ watch(logResponse, (newres) => {
176
+ if (newres?.status == "Success") {
177
+ router.push({ name: "dashboard-profile" });
178
+ }
179
+ });
180
+ const handleSignup = async () => {
181
+ isLoading.value = true;
182
+ inputData.value.billing_mobile = inputData.value.mobile;
183
+ inputData.value.billing_address = inputData.value.address;
184
+ inputData.value.billing_firstname = inputData.value.firstname;
185
+ inputData.value.billing_lastname = inputData.value.lastname;
186
+ inputData.value.suburb = inputData.value.billing_suburb;
187
+ inputData.value.postCode = inputData.value.billing_postcode;
188
+ const validationError = validateForm();
189
+ if (validationError !== true) {
190
+ displayAlert(validationError, "danger");
191
+ isLoading.value = false;
20
192
  return;
21
193
  }
22
194
  try {
23
- inputData.value.email_confirmation = inputData.value.email;
24
- await signUp(inputData.value, { callbackUrl: "/customer/account", redirect: true });
25
- } catch (error) {
26
- console.error("Signup Error:", error);
27
- let errorMessage2 = "An unexpected error occurred.";
28
- if (error.data?.message) {
29
- errorMessage2 = error.data.message;
30
- } else if (error.message) {
31
- errorMessage2 = error.message;
195
+ if (isBusinessAccount.value) {
196
+ inputData.value.company_name = companyName.value;
197
+ inputData.value.abn = abn.value;
198
+ inputData.value.businessAddress = address.value;
199
+ if (address.value) {
200
+ inputData.value.billing_address = address.value;
201
+ }
202
+ }
203
+ if (sameAsCustomerDetails.value) {
204
+ handleSameAsCustomerDetails();
205
+ } else {
206
+ if (inputData.value.shipping_town && !inputData.value.shipping_suburb) {
207
+ inputData.value.shipping_suburb = inputData.value.shipping_town;
208
+ }
209
+ if (inputData.value.shipping_suburb && !inputData.value.shipping_town) {
210
+ inputData.value.shipping_town = inputData.value.shipping_suburb;
211
+ }
212
+ }
213
+ await CustomerRegister(inputData.value);
214
+ if (!regResponse.value || regResponse.value.status !== "Success") {
215
+ let errorMsg = "Registration failed. Please try again.";
216
+ if (regResponse.value?.message) {
217
+ if (typeof regResponse.value.message === "string") {
218
+ errorMsg = regResponse.value.message;
219
+ } else if (typeof regResponse.value.message === "object") {
220
+ const fieldErrors = Object.entries(regResponse.value.message).flatMap(([field, errors]) => (errors || []).map((err) => `${field.charAt(0).toUpperCase() + field.slice(1)}: ${err}`));
221
+ errorMsg = fieldErrors.length > 0 ? fieldErrors.join("\n") : errorMsg;
222
+ }
223
+ } else if (!regResponse.value) {
224
+ errorMsg = "No response received from server. Please try again.";
225
+ }
226
+ displayAlert(errorMsg, "danger");
227
+ isLoading.value = false;
228
+ return;
32
229
  }
33
- form_error.value = errorMessage2;
230
+ const loginCredentials = {
231
+ email: inputData.value.email,
232
+ password: inputData.value.password
233
+ };
234
+ logResponse.value = await useAuthStore().userLogin(loginCredentials);
235
+ if (!logResponse.value || logResponse.value.status !== "Success") {
236
+ const errorMsg = !logResponse.value ? "No login response received." : typeof logResponse.value.message === "string" ? logResponse.value.message : "Login failed after registration. Please try logging in manually.";
237
+ displayAlert(errorMsg, "danger");
238
+ isLoading.value = false;
239
+ return;
240
+ }
241
+ const successMsg = typeof regResponse.value.message === "string" ? regResponse.value.message : "Registration successful! Welcome aboard.";
242
+ displayAlert(successMsg, "success");
243
+ resetForm();
244
+ setTimeout(() => {
245
+ router.push("/dashboard/profile");
246
+ }, 1e3);
247
+ } catch (error) {
248
+ console.error("Registration Error:", error);
249
+ const errorMsg = error.message || "An unexpected error occurred. Please try again.";
250
+ displayAlert(errorMsg, "danger");
251
+ } finally {
252
+ isLoading.value = false;
34
253
  }
35
254
  };
255
+ const resetForm = () => {
256
+ inputData.value = {
257
+ abn: "",
258
+ addresses: [],
259
+ address: "",
260
+ postCode: "",
261
+ suburb: "",
262
+ billing_address: "",
263
+ businessAddress: "",
264
+ billing_country: "",
265
+ billing_firstname: "",
266
+ billing_lastname: "",
267
+ billing_mobile: "",
268
+ billing_postcode: "",
269
+ billing_state: "",
270
+ billing_suburb: "",
271
+ company_name: "",
272
+ email: "",
273
+ email_confirmation: "",
274
+ firstname: "",
275
+ lastname: "",
276
+ mobile: "",
277
+ newsletterSignup: false,
278
+ password: "",
279
+ password_confirmation: "",
280
+ recaptcha: "",
281
+ shipping_address: "",
282
+ shipping_country: "",
283
+ shipping_postcode: "",
284
+ shipping_state: "",
285
+ shipping_suburb: "",
286
+ shipping_town: "",
287
+ shipping_mobile: "",
288
+ subscribe: false
289
+ };
290
+ isBusinessAccount.value = false;
291
+ companyName.value = "";
292
+ abn.value = "";
293
+ address.value = "";
294
+ sameAsCustomerDetails.value = true;
295
+ };
36
296
  return {
37
297
  router,
38
298
  route,
39
- form_error,
40
299
  inputData,
41
- passwordStrength,
42
- passwordStrengthClass,
43
- passwordStrengthTextColor,
44
- passwordStrengthWidth,
45
- errorMessage,
46
- signupFunction
300
+ CustomerRegister,
301
+ regResponse,
302
+ isBusinessAccount,
303
+ companyName,
304
+ abn,
305
+ address,
306
+ sameAsCustomerDetails,
307
+ showPassword,
308
+ showConfirmPassword,
309
+ isLoading,
310
+ getStates,
311
+ validateForm,
312
+ togglePassword,
313
+ toggleConfirmPassword,
314
+ handleSameAsCustomerDetails,
315
+ alertMessage,
316
+ alertType,
317
+ showAlert,
318
+ displayAlert,
319
+ dismissAlert,
320
+ handleSignup,
321
+ initializeShippingData,
322
+ // Make sure this is returned
323
+ resetForm
47
324
  };
48
325
  }
@@ -0,0 +1,121 @@
1
+ export interface ShippingAddress {
2
+ id: string | number | null;
3
+ firstname: string;
4
+ lastname: string;
5
+ address: string;
6
+ saddress?: string;
7
+ suburb: string;
8
+ state: string;
9
+ state_id: string | number | null;
10
+ country: string;
11
+ country_id: string | number;
12
+ postcode: string;
13
+ mobile: string;
14
+ shipping: number;
15
+ billing: number;
16
+ }
17
+ export declare function useShippingAddress(): {
18
+ showModal: import("vue").Ref<boolean, boolean>;
19
+ isEditMode: import("vue").Ref<boolean, boolean>;
20
+ showDeleteModal: import("vue").Ref<boolean, boolean>;
21
+ currentAddress: import("vue").Ref<{
22
+ id: string | number | null;
23
+ firstname: string;
24
+ lastname: string;
25
+ address: string;
26
+ saddress?: string | undefined;
27
+ suburb: string;
28
+ state: string;
29
+ state_id: string | number | null;
30
+ country: string;
31
+ country_id: string | number;
32
+ postcode: string;
33
+ mobile: string;
34
+ shipping: number;
35
+ billing: number;
36
+ } | null, ShippingAddress | {
37
+ id: string | number | null;
38
+ firstname: string;
39
+ lastname: string;
40
+ address: string;
41
+ saddress?: string | undefined;
42
+ suburb: string;
43
+ state: string;
44
+ state_id: string | number | null;
45
+ country: string;
46
+ country_id: string | number;
47
+ postcode: string;
48
+ mobile: string;
49
+ shipping: number;
50
+ billing: number;
51
+ } | null>;
52
+ submitAddressReturn: import("vue").Ref<any, any>;
53
+ loading: import("vue").Ref<boolean, boolean>;
54
+ user: import("vue").ComputedRef<{
55
+ id: number;
56
+ fullname: string;
57
+ firstname: string;
58
+ lastname: string;
59
+ email: string;
60
+ avatar: string;
61
+ country_id: number | null;
62
+ country: {
63
+ id: number;
64
+ name: string;
65
+ emoji: string;
66
+ } | null;
67
+ state_id: number | null;
68
+ state: string | null;
69
+ suburb: string | null;
70
+ dob: string | null;
71
+ phone: string | null;
72
+ address: string | null;
73
+ mobile: string | null;
74
+ company: string | null;
75
+ addresses: {
76
+ id: number;
77
+ fullname: string | null;
78
+ firstname: string;
79
+ middlename: string | null;
80
+ lastname: string;
81
+ address: string;
82
+ suburb: string;
83
+ state: string | null;
84
+ state_id: number | null;
85
+ country: string;
86
+ country_id: number;
87
+ postcode: string;
88
+ mobile: string;
89
+ shipping: number;
90
+ billing: number;
91
+ }[];
92
+ created_at: string;
93
+ } | null>;
94
+ shippingAddresses: import("vue").ComputedRef<{
95
+ id: number;
96
+ fullname: string | null;
97
+ firstname: string;
98
+ middlename: string | null;
99
+ lastname: string;
100
+ address: string;
101
+ suburb: string;
102
+ state: string | null;
103
+ state_id: number | null;
104
+ country: string;
105
+ country_id: number;
106
+ postcode: string;
107
+ mobile: string;
108
+ shipping: number;
109
+ billing: number;
110
+ }[]>;
111
+ clearMessages: () => void;
112
+ openAddModal: () => void;
113
+ openEditModal: (address: any) => void;
114
+ closeModal: () => void;
115
+ openDeleteModal: (address: any) => void;
116
+ closeDeleteModal: () => void;
117
+ submitAddress: () => Promise<void>;
118
+ setShipping: (address: any) => Promise<void>;
119
+ deleteAddress: () => Promise<void>;
120
+ autoClearMessages: () => void;
121
+ };
@@ -0,0 +1,145 @@
1
+ import { ref, computed } from "vue";
2
+ import { useAuthStore } from "../../stores/auth.js";
3
+ export function useShippingAddress() {
4
+ const authStore = useAuthStore();
5
+ const user = computed(() => authStore.user);
6
+ const shippingAddresses = computed(() => {
7
+ return user.value?.addresses?.filter((a) => a.billing == 0) ?? [];
8
+ });
9
+ const showModal = ref(false);
10
+ const isEditMode = ref(false);
11
+ const showDeleteModal = ref(false);
12
+ const currentAddress = ref(null);
13
+ const submitAddressReturn = ref(null);
14
+ const loading = ref(false);
15
+ const clearMessages = () => {
16
+ submitAddressReturn.value = null;
17
+ };
18
+ const openAddModal = () => {
19
+ clearMessages();
20
+ isEditMode.value = false;
21
+ currentAddress.value = {
22
+ id: null,
23
+ firstname: "",
24
+ lastname: "",
25
+ address: "",
26
+ suburb: "",
27
+ state: "",
28
+ state_id: null,
29
+ country: "Australia",
30
+ country_id: "",
31
+ postcode: "",
32
+ mobile: "",
33
+ shipping: 1,
34
+ billing: 0
35
+ };
36
+ showModal.value = true;
37
+ };
38
+ const openEditModal = (address) => {
39
+ clearMessages();
40
+ isEditMode.value = true;
41
+ currentAddress.value = {
42
+ ...address,
43
+ saddress: address.address
44
+ };
45
+ showModal.value = true;
46
+ };
47
+ const closeModal = () => {
48
+ clearMessages();
49
+ showModal.value = false;
50
+ currentAddress.value = null;
51
+ };
52
+ const openDeleteModal = (address) => {
53
+ clearMessages();
54
+ currentAddress.value = address;
55
+ showDeleteModal.value = true;
56
+ };
57
+ const closeDeleteModal = () => {
58
+ clearMessages();
59
+ showDeleteModal.value = false;
60
+ currentAddress.value = null;
61
+ };
62
+ const submitAddress = async () => {
63
+ if (!currentAddress.value) return;
64
+ loading.value = true;
65
+ clearMessages();
66
+ try {
67
+ const method = currentAddress.value.id ? "update" : "add";
68
+ submitAddressReturn.value = await authStore.setAddress(currentAddress.value, method);
69
+ if (submitAddressReturn.value.status === "Success") {
70
+ await authStore.fetchProfile();
71
+ if (method === "update") {
72
+ submitAddressReturn.value.message = "Address Updated Successfully";
73
+ } else {
74
+ submitAddressReturn.value.message = "Address Created Successfully";
75
+ }
76
+ showModal.value = false;
77
+ }
78
+ } catch (error) {
79
+ console.error("Address submission error:", error);
80
+ } finally {
81
+ loading.value = false;
82
+ }
83
+ };
84
+ const setShipping = async (address) => {
85
+ loading.value = true;
86
+ clearMessages();
87
+ try {
88
+ submitAddressReturn.value = await authStore.setAddress(address, "setshipping");
89
+ if (submitAddressReturn.value.status === "Success") {
90
+ await authStore.fetchProfile();
91
+ submitAddressReturn.value.message = "Shipping Address Updated Successfully";
92
+ }
93
+ } catch (error) {
94
+ console.error("Set shipping error:", error);
95
+ } finally {
96
+ loading.value = false;
97
+ }
98
+ };
99
+ const deleteAddress = async () => {
100
+ if (!currentAddress.value) return;
101
+ loading.value = true;
102
+ clearMessages();
103
+ try {
104
+ submitAddressReturn.value = await authStore.setAddress(currentAddress.value, "delete");
105
+ if (submitAddressReturn.value.status === "Success") {
106
+ await authStore.fetchProfile();
107
+ showDeleteModal.value = false;
108
+ }
109
+ } catch (error) {
110
+ console.error("Delete address error:", error);
111
+ } finally {
112
+ loading.value = false;
113
+ }
114
+ };
115
+ const autoClearMessages = () => {
116
+ if (submitAddressReturn.value?.status !== void 0) {
117
+ setTimeout(() => {
118
+ submitAddressReturn.value = null;
119
+ }, 5e3);
120
+ }
121
+ };
122
+ return {
123
+ // State
124
+ showModal,
125
+ isEditMode,
126
+ showDeleteModal,
127
+ currentAddress,
128
+ submitAddressReturn,
129
+ loading,
130
+ // Computed
131
+ user,
132
+ shippingAddresses,
133
+ // Methods
134
+ clearMessages,
135
+ openAddModal,
136
+ openEditModal,
137
+ closeModal,
138
+ openDeleteModal,
139
+ closeDeleteModal,
140
+ submitAddress,
141
+ setShipping,
142
+ deleteAddress,
143
+ autoClearMessages
144
+ };
145
+ }
@@ -0,0 +1,21 @@
1
+ export declare function useUpdatePassword(): {
2
+ form: import("vue").Ref<{
3
+ currentPassword: string;
4
+ newPassword: string;
5
+ confirmPassword: string;
6
+ }, {
7
+ currentPassword: string;
8
+ newPassword: string;
9
+ confirmPassword: string;
10
+ } | {
11
+ currentPassword: string;
12
+ newPassword: string;
13
+ confirmPassword: string;
14
+ }>;
15
+ loading: import("vue").Ref<boolean, boolean>;
16
+ errorMessage: import("vue").Ref<string, string>;
17
+ successMessage: import("vue").Ref<string, string>;
18
+ updatePassword: () => Promise<boolean>;
19
+ clearMessages: () => void;
20
+ resetForm: () => void;
21
+ };