flowrix 1.0.1-beta.8 → 1.0.1-beta.81

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 (192) hide show
  1. package/dist/module.d.mts +1 -6
  2. package/dist/module.json +1 -1
  3. package/dist/module.mjs +94 -29
  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 +36 -28
  18. package/dist/runtime/composables/Checkout/{useBillingAddress.d.ts → useCheckoutBillingAddress.d.ts} +6 -6
  19. package/dist/runtime/composables/Checkout/{useBillingAddress.js → useCheckoutBillingAddress.js} +6 -1
  20. package/dist/runtime/composables/Checkout/{useShippingAddress.d.ts → useCheckoutShippingAddress.d.ts} +1 -1
  21. package/dist/runtime/composables/Checkout/{useShippingAddress.js → useCheckoutShippingAddress.js} +7 -2
  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/useProductSlug.d.ts +8 -1
  54. package/dist/runtime/composables/Product/useQuickView.d.ts +8 -0
  55. package/dist/runtime/composables/Product/useQuickView.js +27 -0
  56. package/dist/runtime/composables/Product/useService.d.ts +1 -1
  57. package/dist/runtime/composables/Product/useService.js +0 -3
  58. package/dist/runtime/composables/SideBar/Filters/useFilters.d.ts +2 -2
  59. package/dist/runtime/composables/SideBar/Filters/useSorting.d.ts +2 -2
  60. package/dist/runtime/composables/index.d.ts +15 -12
  61. package/dist/runtime/composables/index.js +15 -12
  62. package/dist/runtime/composables/useAddresses.js +6 -6
  63. package/dist/runtime/composables/useCards.js +2 -2
  64. package/dist/runtime/composables/useLocation.d.ts +2 -12
  65. package/dist/runtime/composables/useQuotationCheckout.d.ts +78 -0
  66. package/dist/runtime/composables/useQuotationCheckout.js +138 -0
  67. package/dist/runtime/middleware/flowrix.d.ts +5 -4
  68. package/dist/runtime/middleware/flowrix.js +41 -21
  69. package/dist/runtime/plugin.d.ts +1 -1
  70. package/dist/runtime/server/api/albums.js +1 -1
  71. package/dist/runtime/server/api/auth/forgot.js +1 -1
  72. package/dist/runtime/server/api/auth/login.js +5 -6
  73. package/dist/runtime/server/api/auth/logout.js +1 -1
  74. package/dist/runtime/server/api/auth/register.js +1 -1
  75. package/dist/runtime/server/api/auth/session.get.js +1 -1
  76. package/dist/runtime/server/api/auth/user/reset-password.js +1 -1
  77. package/dist/runtime/server/api/auth/user/session.js +1 -1
  78. package/dist/runtime/server/api/auth/user/verify-token.js +1 -1
  79. package/dist/runtime/server/api/banners.js +2 -2
  80. package/dist/runtime/server/api/brand/{[slug].js → [...slug].js} +17 -17
  81. package/dist/runtime/server/api/brand/index.d.ts +2 -0
  82. package/dist/runtime/server/api/brand/index.js +23 -0
  83. package/dist/runtime/server/api/cache/[...slug].delete.d.ts +2 -0
  84. package/dist/runtime/server/api/cache/[...slug].delete.js +40 -0
  85. package/dist/runtime/server/api/cache/clean.get.d.ts +5 -0
  86. package/dist/runtime/server/api/cache/clean.get.js +16 -0
  87. package/dist/runtime/server/api/cart/[slug]/add.js +1 -1
  88. package/dist/runtime/server/api/cart/[slug]/update.js +1 -1
  89. package/dist/runtime/server/api/cart/related.d.ts +2 -0
  90. package/dist/runtime/server/api/cart/related.js +21 -0
  91. package/dist/runtime/server/api/cart/remove.js +1 -1
  92. package/dist/runtime/server/api/cart/service/[slug]/add.js +1 -1
  93. package/dist/runtime/server/api/catalog/categories.js +5 -4
  94. package/dist/runtime/server/api/catalog/categoriesall.d.ts +3 -0
  95. package/dist/runtime/server/api/catalog/categoriesall.js +44 -0
  96. package/dist/runtime/server/api/catalog/featured.js +5 -4
  97. package/dist/runtime/server/api/catalog/samples.js +5 -4
  98. package/dist/runtime/server/api/catalog/search.js +5 -4
  99. package/dist/runtime/server/api/category/[...slug].js +18 -14
  100. package/dist/runtime/server/api/checkout/applyCoupon.js +1 -1
  101. package/dist/runtime/server/api/checkout/configs.d.ts +1 -1
  102. package/dist/runtime/server/api/checkout/configs.js +10 -11
  103. package/dist/runtime/server/api/checkout/countries.js +1 -1
  104. package/dist/runtime/server/api/checkout/paymentmethod.js +7 -7
  105. package/dist/runtime/server/api/checkout/quotation/[slug].d.ts +2 -0
  106. package/dist/runtime/server/api/checkout/quotation/[slug].js +21 -0
  107. package/dist/runtime/server/api/checkout/quotation/guest/[slug].d.ts +2 -0
  108. package/dist/runtime/server/api/checkout/quotation/guest/[slug].js +37 -0
  109. package/dist/runtime/server/api/checkout/quotation/guest/customer.d.ts +2 -0
  110. package/dist/runtime/server/api/checkout/quotation/guest/customer.js +21 -0
  111. package/dist/runtime/server/api/checkout/quotation/submit/[slug].d.ts +2 -0
  112. package/dist/runtime/server/api/checkout/quotation/submit/[slug].js +23 -0
  113. package/dist/runtime/server/api/{blog/[slug].js → cmspost/[...slug].js} +7 -9
  114. package/dist/runtime/server/api/{blog/blog.js → cmspost/all.js} +2 -2
  115. package/dist/runtime/server/api/company/profile.d.ts +1 -1
  116. package/dist/runtime/server/api/company/profile.js +9 -9
  117. package/dist/runtime/server/api/contact-center/webforms/[id]/details.js +1 -1
  118. package/dist/runtime/server/api/contact-center/webforms/create.js +1 -1
  119. package/dist/runtime/server/api/countries.d.ts +2 -0
  120. package/dist/runtime/server/api/countries.js +35 -0
  121. package/dist/runtime/server/api/customer/address/add.js +1 -1
  122. package/dist/runtime/server/api/customer/address/delete.js +2 -2
  123. package/dist/runtime/server/api/customer/address/setshipping.js +1 -1
  124. package/dist/runtime/server/api/customer/address/update.js +1 -1
  125. package/dist/runtime/server/api/customer/cards/delete.js +2 -2
  126. package/dist/runtime/server/api/customer/cards/get.js +2 -2
  127. package/dist/runtime/server/api/customer/change-password.js +2 -2
  128. package/dist/runtime/server/api/customer/checkout.js +1 -1
  129. package/dist/runtime/server/api/customer/orders.js +2 -2
  130. package/dist/runtime/server/api/customer/profile/update.js +1 -1
  131. package/dist/runtime/server/api/customer/quotations.js +2 -2
  132. package/dist/runtime/server/api/customer/search.js +1 -1
  133. package/dist/runtime/server/api/customer/tax-invoice.js +1 -1
  134. package/dist/runtime/server/api/customer/wishlist/add.js +1 -1
  135. package/dist/runtime/server/api/customer/wishlist/createWishList.js +1 -1
  136. package/dist/runtime/server/api/customer/wishlist/deleteFromWishList.js +1 -1
  137. package/dist/runtime/server/api/customer/wishlist/deleteWishList.js +1 -1
  138. package/dist/runtime/server/api/customer/wishlist/get.js +2 -2
  139. package/dist/runtime/server/api/customer/wishlist/getWishListItems.js +1 -1
  140. package/dist/runtime/server/api/customer/wishlist/updateWishList.js +2 -2
  141. package/dist/runtime/server/api/featured.d.ts +2 -0
  142. package/dist/runtime/server/api/featured.js +16 -0
  143. package/dist/runtime/server/api/location.js +1 -1
  144. package/dist/runtime/server/api/nav/[id]/links.js +1 -1
  145. package/dist/runtime/server/api/page/{[slug].js → [...slug].js} +6 -8
  146. package/dist/runtime/server/api/product/[...slug].js +8 -5
  147. package/dist/runtime/server/api/quickview/[slug].d.ts +2 -0
  148. package/dist/runtime/server/api/quickview/[slug].js +16 -0
  149. package/dist/runtime/server/api/samples.d.ts +3 -0
  150. package/dist/runtime/server/api/samples.js +20 -0
  151. package/dist/runtime/server/api/search.d.ts +3 -0
  152. package/dist/runtime/server/api/search.js +15 -0
  153. package/dist/runtime/server/api/service/[slug].js +5 -4
  154. package/dist/runtime/server/api/service/availability.js +1 -1
  155. package/dist/runtime/server/api/service/getall.d.ts +3 -0
  156. package/dist/runtime/server/api/service/getall.js +52 -0
  157. package/dist/runtime/server/api/shop.d.ts +3 -0
  158. package/dist/runtime/server/api/shop.js +15 -0
  159. package/dist/runtime/server/api/subscribe.js +1 -1
  160. package/dist/runtime/server/api/v2/[...slug].js +3 -1
  161. package/dist/runtime/server/api/webform.d.ts +3 -0
  162. package/dist/runtime/server/api/webform.js +16 -0
  163. package/dist/runtime/stores/Cart.d.ts +12 -0
  164. package/dist/runtime/stores/Cart.js +50 -16
  165. package/dist/runtime/stores/Checkout.d.ts +9 -15
  166. package/dist/runtime/stores/Checkout.js +19 -5
  167. package/dist/runtime/stores/Search.d.ts +1 -1
  168. package/dist/runtime/stores/Services.js +2 -2
  169. package/dist/runtime/stores/auth.d.ts +8 -11
  170. package/dist/runtime/stores/auth.js +390 -8
  171. package/dist/runtime/stores/countries.d.ts +1 -3
  172. package/dist/runtime/stores/countries.js +4 -8
  173. package/dist/runtime/stores/product/slug.d.ts +1 -17
  174. package/dist/runtime/stores/wishlists.d.ts +114 -6
  175. package/dist/runtime/stores/wishlists.js +209 -9
  176. package/dist/runtime/utils/api.js +9 -13
  177. package/dist/runtime/utils/htmlCache.d.ts +5 -0
  178. package/dist/runtime/utils/htmlCache.js +60 -0
  179. package/dist/types.d.mts +6 -2
  180. package/package.json +32 -20
  181. package/dist/runtime/composables/useAuth.d.ts +0 -45
  182. package/dist/runtime/composables/useAuth.js +0 -180
  183. package/dist/runtime/composables/useCountries.d.ts +0 -12
  184. package/dist/runtime/composables/useCountries.js +0 -50
  185. package/dist/runtime/composables/useOrders.d.ts +0 -21
  186. package/dist/runtime/composables/useOrders.js +0 -82
  187. package/dist/runtime/composables/useQuotations.d.ts +0 -14
  188. package/dist/runtime/composables/useQuotations.js +0 -50
  189. /package/dist/runtime/server/api/brand/{[slug].d.ts → [...slug].d.ts} +0 -0
  190. /package/dist/runtime/server/api/{blog/[slug].d.ts → cmspost/[...slug].d.ts} +0 -0
  191. /package/dist/runtime/server/api/{blog/blog.d.ts → cmspost/all.d.ts} +0 -0
  192. /package/dist/runtime/server/api/page/{[slug].d.ts → [...slug].d.ts} +0 -0
@@ -0,0 +1,32 @@
1
+ export interface Quotation {
2
+ quotation_no: string;
3
+ createddate: string;
4
+ quotestatus: string;
5
+ total: number;
6
+ expired?: boolean;
7
+ converted?: boolean;
8
+ [key: string]: any;
9
+ }
10
+ export declare function useQuotations(): {
11
+ quotations: import("vue").Ref<{
12
+ [x: string]: any;
13
+ quotation_no: string;
14
+ createddate: string;
15
+ quotestatus: string;
16
+ total: number;
17
+ expired?: boolean | undefined;
18
+ converted?: boolean | undefined;
19
+ }[], Quotation[] | {
20
+ [x: string]: any;
21
+ quotation_no: string;
22
+ createddate: string;
23
+ quotestatus: string;
24
+ total: number;
25
+ expired?: boolean | undefined;
26
+ converted?: boolean | undefined;
27
+ }[]>;
28
+ pending: import("vue").Ref<boolean, boolean>;
29
+ loadQuotations: () => Promise<void>;
30
+ hasQuotations: () => boolean;
31
+ getQuotationStatus: (quotation: Quotation) => string;
32
+ };
@@ -0,0 +1,40 @@
1
+ import { ref } from "vue";
2
+ import { useAuthStore } from "../../stores/auth.js";
3
+ export function useQuotations() {
4
+ const authStore = useAuthStore();
5
+ const quotations = ref([]);
6
+ const pending = ref(true);
7
+ const loadQuotations = async () => {
8
+ pending.value = true;
9
+ try {
10
+ const quotationsData = await authStore.fetchQuotations();
11
+ quotations.value = Array.isArray(quotationsData) ? quotationsData : [];
12
+ } catch (error) {
13
+ console.error("Failed to load quotations:", error);
14
+ quotations.value = [];
15
+ } finally {
16
+ pending.value = false;
17
+ }
18
+ };
19
+ const hasQuotations = () => {
20
+ return quotations.value && quotations.value.length > 0;
21
+ };
22
+ const getQuotationStatus = (quotation) => {
23
+ if (quotation.expired) {
24
+ return "Expired";
25
+ } else if (quotation.converted) {
26
+ return "Purchased";
27
+ } else {
28
+ return "Available";
29
+ }
30
+ };
31
+ return {
32
+ // State
33
+ quotations,
34
+ pending,
35
+ // Methods
36
+ loadQuotations,
37
+ hasQuotations,
38
+ getQuotationStatus
39
+ };
40
+ }
@@ -1,18 +1,127 @@
1
- export default function (): {
1
+ export default function (countries: any): {
2
2
  router: any;
3
3
  route: any;
4
- form_error: import("vue").Ref<string, string>;
5
4
  inputData: import("vue").Ref<{
6
- passwordStrengthValue: number;
5
+ abn: string;
6
+ addresses: never[];
7
+ address: string;
8
+ postCode: string;
9
+ suburb: string;
10
+ billing_address: string;
11
+ businessAddress: string;
12
+ billing_country: string;
13
+ billing_firstname: string;
14
+ billing_lastname: string;
15
+ billing_mobile: string;
16
+ billing_postcode: string;
17
+ billing_state: string;
18
+ billing_suburb: string;
19
+ company_name: string;
20
+ email: string;
21
+ email_confirmation: string;
22
+ firstname: string;
23
+ lastname: string;
24
+ mobile: string;
25
+ newsletterSignup: boolean;
26
+ password: string;
27
+ password_confirmation: string;
28
+ recaptcha: string;
29
+ shipping_address: string;
30
+ shipping_country: string;
31
+ shipping_postcode: string;
32
+ shipping_state: string;
33
+ shipping_suburb: string;
34
+ shipping_town: string;
35
+ shipping_mobile: string;
36
+ subscribe: boolean;
7
37
  }, {
8
- passwordStrengthValue: number;
38
+ abn: string;
39
+ addresses: never[];
40
+ address: string;
41
+ postCode: string;
42
+ suburb: string;
43
+ billing_address: string;
44
+ businessAddress: string;
45
+ billing_country: string;
46
+ billing_firstname: string;
47
+ billing_lastname: string;
48
+ billing_mobile: string;
49
+ billing_postcode: string;
50
+ billing_state: string;
51
+ billing_suburb: string;
52
+ company_name: string;
53
+ email: string;
54
+ email_confirmation: string;
55
+ firstname: string;
56
+ lastname: string;
57
+ mobile: string;
58
+ newsletterSignup: boolean;
59
+ password: string;
60
+ password_confirmation: string;
61
+ recaptcha: string;
62
+ shipping_address: string;
63
+ shipping_country: string;
64
+ shipping_postcode: string;
65
+ shipping_state: string;
66
+ shipping_suburb: string;
67
+ shipping_town: string;
68
+ shipping_mobile: string;
69
+ subscribe: boolean;
9
70
  } | {
10
- passwordStrengthValue: number;
71
+ abn: string;
72
+ addresses: never[];
73
+ address: string;
74
+ postCode: string;
75
+ suburb: string;
76
+ billing_address: string;
77
+ businessAddress: string;
78
+ billing_country: string;
79
+ billing_firstname: string;
80
+ billing_lastname: string;
81
+ billing_mobile: string;
82
+ billing_postcode: string;
83
+ billing_state: string;
84
+ billing_suburb: string;
85
+ company_name: string;
86
+ email: string;
87
+ email_confirmation: string;
88
+ firstname: string;
89
+ lastname: string;
90
+ mobile: string;
91
+ newsletterSignup: boolean;
92
+ password: string;
93
+ password_confirmation: string;
94
+ recaptcha: string;
95
+ shipping_address: string;
96
+ shipping_country: string;
97
+ shipping_postcode: string;
98
+ shipping_state: string;
99
+ shipping_suburb: string;
100
+ shipping_town: string;
101
+ shipping_mobile: string;
102
+ subscribe: boolean;
11
103
  }>;
12
- passwordStrength: any;
13
- passwordStrengthClass: any;
14
- passwordStrengthTextColor: any;
15
- passwordStrengthWidth: any;
16
- errorMessage: any;
17
- signupFunction: () => Promise<void>;
104
+ CustomerRegister: (registerFields: any) => Promise<void>;
105
+ regResponse: import("vue").Ref<null, null>;
106
+ isBusinessAccount: import("vue").Ref<boolean, boolean>;
107
+ companyName: import("vue").Ref<string, string>;
108
+ abn: import("vue").Ref<string, string>;
109
+ address: import("vue").Ref<string, string>;
110
+ sameAsCustomerDetails: import("vue").Ref<boolean, boolean>;
111
+ showPassword: import("vue").Ref<boolean, boolean>;
112
+ showConfirmPassword: import("vue").Ref<boolean, boolean>;
113
+ isLoading: import("vue").Ref<boolean, boolean>;
114
+ getStates: (countryId: any) => any;
115
+ validateForm: () => true | "First Name is required" | "Last Name is required" | "Address is required" | "Country is required" | "State is required" | "Post Code is required" | "Suburb is required" | "Please enter a valid email address" | "Email addresses do not match" | "Password must be at least 6 characters" | "Passwords do not match" | "Mobile Number is required" | "Company Name is required" | "ABN is required" | "Business Address is required" | "Shipping Address is required" | "Shipping country is required." | "Shipping Town is required" | "Shipping State is required" | "Shipping Post Code is required" | "Shipping Mobile is required";
116
+ togglePassword: () => void;
117
+ toggleConfirmPassword: () => void;
118
+ handleSameAsCustomerDetails: () => void;
119
+ alertMessage: import("vue").Ref<string, string>;
120
+ alertType: import("vue").Ref<"success" | "danger", "success" | "danger">;
121
+ showAlert: import("vue").Ref<boolean, boolean>;
122
+ displayAlert: (message: string, type: "success" | "danger") => void;
123
+ dismissAlert: () => void;
124
+ handleSignup: () => Promise<void>;
125
+ initializeShippingData: () => void;
126
+ resetForm: () => void;
18
127
  };
@@ -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
+ };