ordering-components-external 13.0.30 → 13.0.31

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 (533) hide show
  1. package/.babelrc +22 -22
  2. package/.vscode/settings.json +3 -3
  3. package/_bundles/{7.ordering-component.05c8990567699e368292.js → 7.ordering-component.e2e1eb6df6c8a20c9636.js} +1 -1
  4. package/_bundles/{ordering-component.05c8990567699e368292.js → ordering-component.e2e1eb6df6c8a20c9636.js} +2 -2
  5. package/_modules/components/AddressDetails/index.js +26 -26
  6. package/_modules/components/AddressForm/index.js +50 -50
  7. package/_modules/components/AddressList/index.js +40 -40
  8. package/_modules/components/Analitycs/index.js +6 -6
  9. package/_modules/components/AnalyticsSegment/index.js +3 -3
  10. package/_modules/components/AppleLogin/index.js +26 -26
  11. package/_modules/components/BaseComponent/index.js +14 -14
  12. package/_modules/components/BusinessAndProductList/index.js +16 -16
  13. package/_modules/components/BusinessBasicInformation/index.js +20 -20
  14. package/_modules/components/BusinessController/index.js +50 -50
  15. package/_modules/components/BusinessInformation/BusinessOption/index.js +20 -20
  16. package/_modules/components/BusinessInformation/index.js +18 -18
  17. package/_modules/components/BusinessList/index.js +42 -42
  18. package/_modules/components/BusinessMenuListing/index.js +20 -20
  19. package/_modules/components/BusinessProductsCategories/index.js +16 -16
  20. package/_modules/components/BusinessProductsSearch/index.js +14 -14
  21. package/_modules/components/BusinessReviews/index.js +27 -27
  22. package/_modules/components/BusinessSearchList/index.js +18 -18
  23. package/_modules/components/BusinessSortControl/index.js +28 -28
  24. package/_modules/components/BusinessTypeFilter/index.js +26 -26
  25. package/_modules/components/BusinessesMap/index.js +27 -27
  26. package/_modules/components/Cart/index.js +38 -38
  27. package/_modules/components/CartStoresListing/index.js +4 -4
  28. package/_modules/components/Checkout/index.js +60 -60
  29. package/_modules/components/CmsContent/index.js +20 -20
  30. package/_modules/components/Contacts/index.js +28 -28
  31. package/_modules/components/CouponControl/index.js +22 -22
  32. package/_modules/components/DriverList/index.js +22 -22
  33. package/_modules/components/DriverTips/index.js +35 -35
  34. package/_modules/components/FacebookLoginButton/index.js +40 -40
  35. package/_modules/components/FacebookPixel/index.js +3 -3
  36. package/_modules/components/FavoriteList/index.js +28 -28
  37. package/_modules/components/FirebaseGoogleLoginButton/index.js +10 -10
  38. package/_modules/components/FloatingButton/index.js +20 -20
  39. package/_modules/components/ForgotPasswordForm/index.js +43 -43
  40. package/_modules/components/GiftCard/GiftCardOrdersList/index.js +4 -4
  41. package/_modules/components/GiftCard/PurchaseGiftCard/index.js +6 -6
  42. package/_modules/components/GiftCard/RedeemGiftCard/index.js +4 -4
  43. package/_modules/components/GiftCard/SendGiftCard/index.js +4 -4
  44. package/_modules/components/GoogleAutocompleteInput/index.js +18 -18
  45. package/_modules/components/GoogleIdentity/index.js +28 -28
  46. package/_modules/components/GoogleLoginButton/index.js +49 -49
  47. package/_modules/components/GoogleMaps/index.js +37 -37
  48. package/_modules/components/GpsButton/index.js +20 -20
  49. package/_modules/components/LanguageSelector/index.js +28 -28
  50. package/_modules/components/LoginForm/index.js +58 -58
  51. package/_modules/components/LogoutAction/index.js +17 -17
  52. package/_modules/components/MainSearch/index.js +31 -31
  53. package/_modules/components/MenuControl/index.js +51 -51
  54. package/_modules/components/Messages/index.js +22 -22
  55. package/_modules/components/MomentOption/index.js +51 -51
  56. package/_modules/components/MultiCartCreate/index.js +2 -2
  57. package/_modules/components/MultiCartsPaymethodsAndWallets/index.js +8 -8
  58. package/_modules/components/MultiCheckout/index.js +12 -12
  59. package/_modules/components/MultiOrdersDetails/index.js +6 -6
  60. package/_modules/components/MyOrders/index.js +24 -24
  61. package/_modules/components/MyOrdersList/index.js +26 -26
  62. package/_modules/components/NewOrderNotification/index.js +2 -2
  63. package/_modules/components/OrderChange/index.js +20 -20
  64. package/_modules/components/OrderDetails/index.js +43 -43
  65. package/_modules/components/OrderList/index.js +44 -44
  66. package/_modules/components/OrderReview/index.js +22 -22
  67. package/_modules/components/OrderTypeControl/index.js +18 -18
  68. package/_modules/components/OrdersControlFilters/index.js +6 -6
  69. package/_modules/components/OrdersDashboardComponents/Appointments/index.js +4 -4
  70. package/_modules/components/OrdersDashboardComponents/BusinessProductsListing/index.js +26 -26
  71. package/_modules/components/OrdersDashboardComponents/CheckPassword/index.js +24 -24
  72. package/_modules/components/OrdersDashboardComponents/CityList/index.js +20 -20
  73. package/_modules/components/OrdersDashboardComponents/CountryList/index.js +20 -20
  74. package/_modules/components/OrdersDashboardComponents/CustomOrderDetails/index.js +12 -12
  75. package/_modules/components/OrdersDashboardComponents/DashboardBusinessList/index.js +54 -54
  76. package/_modules/components/OrdersDashboardComponents/DashboardOrdersList/index.js +60 -60
  77. package/_modules/components/OrdersDashboardComponents/DriversList/index.js +58 -58
  78. package/_modules/components/OrdersDashboardComponents/ExportCSV/index.js +16 -16
  79. package/_modules/components/OrdersDashboardComponents/GiftCardsList/index.js +6 -6
  80. package/_modules/components/OrdersDashboardComponents/GoogleMapsApiKeySetting/index.js +4 -4
  81. package/_modules/components/OrdersDashboardComponents/LogisticInformation/index.js +20 -20
  82. package/_modules/components/OrdersDashboardComponents/Logistics/index.js +20 -20
  83. package/_modules/components/OrdersDashboardComponents/Messages/index.js +27 -27
  84. package/_modules/components/OrdersDashboardComponents/MetaFields/index.js +26 -26
  85. package/_modules/components/OrdersDashboardComponents/OrderDetails/index.js +36 -36
  86. package/_modules/components/OrdersDashboardComponents/OrderNotification/index.js +14 -14
  87. package/_modules/components/OrdersDashboardComponents/OrdersFilter/index.js +62 -62
  88. package/_modules/components/OrdersDashboardComponents/OrdersManage/index.js +56 -56
  89. package/_modules/components/OrdersDashboardComponents/PointsWalletLevels/index.js +25 -25
  90. package/_modules/components/OrdersDashboardComponents/ReviewCustomer/index.js +16 -16
  91. package/_modules/components/OrdersDashboardComponents/Schedule/index.js +46 -46
  92. package/_modules/components/OrdersDashboardComponents/SettingsList/index.js +39 -39
  93. package/_modules/components/OrdersDashboardComponents/UserFormDetails/index.js +66 -66
  94. package/_modules/components/OrdersDashboardComponents/UsersList/index.js +54 -54
  95. package/_modules/components/OrdersDashboardComponents/WebsocketStatus/index.js +4 -4
  96. package/_modules/components/PageBanner/index.js +4 -4
  97. package/_modules/components/PaymentOptionCash/index.js +24 -24
  98. package/_modules/components/PaymentOptionPaypal/index.js +24 -24
  99. package/_modules/components/PaymentOptionSquare/index.js +2 -2
  100. package/_modules/components/PaymentOptionStripe/index.js +32 -32
  101. package/_modules/components/PaymentOptionStripeDirect/index.js +24 -24
  102. package/_modules/components/PaymentOptionStripeRedirect/StripeRedirectForm/index.js +19 -19
  103. package/_modules/components/PaymentOptionStripeRedirect/index.js +30 -30
  104. package/_modules/components/PaymentOptions/index.js +27 -27
  105. package/_modules/components/PaymethodList/index.js +20 -20
  106. package/_modules/components/PhoneAutocomplete/index.js +51 -44
  107. package/_modules/components/PlaceSpot/index.js +2 -2
  108. package/_modules/components/Popup/index.js +33 -33
  109. package/_modules/components/ProductComponent/index.js +27 -27
  110. package/_modules/components/ProductForm/index.js +115 -115
  111. package/_modules/components/ProductImages/index.js +18 -18
  112. package/_modules/components/ProductIngredient/index.js +17 -17
  113. package/_modules/components/ProductOption/index.js +8 -8
  114. package/_modules/components/ProductOptionSuboption/index.js +33 -33
  115. package/_modules/components/ProductShare/index.js +20 -20
  116. package/_modules/components/ProductsList/index.js +20 -20
  117. package/_modules/components/ProductsListing/index.js +39 -39
  118. package/_modules/components/ProfessionalInfo/index.js +24 -24
  119. package/_modules/components/QueryLoginSpoonity/index.js +20 -20
  120. package/_modules/components/ReCaptcha/index.js +4 -4
  121. package/_modules/components/ResetPassword/index.js +20 -20
  122. package/_modules/components/ReviewCustomer/index.js +16 -16
  123. package/_modules/components/ReviewDriver/index.js +20 -20
  124. package/_modules/components/ReviewProduct/index.js +22 -22
  125. package/_modules/components/SearchOptions/index.js +17 -17
  126. package/_modules/components/Sessions/index.js +21 -21
  127. package/_modules/components/SignupForm/index.js +57 -57
  128. package/_modules/components/SingleBusinessCard/index.js +28 -28
  129. package/_modules/components/SingleOrderCard/index.js +20 -20
  130. package/_modules/components/SingleProductCard/index.js +18 -18
  131. package/_modules/components/SingleProfessionalCard/index.js +18 -18
  132. package/_modules/components/SmartAppBanner/index.js +8 -8
  133. package/_modules/components/StoreProductList/index.js +22 -22
  134. package/_modules/components/StripeElementsForm/CardForm/index.js +25 -25
  135. package/_modules/components/StripeElementsForm/index.js +16 -16
  136. package/_modules/components/UpsellingPage/index.js +17 -17
  137. package/_modules/components/UserFormDetails/index.js +68 -68
  138. package/_modules/components/UserVerification/index.js +16 -16
  139. package/_modules/components/WebsocketStatus/index.js +4 -4
  140. package/_modules/components/WrapperGoogleMaps/index.js +3 -3
  141. package/_modules/contexts/ApiContext/index.js +8 -8
  142. package/_modules/contexts/BillingContext/index.js +7 -7
  143. package/_modules/contexts/BusinessContext/index.js +9 -9
  144. package/_modules/contexts/ConfigContext/index.js +9 -9
  145. package/_modules/contexts/EventContext/index.js +9 -9
  146. package/_modules/contexts/LanguageContext/index.js +13 -13
  147. package/_modules/contexts/OptimizationLoadContext/index.js +8 -8
  148. package/_modules/contexts/OrderContext/index.js +62 -62
  149. package/_modules/contexts/OrderingContext/index.js +7 -7
  150. package/_modules/contexts/OrderingThemeContext/index.js +11 -11
  151. package/_modules/contexts/ProductContext/index.js +13 -13
  152. package/_modules/contexts/SessionContext/index.js +9 -9
  153. package/_modules/contexts/SiteContext/index.js +9 -9
  154. package/_modules/contexts/UtilsContext/index.js +9 -9
  155. package/_modules/contexts/WebsocketContext/index.js +9 -9
  156. package/_modules/native/src/contexts/OrderingContext/index.js +7 -7
  157. package/cypress/fixtures/example.json +4 -4
  158. package/cypress/integration/naked/BusinessProductsCategories.spec.js +9 -9
  159. package/cypress/integration/naked/PhoneAutocomplete.spec.js +22 -22
  160. package/cypress/integration/naked/activeOrders.spec.js +15 -15
  161. package/cypress/integration/naked/addressDetails.spec.js +10 -10
  162. package/cypress/integration/naked/appleLogin.spec.js +14 -14
  163. package/cypress/integration/naked/businessBasicInformation.spec.js +14 -14
  164. package/cypress/integration/naked/businessController.spec.js +9 -9
  165. package/cypress/integration/naked/businessInformation.spec.js +19 -19
  166. package/cypress/integration/naked/businessProductsSearch.spec.js +9 -9
  167. package/cypress/integration/naked/businessReviews.spec.js +16 -16
  168. package/cypress/integration/naked/businessSortControl.spec.js +9 -9
  169. package/cypress/integration/naked/businessTypeFilter.spec.js +10 -10
  170. package/cypress/integration/naked/businessesMap.spec.js +13 -13
  171. package/cypress/integration/naked/cms.spec.js +9 -9
  172. package/cypress/integration/naked/config.spec.js +34 -34
  173. package/cypress/integration/naked/driverTips.spec.js +10 -10
  174. package/cypress/integration/naked/events.spec.js +13 -13
  175. package/cypress/integration/naked/facebookLogin.spec.js +13 -13
  176. package/cypress/integration/naked/floatingButton.spec.js +13 -13
  177. package/cypress/integration/naked/forgotPassword.spec.js +20 -20
  178. package/cypress/integration/naked/googleLogin.spec.js +11 -11
  179. package/cypress/integration/naked/languageExamples.spec.js +25 -25
  180. package/cypress/integration/naked/languageSelector.spec.js +10 -10
  181. package/cypress/integration/naked/login.spec.js +38 -38
  182. package/cypress/integration/naked/logout.spec.js +15 -15
  183. package/cypress/integration/naked/mainSearch.spec.js +9 -9
  184. package/cypress/integration/naked/menuControl.spec.js +9 -9
  185. package/cypress/integration/naked/messages.spec.js +25 -25
  186. package/cypress/integration/naked/momentOption.spec.js +10 -10
  187. package/cypress/integration/naked/myOrders.spec.js +11 -11
  188. package/cypress/integration/naked/myOrdersList.spec.js +9 -9
  189. package/cypress/integration/naked/orderContextAdvanced.spec.js +23 -23
  190. package/cypress/integration/naked/orderDetails.spec.js +11 -11
  191. package/cypress/integration/naked/paymentOptionCash.spec.js +21 -21
  192. package/cypress/integration/naked/paymentOptionStripe.spec.js +11 -11
  193. package/cypress/integration/naked/paymentOptionStripeDirect.spec.js +11 -11
  194. package/cypress/integration/naked/paymentOptions.spec.js +9 -9
  195. package/cypress/integration/naked/popupExample.spec.js +17 -17
  196. package/cypress/integration/naked/productImages.spec.js +11 -11
  197. package/cypress/integration/naked/productOptionExample.spec.js +21 -21
  198. package/cypress/integration/naked/productShare.spec.js +9 -9
  199. package/cypress/integration/naked/productsList.spec.js +9 -9
  200. package/cypress/integration/naked/resetPassword.spec.js +11 -11
  201. package/cypress/integration/naked/reviewOrders.spec.js +13 -13
  202. package/cypress/integration/naked/searchOptions.spec.js +18 -18
  203. package/cypress/integration/naked/signup.spec.js +31 -31
  204. package/cypress/integration/naked/upselling.spec.js +13 -13
  205. package/cypress/integration/naked/userDetails.spec.js +12 -12
  206. package/cypress/plugins/index.js +21 -21
  207. package/cypress/support/commands.js +35 -35
  208. package/cypress/support/index.js +20 -20
  209. package/cypress.json +12 -12
  210. package/example/App.js +263 -263
  211. package/example/components/ActiveOrdersUI/index.js +72 -72
  212. package/example/components/AddressDetailsUI/index.js +101 -101
  213. package/example/components/AddressFormUI/index.js +161 -161
  214. package/example/components/AddressListUI/index.js +33 -33
  215. package/example/components/AlertPopup/index.js +10 -10
  216. package/example/components/AlertUI/index.js +49 -49
  217. package/example/components/AlertUI/style.css +5 -5
  218. package/example/components/AppleLoginUI/index.js +40 -40
  219. package/example/components/BaseComponentUI/index.js +34 -34
  220. package/example/components/BusinessBasicInformationUI/index.js +118 -118
  221. package/example/components/BusinessControllerUI/index.js +89 -89
  222. package/example/components/BusinessInformationUI/BusinessOptionUI/index.js +83 -83
  223. package/example/components/BusinessInformationUI/index.js +83 -83
  224. package/example/components/BusinessProductsCategoriesUI/index.js +42 -42
  225. package/example/components/BusinessProductsSearchUI/index.js +38 -38
  226. package/example/components/BusinessReviewsUI/index.js +77 -77
  227. package/example/components/BusinessSortControlUI/index.js +47 -47
  228. package/example/components/BusinessTypeFilterUI/index.js +53 -53
  229. package/example/components/BusinessesMapUI/index.js +57 -57
  230. package/example/components/CartUI/index.js +154 -154
  231. package/example/components/ChangeView/index.js +19 -19
  232. package/example/components/CheckoutUI/index.js +206 -206
  233. package/example/components/CmsContentUI/index.js +52 -52
  234. package/example/components/ConfigsExample/index.js +118 -118
  235. package/example/components/CouponControlUI/index.js +63 -63
  236. package/example/components/DriverTipsUI/index.js +58 -58
  237. package/example/components/FacebookLoginButtonUI/index.js +48 -48
  238. package/example/components/FloatingButtonUI/index.js +145 -145
  239. package/example/components/ForgotPasswordFormUI/index.js +93 -93
  240. package/example/components/GoogleLoginUI/index.js +30 -30
  241. package/example/components/GpsButtonUI/index.js +22 -22
  242. package/example/components/Header/index.js +18 -18
  243. package/example/components/LanguageSelectorUI/index.js +57 -57
  244. package/example/components/LanguagesExample/index.js +51 -51
  245. package/example/components/LoginFormUI/index.js +159 -159
  246. package/example/components/LogoutButtonUI/index.js +21 -21
  247. package/example/components/MainSearchUI/index.js +131 -131
  248. package/example/components/MenuControlUI/index.js +103 -103
  249. package/example/components/MessagesUI/index.js +162 -162
  250. package/example/components/ModalUI/index.js +36 -36
  251. package/example/components/ModalUI/style.css +5 -5
  252. package/example/components/MomentOptionUI/index.js +68 -68
  253. package/example/components/MyOrdersListUI/index.js +51 -51
  254. package/example/components/MyOrdersUI/index.js +52 -52
  255. package/example/components/OrderChangeUI/index.js +54 -54
  256. package/example/components/OrderDetailsUI/index.js +174 -174
  257. package/example/components/OrderReviewUI/index.js +125 -125
  258. package/example/components/OrderTypeControlUI/index.js +32 -32
  259. package/example/components/PaymentOptionCashUI/index.js +60 -60
  260. package/example/components/PaymentOptionPaypalUI/index.js +50 -50
  261. package/example/components/PaymentOptionStripeDirectUI/index.js +89 -89
  262. package/example/components/PaymentOptionStripeRedirectUI/index.js +97 -97
  263. package/example/components/PaymentOptionStripeUI/index.js +129 -129
  264. package/example/components/PaymentOptionsUI/index.js +169 -169
  265. package/example/components/PhoneAutocompleteUI/index.js +67 -67
  266. package/example/components/PhoneAutocompleteUI/styles.css +49 -49
  267. package/example/components/ProductComponentUI/index.js +113 -113
  268. package/example/components/ProductFormUI/index.js +131 -131
  269. package/example/components/ProductImagesUI/index.js +82 -82
  270. package/example/components/ProductIngredientUI/index.js +21 -21
  271. package/example/components/ProductOptionSuboptionUI/index.js +65 -65
  272. package/example/components/ProductOptionUI/index.js +31 -31
  273. package/example/components/ProductShareUI/index.js +48 -48
  274. package/example/components/ProductsListUI/index.js +108 -108
  275. package/example/components/ProductsListingUI/index.js +42 -42
  276. package/example/components/ResetPasswordUI/index.js +121 -121
  277. package/example/components/SearchOptionsUI/index.js +82 -82
  278. package/example/components/SignupFormUI/index.js +117 -117
  279. package/example/components/SingleBusinessCardUI/index.js +82 -82
  280. package/example/components/SingleOrderCardUI/index.js +52 -52
  281. package/example/components/SingleProductCardUI/index.js +47 -47
  282. package/example/components/StripeElementsFormUI/CardFormUI/index.js +51 -51
  283. package/example/components/StripeElementsFormUI/CardFormUI/style.css +118 -118
  284. package/example/components/StripeElementsFormUI/index.js +38 -38
  285. package/example/components/StripeRedirectFormUI/index.js +99 -99
  286. package/example/components/TestComponent/index.js +5 -5
  287. package/example/components/UpsellingPageUI/index.js +26 -26
  288. package/example/components/UserDetailsUI/index.js +94 -94
  289. package/example/components/UserProfileUI/index.js +156 -156
  290. package/example/views/ActiveOrders/index.js +86 -86
  291. package/example/views/AddressDetailsExample/index.js +57 -57
  292. package/example/views/AppleLoginExample/index.js +51 -51
  293. package/example/views/BaseComponentExample/index.js +35 -35
  294. package/example/views/BusinessBasicInformationExample/index.js +43 -43
  295. package/example/views/BusinessControllerExample/index.js +55 -55
  296. package/example/views/BusinessInformationExample/index.js +68 -68
  297. package/example/views/BusinessProductsCategoriesExample/index.js +50 -50
  298. package/example/views/BusinessProductsSearchExample/index.js +39 -39
  299. package/example/views/BusinessReviewsExample/index.js +43 -43
  300. package/example/views/BusinessSortControlExample/index.js +53 -53
  301. package/example/views/BusinessTypeFilterExample/index.js +53 -53
  302. package/example/views/BusinessesMapExample/index.js +57 -57
  303. package/example/views/CheckoutExample/index.js +143 -143
  304. package/example/views/CmsContentExample/index.js +44 -44
  305. package/example/views/DriverTipsExample/index.js +47 -47
  306. package/example/views/EventsExample/index.js +26 -26
  307. package/example/views/FacebookLogin/index.js +63 -63
  308. package/example/views/FloatingButtonExample/index.js +47 -47
  309. package/example/views/ForgotPassword/index.js +77 -77
  310. package/example/views/GoogleLoginExample/index.js +85 -85
  311. package/example/views/Home/index.js +200 -200
  312. package/example/views/LanguageSelectorExample/index.js +55 -55
  313. package/example/views/Login/index.js +84 -84
  314. package/example/views/MainSearchExample/index.js +43 -43
  315. package/example/views/MenuControlExample/index.js +68 -68
  316. package/example/views/MessagesExample/index.js +58 -58
  317. package/example/views/MomentOptionExample/index.js +52 -52
  318. package/example/views/MyOrdersExample/index.js +35 -35
  319. package/example/views/MyOrdersListExample/index.js +50 -50
  320. package/example/views/OrderChangeExample/index.js +46 -46
  321. package/example/views/OrderContextExample/index.js +139 -139
  322. package/example/views/OrderDetailsExample/index.js +50 -50
  323. package/example/views/OrderReviewExample/index.js +64 -64
  324. package/example/views/PaymentOptionCashExample/index.js +51 -51
  325. package/example/views/PaymentOptionPaypalExample/index.js +71 -71
  326. package/example/views/PaymentOptionStripeDirectExample/index.js +43 -43
  327. package/example/views/PaymentOptionStripeExample/index.js +47 -47
  328. package/example/views/PaymentOptionStripeRedirectExample/index.js +56 -56
  329. package/example/views/PaymentOptionsExample/index.js +47 -47
  330. package/example/views/PhoneAutocompleteExample/index.js +34 -34
  331. package/example/views/PlacesExample/index.js +94 -94
  332. package/example/views/PopupExample/index.js +78 -78
  333. package/example/views/PopupExample/style.css +18 -18
  334. package/example/views/ProductDetail/index.js +323 -323
  335. package/example/views/ProductImagesExample/index.js +43 -43
  336. package/example/views/ProductOptionExample/index.js +88 -88
  337. package/example/views/ProductShareExample/index.js +51 -51
  338. package/example/views/ProductsListExample/index.js +77 -77
  339. package/example/views/ProductsListingExample/index.js +47 -47
  340. package/example/views/ResetPasswordExample/index.js +60 -60
  341. package/example/views/SearchOptionsExample/index.js +42 -42
  342. package/example/views/SessionManager/index.js +122 -122
  343. package/example/views/Signup/index.js +64 -64
  344. package/example/views/UpsellingPageExample/index.js +35 -35
  345. package/example/views/UserDetailsExample/index.js +69 -69
  346. package/example/views/UserProfile/index.js +73 -73
  347. package/index-example.js +37 -37
  348. package/index.html +13 -13
  349. package/native/index.js +255 -255
  350. package/native/src/NativeStrategy/index.js +20 -20
  351. package/native/src/contexts/OrderingContext/index.js +85 -85
  352. package/package.json +94 -94
  353. package/src/components/AddressDetails/index.js +149 -149
  354. package/src/components/AddressForm/index.js +333 -333
  355. package/src/components/AddressList/index.js +212 -212
  356. package/src/components/Analitycs/index.js +119 -119
  357. package/src/components/AnalyticsSegment/index.js +136 -136
  358. package/src/components/AppleLogin/index.js +164 -164
  359. package/src/components/BaseComponent/index.js +52 -52
  360. package/src/components/BusinessAndProductList/index.js +981 -981
  361. package/src/components/BusinessBasicInformation/index.js +119 -119
  362. package/src/components/BusinessController/index.js +351 -351
  363. package/src/components/BusinessInformation/BusinessOption/index.js +86 -86
  364. package/src/components/BusinessInformation/index.js +93 -93
  365. package/src/components/BusinessList/index.js +670 -670
  366. package/src/components/BusinessMenuListing/index.js +99 -99
  367. package/src/components/BusinessProductsCategories/index.js +60 -60
  368. package/src/components/BusinessProductsSearch/index.js +54 -54
  369. package/src/components/BusinessReviews/index.js +187 -187
  370. package/src/components/BusinessSearchList/index.js +363 -363
  371. package/src/components/BusinessSortControl/index.js +100 -100
  372. package/src/components/BusinessTypeFilter/index.js +142 -142
  373. package/src/components/BusinessesMap/index.js +110 -110
  374. package/src/components/Cart/index.js +210 -210
  375. package/src/components/CartStoresListing/index.js +157 -157
  376. package/src/components/Checkout/index.js +618 -618
  377. package/src/components/CmsContent/index.js +97 -97
  378. package/src/components/Contacts/index.js +512 -512
  379. package/src/components/CouponControl/index.js +171 -171
  380. package/src/components/DragAndDrop/index.js +41 -41
  381. package/src/components/DriverList/index.js +112 -112
  382. package/src/components/DriverTips/index.js +141 -141
  383. package/src/components/Emitter/index.js +36 -36
  384. package/src/components/ExamineClick/index.js +40 -40
  385. package/src/components/FacebookLoginButton/index.js +214 -214
  386. package/src/components/FacebookPixel/index.js +148 -148
  387. package/src/components/FavoriteList/index.js +268 -268
  388. package/src/components/FirebaseGoogleLoginButton/index.js +93 -93
  389. package/src/components/FloatingButton/index.js +70 -70
  390. package/src/components/ForgotPasswordForm/index.js +180 -180
  391. package/src/components/GiftCard/GiftCardOrdersList/index.js +155 -155
  392. package/src/components/GiftCard/PurchaseGiftCard/index.js +123 -123
  393. package/src/components/GiftCard/RedeemGiftCard/index.js +73 -73
  394. package/src/components/GiftCard/SendGiftCard/index.js +78 -78
  395. package/src/components/GoogleAutocompleteInput/index.js +154 -154
  396. package/src/components/GoogleIdentity/index.js +144 -144
  397. package/src/components/GoogleLoginButton/index.js +276 -276
  398. package/src/components/GoogleMaps/index.js +489 -489
  399. package/src/components/GpsButton/index.js +127 -127
  400. package/src/components/LanguageSelector/index.js +163 -163
  401. package/src/components/LoginForm/index.js +521 -521
  402. package/src/components/LogoutAction/index.js +165 -165
  403. package/src/components/MainSearch/index.js +149 -149
  404. package/src/components/MapView/index.js +110 -110
  405. package/src/components/MenuControl/index.js +238 -238
  406. package/src/components/Messages/index.js +166 -166
  407. package/src/components/MomentOption/index.js +322 -322
  408. package/src/components/MultiCartCreate/index.js +70 -70
  409. package/src/components/MultiCartsPaymethodsAndWallets/index.js +201 -201
  410. package/src/components/MultiCheckout/index.js +371 -371
  411. package/src/components/MultiOrdersDetails/index.js +109 -109
  412. package/src/components/MyOrders/index.js +150 -150
  413. package/src/components/MyOrdersList/index.js +104 -104
  414. package/src/components/NewOrderNotification/index.js +30 -30
  415. package/src/components/OrderChange/index.js +128 -128
  416. package/src/components/OrderDetails/index.js +684 -684
  417. package/src/components/OrderList/index.js +781 -781
  418. package/src/components/OrderListGroups/index.js +1168 -1168
  419. package/src/components/OrderReview/index.js +180 -180
  420. package/src/components/OrderTypeControl/index.js +75 -75
  421. package/src/components/OrderVerticalList/index.js +422 -422
  422. package/src/components/OrdersControlFilters/index.js +75 -75
  423. package/src/components/OrdersDashboardComponents/Appointments/index.js +72 -72
  424. package/src/components/OrdersDashboardComponents/BusinessProductsListing/index.js +629 -629
  425. package/src/components/OrdersDashboardComponents/CheckPassword/index.js +177 -177
  426. package/src/components/OrdersDashboardComponents/CityList/index.js +98 -98
  427. package/src/components/OrdersDashboardComponents/CountryList/index.js +162 -162
  428. package/src/components/OrdersDashboardComponents/CustomOrderDetails/index.js +238 -238
  429. package/src/components/OrdersDashboardComponents/DashboardBusinessList/index.js +617 -617
  430. package/src/components/OrdersDashboardComponents/DashboardOrdersList/index.js +943 -943
  431. package/src/components/OrdersDashboardComponents/DriversList/index.js +448 -448
  432. package/src/components/OrdersDashboardComponents/ExportCSV/index.js +192 -192
  433. package/src/components/OrdersDashboardComponents/GiftCardsList/index.js +189 -189
  434. package/src/components/OrdersDashboardComponents/GoogleMapsApiKeySetting/index.js +77 -77
  435. package/src/components/OrdersDashboardComponents/LogisticInformation/index.js +97 -97
  436. package/src/components/OrdersDashboardComponents/Logistics/index.js +174 -174
  437. package/src/components/OrdersDashboardComponents/Messages/index.js +384 -384
  438. package/src/components/OrdersDashboardComponents/MetaFields/index.js +186 -186
  439. package/src/components/OrdersDashboardComponents/OrderDetails/index.js +404 -404
  440. package/src/components/OrdersDashboardComponents/OrderNotification/index.js +70 -70
  441. package/src/components/OrdersDashboardComponents/OrdersFilter/index.js +362 -362
  442. package/src/components/OrdersDashboardComponents/OrdersManage/index.js +873 -873
  443. package/src/components/OrdersDashboardComponents/PointsWalletLevels/index.js +123 -123
  444. package/src/components/OrdersDashboardComponents/ReviewCustomer/index.js +113 -113
  445. package/src/components/OrdersDashboardComponents/Schedule/index.js +315 -315
  446. package/src/components/OrdersDashboardComponents/SettingsList/index.js +298 -298
  447. package/src/components/OrdersDashboardComponents/UserFormDetails/index.js +463 -463
  448. package/src/components/OrdersDashboardComponents/UsersList/index.js +944 -944
  449. package/src/components/OrdersDashboardComponents/WebsocketStatus/index.js +77 -77
  450. package/src/components/OrdersDashboardComponents/index.js +57 -57
  451. package/src/components/PageBanner/index.js +107 -107
  452. package/src/components/PaymentOptionCash/index.js +74 -74
  453. package/src/components/PaymentOptionPaypal/index.js +146 -146
  454. package/src/components/PaymentOptionSquare/index.js +336 -336
  455. package/src/components/PaymentOptionStripe/index.js +289 -289
  456. package/src/components/PaymentOptionStripeDirect/index.js +116 -116
  457. package/src/components/PaymentOptionStripeRedirect/StripeRedirectForm/index.js +71 -71
  458. package/src/components/PaymentOptionStripeRedirect/index.js +122 -122
  459. package/src/components/PaymentOptionWallet/index.js +185 -185
  460. package/src/components/PaymentOptions/index.js +248 -248
  461. package/src/components/PaymethodList/index.js +119 -119
  462. package/src/components/PhoneAutocomplete/index.js +311 -308
  463. package/src/components/PlaceSpot/index.js +176 -176
  464. package/src/components/Popup/index.js +169 -169
  465. package/src/components/ProductComponent/index.js +269 -269
  466. package/src/components/ProductForm/index.js +1090 -1090
  467. package/src/components/ProductImages/index.js +64 -64
  468. package/src/components/ProductIngredient/index.js +72 -72
  469. package/src/components/ProductOption/index.js +42 -42
  470. package/src/components/ProductOptionSuboption/index.js +180 -180
  471. package/src/components/ProductShare/index.js +97 -97
  472. package/src/components/ProductsList/index.js +74 -74
  473. package/src/components/ProductsListing/index.js +166 -166
  474. package/src/components/ProfessionalInfo/index.js +156 -156
  475. package/src/components/PromotionsController/index.js +123 -123
  476. package/src/components/QueryLoginSpoonity/index.js +159 -159
  477. package/src/components/ReCaptcha/index.js +53 -53
  478. package/src/components/ResetPassword/index.js +111 -111
  479. package/src/components/ReviewCustomer/index.js +117 -117
  480. package/src/components/ReviewDriver/index.js +157 -157
  481. package/src/components/ReviewProduct/index.js +162 -162
  482. package/src/components/SearchOptions/index.js +69 -69
  483. package/src/components/Sessions/index.js +217 -217
  484. package/src/components/SignupForm/index.js +547 -547
  485. package/src/components/SingleBusinessCard/index.js +80 -80
  486. package/src/components/SingleOrderCard/index.js +160 -160
  487. package/src/components/SingleProductCard/index.js +130 -130
  488. package/src/components/SingleProfessionalCard/index.js +121 -121
  489. package/src/components/SmartAppBanner/index.js +71 -71
  490. package/src/components/StoreProductList/index.js +303 -303
  491. package/src/components/StripeElementsForm/CardForm/index.js +248 -248
  492. package/src/components/StripeElementsForm/index.js +78 -78
  493. package/src/components/UpsellingPage/index.js +120 -120
  494. package/src/components/UserFormDetails/index.js +688 -688
  495. package/src/components/UserVerification/index.js +242 -242
  496. package/src/components/WalletList/index.js +160 -160
  497. package/src/components/WebsocketStatus/index.js +80 -80
  498. package/src/components/WrapperGoogleMaps/index.js +67 -67
  499. package/src/constants/code-numbers.js +218 -218
  500. package/src/constants/timezones.js +427 -427
  501. package/src/contexts/ApiContext/index.js +59 -59
  502. package/src/contexts/BillingContext/index.js +28 -28
  503. package/src/contexts/BusinessContext/index.js +71 -71
  504. package/src/contexts/ConfigContext/index.js +215 -215
  505. package/src/contexts/CustomerContext/index.js +69 -69
  506. package/src/contexts/EventContext/index.js +31 -31
  507. package/src/contexts/LanguageContext/index.js +144 -144
  508. package/src/contexts/OptimizationLoadContext/index.js +95 -95
  509. package/src/contexts/OrderContext/index.js +1448 -1448
  510. package/src/contexts/OrderingContext/index.js +86 -86
  511. package/src/contexts/OrderingThemeContext/index.js +107 -107
  512. package/src/contexts/ProductContext/index.js +62 -62
  513. package/src/contexts/SessionContext/index.js +172 -172
  514. package/src/contexts/SiteContext/index.js +79 -79
  515. package/src/contexts/ToastContext/index.js +42 -42
  516. package/src/contexts/UtilsContext/index.js +352 -352
  517. package/src/contexts/ValidationsFieldsContext/index.js +65 -65
  518. package/src/contexts/WebsocketContext/index.js +91 -91
  519. package/src/contexts/WebsocketContext/socket.js +92 -92
  520. package/src/index.js +369 -369
  521. package/src/utils/index.js +32 -32
  522. package/src/webStrategy/index.js +18 -18
  523. package/webpack.dev.js +41 -41
  524. package/webpack.prod.js +64 -64
  525. /package/_bundles/{0.ordering-component.05c8990567699e368292.js → 0.ordering-component.e2e1eb6df6c8a20c9636.js} +0 -0
  526. /package/_bundles/{1.ordering-component.05c8990567699e368292.js → 1.ordering-component.e2e1eb6df6c8a20c9636.js} +0 -0
  527. /package/_bundles/{2.ordering-component.05c8990567699e368292.js → 2.ordering-component.e2e1eb6df6c8a20c9636.js} +0 -0
  528. /package/_bundles/{4.ordering-component.05c8990567699e368292.js → 4.ordering-component.e2e1eb6df6c8a20c9636.js} +0 -0
  529. /package/_bundles/{5.ordering-component.05c8990567699e368292.js → 5.ordering-component.e2e1eb6df6c8a20c9636.js} +0 -0
  530. /package/_bundles/{6.ordering-component.05c8990567699e368292.js → 6.ordering-component.e2e1eb6df6c8a20c9636.js} +0 -0
  531. /package/_bundles/{7.ordering-component.05c8990567699e368292.js.LICENSE.txt → 7.ordering-component.e2e1eb6df6c8a20c9636.js.LICENSE.txt} +0 -0
  532. /package/_bundles/{8.ordering-component.05c8990567699e368292.js → 8.ordering-component.e2e1eb6df6c8a20c9636.js} +0 -0
  533. /package/_bundles/{ordering-component.05c8990567699e368292.js.LICENSE.txt → ordering-component.e2e1eb6df6c8a20c9636.js.LICENSE.txt} +0 -0
@@ -1,371 +1,371 @@
1
- import React, { useState, useEffect } from 'react'
2
- import PropTypes from 'prop-types'
3
-
4
- import { useOrder } from '../../contexts/OrderContext'
5
- import { useApi } from '../../contexts/ApiContext'
6
- import { useSession } from '../../contexts/SessionContext'
7
- import { useToast, ToastType } from '../../contexts/ToastContext'
8
- import { useLanguage } from '../../contexts/LanguageContext'
9
- import { useWebsocket } from '../../contexts/WebsocketContext'
10
-
11
- /**
12
- * Component to manage Multi businesses checkout page behavior without UI component
13
- */
14
- export const MultiCheckout = (props) => {
15
- const {
16
- UIComponent,
17
- onPlaceOrderClick,
18
- cartUuid,
19
- userId,
20
- actionsBeforePlace
21
- } = props
22
-
23
- const qParams = userId ? `?user_id=${userId}` : ''
24
-
25
- const [ordering] = useApi()
26
- const socket = useWebsocket()
27
- /**
28
- * Session content
29
- */
30
- const [{ token }] = useSession()
31
- const [{ carts }, { placeMultiCarts }] = useOrder()
32
- /**
33
- * Toast state
34
- */
35
- const [, { showToast }] = useToast()
36
- const [, t] = useLanguage()
37
- /**
38
- * Delivery Instructions options
39
- */
40
- const [instructionsOptions, setInstructionsOptions] = useState({ loading: false, result: [{ id: null, enabled: true, name: t('EITHER_WAY', 'Either way') }], error: null })
41
- /**
42
- * Delivery instructions selected
43
- */
44
- const [deliveryOptionSelected, setDeliveryOptionSelected] = useState(undefined)
45
- const [loyaltyPlansState, setLoyaltyPlansState] = useState({ loading: true, error: null, result: [] })
46
-
47
- const [placing, setPlacing] = useState(false)
48
- const [paymethodSelected, setPaymethodSelected] = useState({})
49
- const [cartGroup, setCartGroup] = useState({ loading: true, error: null, result: null })
50
- const [walletState, setWalletState] = useState({ loading: false, error: null, result: null })
51
- const [checkoutFieldsState, setCheckoutFieldsState] = useState({ fields: [], loading: false, error: null })
52
-
53
- const openCarts = (cartGroup?.result?.carts?.filter(cart => cart?.valid && cart?.status !== 1 && cart?.business_id) || null) || []
54
- const cartsInvalid = (cartGroup?.result?.carts?.filter(cart => cart?.status !== 1) || null) || []
55
- const totalCartsPrice = openCarts?.length && openCarts.reduce((total, cart) => { return total + cart?.total }, 0)
56
- const totalCartsFee = openCarts?.length && openCarts?.filter(cart => cart?.status !== 1 && cart?.valid)?.reduce((total, cart) => { return total + (cart?.delivery_price_with_discount) }, 0)
57
-
58
- const handleGroupPlaceOrder = async (confirmPayment) => {
59
- let paymethodData = paymethodSelected?.paymethod_data
60
- if (paymethodSelected?.paymethod_data && ['stripe', 'stripe_connect', 'stripe_direct'].includes(paymethodSelected?.paymethod?.gateway)) {
61
- paymethodData = JSON.stringify({
62
- source_id: paymethodSelected?.paymethod_data?.id
63
- })
64
- }
65
- let payload = {
66
- amount: cartGroup?.result?.balance
67
- }
68
- if (paymethodSelected?.paymethod) {
69
- payload = {
70
- ...payload,
71
- paymethod_id: paymethodSelected?.paymethod?.id || paymethodSelected?.id
72
- }
73
- }
74
- if (paymethodData) {
75
- payload = {
76
- ...payload,
77
- paymethod_data: paymethodData
78
- }
79
- }
80
- if (paymethodSelected?.wallet_id) {
81
- payload = {
82
- ...payload,
83
- wallet_id: paymethodSelected.wallet_id,
84
- wallet_data: paymethodSelected.wallet_data
85
- }
86
- }
87
- setPlacing(true)
88
- const { error, result } = await placeMultiCarts(payload, cartUuid)
89
-
90
- if (error) return
91
-
92
- if (result?.paymethod_data?.status === 2 && actionsBeforePlace) {
93
- await actionsBeforePlace(paymethodSelected, result)
94
- }
95
-
96
- if (confirmPayment && paymethodSelected?.gateway === 'global_apple_pay') {
97
- const paymentEvent = result?.payment_events?.find(event => event?.data?.extra?.client_secret)
98
- if (paymentEvent?.data?.extra?.client_secret) {
99
- const { error: confirmApplePayError } = await confirmPayment(paymentEvent?.data?.extra?.client_secret)
100
- if (confirmApplePayError?.message || confirmApplePayError?.localizedMessage) {
101
- showToast(ToastType.Error, confirmApplePayError?.message || confirmApplePayError?.localizedMessage)
102
- }
103
- }
104
- setPlacing(false)
105
- if (!error) {
106
- onPlaceOrderClick && onPlaceOrderClick(result)
107
- }
108
- }
109
- setPlacing(false)
110
- if (!error) {
111
- onPlaceOrderClick && onPlaceOrderClick(result)
112
- }
113
- }
114
-
115
- const handleSelectPaymethod = (paymethod) => {
116
- setPaymethodSelected(paymethod === null ? {} : {
117
- ...paymethodSelected,
118
- ...paymethod,
119
- paymethod_data: paymethod?.paymethod_data
120
- })
121
- }
122
-
123
- const handleSelectWallet = async (isChecked, wallet) => {
124
- setWalletState({ ...walletState, loading: true, error: null })
125
- const url = isChecked
126
- ? `${ordering.root}/cart_groups/${cartGroup?.result?.uuid}/wallets`
127
- : `${ordering.root}/cart_groups/${cartGroup?.result?.uuid}/wallets/${wallet.id}`
128
- try {
129
- const response = await fetch(url,
130
- {
131
- method: isChecked ? 'POST' : 'DELETE',
132
- headers: {
133
- 'Content-Type': 'application/json',
134
- Authorization: `Bearer ${token}`,
135
- 'X-App-X': ordering.appId,
136
- 'X-Socket-Id-X': socket?.getId()
137
- },
138
- ...(isChecked && {
139
- body: JSON.stringify({
140
- wallet_id: wallet.id
141
- })
142
- })
143
- }
144
- )
145
- const { error, result } = await response.json()
146
- if (!error) {
147
- setCartGroup({
148
- ...cartGroup,
149
- result: {
150
- ...cartGroup.result,
151
- wallets: result?.wallets,
152
- payment_events: result?.payment_events,
153
- balance: result?.balance
154
- }
155
- })
156
- }
157
- setWalletState({
158
- ...walletState,
159
- loading: false,
160
- error: error ? result : null,
161
- result: error ? null : result,
162
- })
163
- } catch (err) {
164
- setWalletState({
165
- ...walletState,
166
- loading: false,
167
- error: err?.message ?? err
168
- })
169
- }
170
- }
171
-
172
- const handlePaymethodDataChange = (data) => {
173
- setPaymethodSelected({
174
- ...paymethodSelected,
175
- paymethod_data: data
176
- })
177
- }
178
-
179
- const getDeliveryOptions = async () => {
180
- try {
181
- const response = await fetch(`${ordering.root}/delivery_options${qParams}`, {
182
- method: 'GET',
183
- headers: {
184
- 'Content-Type': 'application/json',
185
- Authorization: `bearer ${token}`,
186
- 'X-App-X': ordering.appId,
187
- 'X-Socket-Id-X': socket?.getId()
188
- }
189
- })
190
- const { result, error } = await response.json()
191
- if (!error) {
192
- setInstructionsOptions({ loading: false, result: [...instructionsOptions.result, ...result] })
193
- return
194
- }
195
- setInstructionsOptions({ loading: false, error: true, result })
196
- showToast(ToastType.Error, result)
197
- } catch (err) {
198
- setInstructionsOptions({ loading: false, error: true, result: err.message })
199
- showToast(ToastType.Error, err.message)
200
- }
201
- }
202
-
203
- const multiHandleChangeDeliveryOption = async (value, cartUuidArr) => {
204
- try {
205
- const allPromise = cartUuidArr.map(cartId => {
206
- return new Promise(async (resolve, reject) => {
207
- const body = { delivery_option_id: value }
208
- if (userId) body.user_id = userId
209
- const response = await fetch(`${ordering.root}/carts/${cartId}`, {
210
- method: 'PUT',
211
- headers: {
212
- 'Content-Type': 'application/json',
213
- Authorization: `bearer ${token}`,
214
- 'X-App-X': ordering.appId,
215
- 'X-Socket-Id-X': socket?.getId()
216
- },
217
- body: JSON.stringify(body)
218
- })
219
- const { result, error } = await response.json()
220
- if (!error && result?.delivery_option_id === value) {
221
- resolve(result)
222
- } else {
223
- reject(false)
224
- }
225
- })
226
- })
227
- await Promise.all(allPromise) && setDeliveryOptionSelected(value)
228
- } catch (err) {
229
- showToast(ToastType.Error, err.message)
230
- }
231
- }
232
-
233
- const handleChangeDeliveryOption = async (value) => {
234
- const cartUuidArr = openCarts.map(cart => cart?.uuid)
235
- multiHandleChangeDeliveryOption(value, cartUuidArr)
236
- }
237
-
238
- const getMultiCart = async () => {
239
- try {
240
- if (!cartUuid) return
241
- setCartGroup({
242
- ...cartGroup,
243
- loading: true
244
- })
245
- const response = await fetch(`${ordering.root}/cart_groups/${cartUuid}${qParams}`, {
246
- method: 'GET',
247
- headers: {
248
- 'Content-Type': 'application/json',
249
- Authorization: `bearer ${token}`,
250
- 'X-App-X': ordering.appId,
251
- 'X-Socket-Id-X': socket?.getId()
252
- }
253
- })
254
- const { result, error } = await response.json()
255
- setCartGroup({
256
- ...cartGroup,
257
- loading: false,
258
- result,
259
- error
260
- })
261
- } catch (err) {
262
- setCartGroup({
263
- ...cartGroup,
264
- loading: false,
265
- error: err.message
266
- })
267
- }
268
- }
269
-
270
- const getLoyaltyPlans = async () => {
271
- try {
272
- const req = await fetch(`${ordering.root}/loyalty_plans`,
273
- {
274
- method: 'GET',
275
- headers: {
276
- 'Content-Type': 'application/json',
277
- Authorization: `Bearer ${token}`,
278
- 'X-App-X': ordering.appId,
279
- 'X-Socket-Id-X': socket?.getId()
280
- }
281
- }
282
- )
283
- const { error, result } = await req.json()
284
- setLoyaltyPlansState({
285
- ...loyaltyPlansState,
286
- loading: false,
287
- result: error ? [] : result,
288
- rewardRate: result?.find(loyal => loyal.type === 'credit_point')?.accumulation_rate ?? 0
289
- })
290
- } catch (error) {
291
- setLoyaltyPlansState({
292
- ...loyaltyPlansState,
293
- loading: false,
294
- result: []
295
- })
296
- }
297
- }
298
-
299
- const getValidationFieldOrderTypes = async () => {
300
- try {
301
- setCheckoutFieldsState({ ...checkoutFieldsState, loading: true })
302
-
303
- const requestOptions = {
304
- method: 'GET',
305
- headers: {
306
- 'Content-Type': 'application/json',
307
- Authorization: `Bearer ${token}`
308
- }
309
- }
310
- const response = await fetch(`${ordering.root}/validation_field_order_types`, requestOptions)
311
- const content = await response.json()
312
- if (!content?.error) {
313
- setCheckoutFieldsState({ fields: content?.result, loading: false })
314
- } else {
315
- setCheckoutFieldsState({ ...checkoutFieldsState, loading: false, error: content?.result })
316
- }
317
- } catch (err) {
318
- setCheckoutFieldsState({ ...checkoutFieldsState, loading: false, error: [err.message] })
319
- }
320
- }
321
-
322
- useEffect(() => {
323
- if (deliveryOptionSelected === undefined) {
324
- setDeliveryOptionSelected(null)
325
- }
326
- }, [instructionsOptions])
327
-
328
- useEffect(() => {
329
- Promise.any([getDeliveryOptions(), getLoyaltyPlans()])
330
- getValidationFieldOrderTypes()
331
- }, [])
332
-
333
- useEffect(() => {
334
- getMultiCart()
335
- }, [JSON.stringify(carts)])
336
-
337
- return (
338
- <>
339
- {UIComponent && (
340
- <UIComponent
341
- {...props}
342
- placing={placing}
343
- openCarts={openCarts}
344
- rewardRate={loyaltyPlansState?.rewardRate}
345
- loyaltyPlansState={loyaltyPlansState}
346
- totalCartsPrice={totalCartsPrice}
347
- paymethodSelected={paymethodSelected}
348
- handleSelectPaymethod={handleSelectPaymethod}
349
- handleGroupPlaceOrder={handleGroupPlaceOrder}
350
- handleSelectWallet={handleSelectWallet}
351
- handlePaymethodDataChange={handlePaymethodDataChange}
352
- handleChangeDeliveryOption={handleChangeDeliveryOption}
353
- deliveryOptionSelected={deliveryOptionSelected}
354
- instructionsOptions={instructionsOptions}
355
- cartGroup={cartGroup}
356
- walletState={walletState}
357
- totalCartsFee={totalCartsFee}
358
- cartsInvalid={cartsInvalid}
359
- checkoutFieldsState={checkoutFieldsState}
360
- />
361
- )}
362
- </>
363
- )
364
- }
365
-
366
- MultiCheckout.propTypes = {
367
- /**
368
- * UI Component, this must be containt all graphic elements and use parent props
369
- */
370
- UIComponent: PropTypes.elementType
371
- }
1
+ import React, { useState, useEffect } from 'react'
2
+ import PropTypes from 'prop-types'
3
+
4
+ import { useOrder } from '../../contexts/OrderContext'
5
+ import { useApi } from '../../contexts/ApiContext'
6
+ import { useSession } from '../../contexts/SessionContext'
7
+ import { useToast, ToastType } from '../../contexts/ToastContext'
8
+ import { useLanguage } from '../../contexts/LanguageContext'
9
+ import { useWebsocket } from '../../contexts/WebsocketContext'
10
+
11
+ /**
12
+ * Component to manage Multi businesses checkout page behavior without UI component
13
+ */
14
+ export const MultiCheckout = (props) => {
15
+ const {
16
+ UIComponent,
17
+ onPlaceOrderClick,
18
+ cartUuid,
19
+ userId,
20
+ actionsBeforePlace
21
+ } = props
22
+
23
+ const qParams = userId ? `?user_id=${userId}` : ''
24
+
25
+ const [ordering] = useApi()
26
+ const socket = useWebsocket()
27
+ /**
28
+ * Session content
29
+ */
30
+ const [{ token }] = useSession()
31
+ const [{ carts }, { placeMultiCarts }] = useOrder()
32
+ /**
33
+ * Toast state
34
+ */
35
+ const [, { showToast }] = useToast()
36
+ const [, t] = useLanguage()
37
+ /**
38
+ * Delivery Instructions options
39
+ */
40
+ const [instructionsOptions, setInstructionsOptions] = useState({ loading: false, result: [{ id: null, enabled: true, name: t('EITHER_WAY', 'Either way') }], error: null })
41
+ /**
42
+ * Delivery instructions selected
43
+ */
44
+ const [deliveryOptionSelected, setDeliveryOptionSelected] = useState(undefined)
45
+ const [loyaltyPlansState, setLoyaltyPlansState] = useState({ loading: true, error: null, result: [] })
46
+
47
+ const [placing, setPlacing] = useState(false)
48
+ const [paymethodSelected, setPaymethodSelected] = useState({})
49
+ const [cartGroup, setCartGroup] = useState({ loading: true, error: null, result: null })
50
+ const [walletState, setWalletState] = useState({ loading: false, error: null, result: null })
51
+ const [checkoutFieldsState, setCheckoutFieldsState] = useState({ fields: [], loading: false, error: null })
52
+
53
+ const openCarts = (cartGroup?.result?.carts?.filter(cart => cart?.valid && cart?.status !== 1 && cart?.business_id) || null) || []
54
+ const cartsInvalid = (cartGroup?.result?.carts?.filter(cart => cart?.status !== 1) || null) || []
55
+ const totalCartsPrice = openCarts?.length && openCarts.reduce((total, cart) => { return total + cart?.total }, 0)
56
+ const totalCartsFee = openCarts?.length && openCarts?.filter(cart => cart?.status !== 1 && cart?.valid)?.reduce((total, cart) => { return total + (cart?.delivery_price_with_discount) }, 0)
57
+
58
+ const handleGroupPlaceOrder = async (confirmPayment) => {
59
+ let paymethodData = paymethodSelected?.paymethod_data
60
+ if (paymethodSelected?.paymethod_data && ['stripe', 'stripe_connect', 'stripe_direct'].includes(paymethodSelected?.paymethod?.gateway)) {
61
+ paymethodData = JSON.stringify({
62
+ source_id: paymethodSelected?.paymethod_data?.id
63
+ })
64
+ }
65
+ let payload = {
66
+ amount: cartGroup?.result?.balance
67
+ }
68
+ if (paymethodSelected?.paymethod) {
69
+ payload = {
70
+ ...payload,
71
+ paymethod_id: paymethodSelected?.paymethod?.id || paymethodSelected?.id
72
+ }
73
+ }
74
+ if (paymethodData) {
75
+ payload = {
76
+ ...payload,
77
+ paymethod_data: paymethodData
78
+ }
79
+ }
80
+ if (paymethodSelected?.wallet_id) {
81
+ payload = {
82
+ ...payload,
83
+ wallet_id: paymethodSelected.wallet_id,
84
+ wallet_data: paymethodSelected.wallet_data
85
+ }
86
+ }
87
+ setPlacing(true)
88
+ const { error, result } = await placeMultiCarts(payload, cartUuid)
89
+
90
+ if (error) return
91
+
92
+ if (result?.paymethod_data?.status === 2 && actionsBeforePlace) {
93
+ await actionsBeforePlace(paymethodSelected, result)
94
+ }
95
+
96
+ if (confirmPayment && paymethodSelected?.gateway === 'global_apple_pay') {
97
+ const paymentEvent = result?.payment_events?.find(event => event?.data?.extra?.client_secret)
98
+ if (paymentEvent?.data?.extra?.client_secret) {
99
+ const { error: confirmApplePayError } = await confirmPayment(paymentEvent?.data?.extra?.client_secret)
100
+ if (confirmApplePayError?.message || confirmApplePayError?.localizedMessage) {
101
+ showToast(ToastType.Error, confirmApplePayError?.message || confirmApplePayError?.localizedMessage)
102
+ }
103
+ }
104
+ setPlacing(false)
105
+ if (!error) {
106
+ onPlaceOrderClick && onPlaceOrderClick(result)
107
+ }
108
+ }
109
+ setPlacing(false)
110
+ if (!error) {
111
+ onPlaceOrderClick && onPlaceOrderClick(result)
112
+ }
113
+ }
114
+
115
+ const handleSelectPaymethod = (paymethod) => {
116
+ setPaymethodSelected(paymethod === null ? {} : {
117
+ ...paymethodSelected,
118
+ ...paymethod,
119
+ paymethod_data: paymethod?.paymethod_data
120
+ })
121
+ }
122
+
123
+ const handleSelectWallet = async (isChecked, wallet) => {
124
+ setWalletState({ ...walletState, loading: true, error: null })
125
+ const url = isChecked
126
+ ? `${ordering.root}/cart_groups/${cartGroup?.result?.uuid}/wallets`
127
+ : `${ordering.root}/cart_groups/${cartGroup?.result?.uuid}/wallets/${wallet.id}`
128
+ try {
129
+ const response = await fetch(url,
130
+ {
131
+ method: isChecked ? 'POST' : 'DELETE',
132
+ headers: {
133
+ 'Content-Type': 'application/json',
134
+ Authorization: `Bearer ${token}`,
135
+ 'X-App-X': ordering.appId,
136
+ 'X-Socket-Id-X': socket?.getId()
137
+ },
138
+ ...(isChecked && {
139
+ body: JSON.stringify({
140
+ wallet_id: wallet.id
141
+ })
142
+ })
143
+ }
144
+ )
145
+ const { error, result } = await response.json()
146
+ if (!error) {
147
+ setCartGroup({
148
+ ...cartGroup,
149
+ result: {
150
+ ...cartGroup.result,
151
+ wallets: result?.wallets,
152
+ payment_events: result?.payment_events,
153
+ balance: result?.balance
154
+ }
155
+ })
156
+ }
157
+ setWalletState({
158
+ ...walletState,
159
+ loading: false,
160
+ error: error ? result : null,
161
+ result: error ? null : result,
162
+ })
163
+ } catch (err) {
164
+ setWalletState({
165
+ ...walletState,
166
+ loading: false,
167
+ error: err?.message ?? err
168
+ })
169
+ }
170
+ }
171
+
172
+ const handlePaymethodDataChange = (data) => {
173
+ setPaymethodSelected({
174
+ ...paymethodSelected,
175
+ paymethod_data: data
176
+ })
177
+ }
178
+
179
+ const getDeliveryOptions = async () => {
180
+ try {
181
+ const response = await fetch(`${ordering.root}/delivery_options${qParams}`, {
182
+ method: 'GET',
183
+ headers: {
184
+ 'Content-Type': 'application/json',
185
+ Authorization: `bearer ${token}`,
186
+ 'X-App-X': ordering.appId,
187
+ 'X-Socket-Id-X': socket?.getId()
188
+ }
189
+ })
190
+ const { result, error } = await response.json()
191
+ if (!error) {
192
+ setInstructionsOptions({ loading: false, result: [...instructionsOptions.result, ...result] })
193
+ return
194
+ }
195
+ setInstructionsOptions({ loading: false, error: true, result })
196
+ showToast(ToastType.Error, result)
197
+ } catch (err) {
198
+ setInstructionsOptions({ loading: false, error: true, result: err.message })
199
+ showToast(ToastType.Error, err.message)
200
+ }
201
+ }
202
+
203
+ const multiHandleChangeDeliveryOption = async (value, cartUuidArr) => {
204
+ try {
205
+ const allPromise = cartUuidArr.map(cartId => {
206
+ return new Promise(async (resolve, reject) => {
207
+ const body = { delivery_option_id: value }
208
+ if (userId) body.user_id = userId
209
+ const response = await fetch(`${ordering.root}/carts/${cartId}`, {
210
+ method: 'PUT',
211
+ headers: {
212
+ 'Content-Type': 'application/json',
213
+ Authorization: `bearer ${token}`,
214
+ 'X-App-X': ordering.appId,
215
+ 'X-Socket-Id-X': socket?.getId()
216
+ },
217
+ body: JSON.stringify(body)
218
+ })
219
+ const { result, error } = await response.json()
220
+ if (!error && result?.delivery_option_id === value) {
221
+ resolve(result)
222
+ } else {
223
+ reject(false)
224
+ }
225
+ })
226
+ })
227
+ await Promise.all(allPromise) && setDeliveryOptionSelected(value)
228
+ } catch (err) {
229
+ showToast(ToastType.Error, err.message)
230
+ }
231
+ }
232
+
233
+ const handleChangeDeliveryOption = async (value) => {
234
+ const cartUuidArr = openCarts.map(cart => cart?.uuid)
235
+ multiHandleChangeDeliveryOption(value, cartUuidArr)
236
+ }
237
+
238
+ const getMultiCart = async () => {
239
+ try {
240
+ if (!cartUuid) return
241
+ setCartGroup({
242
+ ...cartGroup,
243
+ loading: true
244
+ })
245
+ const response = await fetch(`${ordering.root}/cart_groups/${cartUuid}${qParams}`, {
246
+ method: 'GET',
247
+ headers: {
248
+ 'Content-Type': 'application/json',
249
+ Authorization: `bearer ${token}`,
250
+ 'X-App-X': ordering.appId,
251
+ 'X-Socket-Id-X': socket?.getId()
252
+ }
253
+ })
254
+ const { result, error } = await response.json()
255
+ setCartGroup({
256
+ ...cartGroup,
257
+ loading: false,
258
+ result,
259
+ error
260
+ })
261
+ } catch (err) {
262
+ setCartGroup({
263
+ ...cartGroup,
264
+ loading: false,
265
+ error: err.message
266
+ })
267
+ }
268
+ }
269
+
270
+ const getLoyaltyPlans = async () => {
271
+ try {
272
+ const req = await fetch(`${ordering.root}/loyalty_plans`,
273
+ {
274
+ method: 'GET',
275
+ headers: {
276
+ 'Content-Type': 'application/json',
277
+ Authorization: `Bearer ${token}`,
278
+ 'X-App-X': ordering.appId,
279
+ 'X-Socket-Id-X': socket?.getId()
280
+ }
281
+ }
282
+ )
283
+ const { error, result } = await req.json()
284
+ setLoyaltyPlansState({
285
+ ...loyaltyPlansState,
286
+ loading: false,
287
+ result: error ? [] : result,
288
+ rewardRate: result?.find(loyal => loyal.type === 'credit_point')?.accumulation_rate ?? 0
289
+ })
290
+ } catch (error) {
291
+ setLoyaltyPlansState({
292
+ ...loyaltyPlansState,
293
+ loading: false,
294
+ result: []
295
+ })
296
+ }
297
+ }
298
+
299
+ const getValidationFieldOrderTypes = async () => {
300
+ try {
301
+ setCheckoutFieldsState({ ...checkoutFieldsState, loading: true })
302
+
303
+ const requestOptions = {
304
+ method: 'GET',
305
+ headers: {
306
+ 'Content-Type': 'application/json',
307
+ Authorization: `Bearer ${token}`
308
+ }
309
+ }
310
+ const response = await fetch(`${ordering.root}/validation_field_order_types`, requestOptions)
311
+ const content = await response.json()
312
+ if (!content?.error) {
313
+ setCheckoutFieldsState({ fields: content?.result, loading: false })
314
+ } else {
315
+ setCheckoutFieldsState({ ...checkoutFieldsState, loading: false, error: content?.result })
316
+ }
317
+ } catch (err) {
318
+ setCheckoutFieldsState({ ...checkoutFieldsState, loading: false, error: [err.message] })
319
+ }
320
+ }
321
+
322
+ useEffect(() => {
323
+ if (deliveryOptionSelected === undefined) {
324
+ setDeliveryOptionSelected(null)
325
+ }
326
+ }, [instructionsOptions])
327
+
328
+ useEffect(() => {
329
+ Promise.any([getDeliveryOptions(), getLoyaltyPlans()])
330
+ getValidationFieldOrderTypes()
331
+ }, [])
332
+
333
+ useEffect(() => {
334
+ getMultiCart()
335
+ }, [JSON.stringify(carts)])
336
+
337
+ return (
338
+ <>
339
+ {UIComponent && (
340
+ <UIComponent
341
+ {...props}
342
+ placing={placing}
343
+ openCarts={openCarts}
344
+ rewardRate={loyaltyPlansState?.rewardRate}
345
+ loyaltyPlansState={loyaltyPlansState}
346
+ totalCartsPrice={totalCartsPrice}
347
+ paymethodSelected={paymethodSelected}
348
+ handleSelectPaymethod={handleSelectPaymethod}
349
+ handleGroupPlaceOrder={handleGroupPlaceOrder}
350
+ handleSelectWallet={handleSelectWallet}
351
+ handlePaymethodDataChange={handlePaymethodDataChange}
352
+ handleChangeDeliveryOption={handleChangeDeliveryOption}
353
+ deliveryOptionSelected={deliveryOptionSelected}
354
+ instructionsOptions={instructionsOptions}
355
+ cartGroup={cartGroup}
356
+ walletState={walletState}
357
+ totalCartsFee={totalCartsFee}
358
+ cartsInvalid={cartsInvalid}
359
+ checkoutFieldsState={checkoutFieldsState}
360
+ />
361
+ )}
362
+ </>
363
+ )
364
+ }
365
+
366
+ MultiCheckout.propTypes = {
367
+ /**
368
+ * UI Component, this must be containt all graphic elements and use parent props
369
+ */
370
+ UIComponent: PropTypes.elementType
371
+ }