ordering-ui-react-native 0.17.48 → 0.17.49-release

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 (219) hide show
  1. package/package.json +8 -7
  2. package/src/DeliveryApp.tsx +43 -1
  3. package/src/components/BusinessesListing/index.tsx +1 -1
  4. package/src/components/OrderCreating/index.tsx +1 -21
  5. package/src/components/PaymentOptionsWebView/index.tsx +29 -8
  6. package/src/components/PhoneInputNumber/index.tsx +6 -2
  7. package/src/components/StripeMethodForm/index.tsx +136 -102
  8. package/src/components/VerifyPhone/styles.tsx +1 -2
  9. package/src/components/shared/OToast.tsx +4 -4
  10. package/src/types/index.tsx +5 -0
  11. package/src/utils/index.tsx +7 -1
  12. package/themes/business/index.tsx +2 -0
  13. package/themes/business/src/components/AcceptOrRejectOrder/index.tsx +265 -240
  14. package/themes/business/src/components/AcceptOrRejectOrder/styles.tsx +6 -4
  15. package/themes/business/src/components/BusinessController/index.tsx +0 -1
  16. package/themes/business/src/components/Chat/index.tsx +125 -113
  17. package/themes/business/src/components/DriverMap/index.tsx +17 -6
  18. package/themes/business/src/components/DriverSchedule/index.tsx +29 -2
  19. package/themes/business/src/components/GoogleMap/index.tsx +58 -57
  20. package/themes/business/src/components/LoginForm/Otp/index.tsx +120 -0
  21. package/themes/business/src/components/LoginForm/Otp/styles.tsx +7 -0
  22. package/themes/business/src/components/LoginForm/index.tsx +238 -80
  23. package/themes/business/src/components/LoginForm/styles.tsx +10 -0
  24. package/themes/business/src/components/MapView/index.tsx +10 -10
  25. package/themes/business/src/components/NewOrderNotification/index.tsx +49 -50
  26. package/themes/business/src/components/OrderDetails/Delivery.tsx +27 -3
  27. package/themes/business/src/components/OrderDetails/OrderContentComponent.tsx +93 -50
  28. package/themes/business/src/components/OrderDetails/OrderHeaderComponent.tsx +59 -62
  29. package/themes/business/src/components/OrderDetailsLogistic/index.tsx +195 -0
  30. package/themes/business/src/components/OrderDetailsLogistic/styles.tsx +5 -0
  31. package/themes/business/src/components/OrderMessage/index.tsx +18 -17
  32. package/themes/business/src/components/OrderSummary/index.tsx +113 -121
  33. package/themes/business/src/components/OrdersOption/index.tsx +32 -75
  34. package/themes/business/src/components/PreviousOrders/OrderItem.tsx +250 -0
  35. package/themes/business/src/components/PreviousOrders/OrdersGroupedItem.tsx +115 -0
  36. package/themes/business/src/components/PreviousOrders/index.tsx +445 -243
  37. package/themes/business/src/components/PreviousOrders/styles.tsx +31 -3
  38. package/themes/business/src/components/ProductItemAccordion/index.tsx +27 -3
  39. package/themes/business/src/components/ReviewCustomer/index.tsx +29 -14
  40. package/themes/business/src/components/StoresList/index.tsx +2 -2
  41. package/themes/business/src/components/UserProfileForm/index.tsx +11 -13
  42. package/themes/business/src/components/shared/OLink.tsx +33 -13
  43. package/themes/business/src/components/shared/OModal.tsx +16 -9
  44. package/themes/business/src/components/shared/OText.tsx +8 -2
  45. package/themes/business/src/types/index.tsx +32 -2
  46. package/themes/business/src/utils/index.tsx +44 -1
  47. package/themes/doordash/src/components/BusinessesListing/index.tsx +1 -1
  48. package/themes/doordash/src/components/LoginForm/index.tsx +1 -2
  49. package/themes/instacart/src/components/BusinessesListing/index.tsx +1 -1
  50. package/themes/kiosk/src/components/BusinessesListing/index.tsx +2 -1
  51. package/themes/kiosk/src/components/Checkout/index.tsx +6 -0
  52. package/themes/kiosk/src/components/LoginForm/Otp/index.tsx +92 -0
  53. package/themes/kiosk/src/components/LoginForm/Otp/styles.tsx +7 -0
  54. package/themes/kiosk/src/components/LoginForm/index.tsx +480 -156
  55. package/themes/kiosk/src/components/LoginForm/styles.tsx +14 -1
  56. package/themes/kiosk/src/components/NavBar/index.tsx +14 -14
  57. package/themes/kiosk/src/components/OptionCard/index.tsx +1 -1
  58. package/themes/kiosk/src/components/OrderTypeCardSelector/index.tsx +8 -10
  59. package/themes/kiosk/src/components/PhoneInputNumber/index.tsx +3 -2
  60. package/themes/kiosk/src/components/PhoneInputNumber/styles.tsx +1 -3
  61. package/themes/kiosk/src/components/ProductForm/index.tsx +1 -14
  62. package/themes/kiosk/src/components/shared/OButton.tsx +5 -18
  63. package/themes/kiosk/src/components/shared/OModal.tsx +14 -11
  64. package/themes/kiosk/src/layouts/Container.tsx +7 -1
  65. package/themes/kiosk/src/types/index.d.ts +13 -0
  66. package/themes/kiosk/src/utils/index.tsx +15 -0
  67. package/themes/original/index.tsx +6 -0
  68. package/themes/original/src/components/AddressDetails/index.tsx +29 -11
  69. package/themes/original/src/components/AddressForm/index.tsx +79 -44
  70. package/themes/original/src/components/AddressList/index.tsx +26 -21
  71. package/themes/original/src/components/AddressList/styles.tsx +4 -2
  72. package/themes/original/src/components/AnalyticsSegment/index.tsx +193 -10
  73. package/themes/original/src/components/AppleLogin/index.tsx +4 -4
  74. package/themes/original/src/components/AppleLogin/styles.tsx +3 -1
  75. package/themes/original/src/components/BusinessBasicInformation/index.tsx +160 -91
  76. package/themes/original/src/components/BusinessBasicInformation/styles.tsx +9 -7
  77. package/themes/original/src/components/BusinessController/index.tsx +141 -67
  78. package/themes/original/src/components/BusinessController/styles.tsx +22 -2
  79. package/themes/original/src/components/BusinessFeaturedController/index.tsx +21 -54
  80. package/themes/original/src/components/BusinessFeaturedController/styles.tsx +8 -0
  81. package/themes/original/src/components/BusinessInformation/index.tsx +10 -31
  82. package/themes/original/src/components/BusinessItemAccordion/index.tsx +23 -22
  83. package/themes/original/src/components/BusinessListingSearch/index.tsx +352 -326
  84. package/themes/original/src/components/BusinessPreorder/index.tsx +97 -16
  85. package/themes/original/src/components/BusinessProductsList/index.tsx +20 -11
  86. package/themes/original/src/components/BusinessProductsList/styles.tsx +8 -3
  87. package/themes/original/src/components/BusinessProductsListing/UpsellingRedirect.tsx +1 -1
  88. package/themes/original/src/components/BusinessProductsListing/index.tsx +669 -513
  89. package/themes/original/src/components/BusinessProductsListing/styles.tsx +2 -2
  90. package/themes/original/src/components/BusinessReviews/index.tsx +3 -1
  91. package/themes/original/src/components/BusinessesListing/Layout/Appointment/index.tsx +1 -1
  92. package/themes/original/src/components/BusinessesListing/Layout/Original/index.tsx +98 -79
  93. package/themes/original/src/components/BusinessesListing/Layout/Original/styles.tsx +1 -11
  94. package/themes/original/src/components/BusinessesListing/index.tsx +0 -1
  95. package/themes/original/src/components/Cart/index.tsx +100 -67
  96. package/themes/original/src/components/CartContent/index.tsx +115 -19
  97. package/themes/original/src/components/CartContent/styles.tsx +17 -7
  98. package/themes/original/src/components/Checkout/index.tsx +365 -172
  99. package/themes/original/src/components/Checkout/styles.tsx +4 -2
  100. package/themes/original/src/components/CitiesControl/index.tsx +89 -0
  101. package/themes/original/src/components/CitiesControl/styles.tsx +17 -0
  102. package/themes/original/src/components/CouponControl/index.tsx +10 -3
  103. package/themes/original/src/components/DriverTips/index.tsx +52 -34
  104. package/themes/original/src/components/FacebookLogin/styles.tsx +3 -1
  105. package/themes/original/src/components/Favorite/index.tsx +8 -9
  106. package/themes/original/src/components/Favorite/styles.tsx +1 -1
  107. package/themes/original/src/components/FavoriteList/index.tsx +51 -80
  108. package/themes/original/src/components/FloatingButton/index.tsx +1 -2
  109. package/themes/original/src/components/FloatingButton/styles.tsx +1 -1
  110. package/themes/original/src/components/GPSButton/index.tsx +6 -4
  111. package/themes/original/src/components/GPSButton/styles.ts +3 -3
  112. package/themes/original/src/components/GiftCard/GiftCardUI/index.tsx +96 -0
  113. package/themes/original/src/components/GiftCard/GiftCardUI/styles.tsx +5 -0
  114. package/themes/original/src/components/GiftCard/PurchaseGiftCard/index.tsx +100 -0
  115. package/themes/original/src/components/GiftCard/PurchaseGiftCard/styles.tsx +8 -0
  116. package/themes/original/src/components/GiftCard/RedeemGiftCard/index.tsx +191 -0
  117. package/themes/original/src/components/GiftCard/RedeemGiftCard/styles.tsx +8 -0
  118. package/themes/original/src/components/GiftCard/SendGiftCard/index.tsx +165 -0
  119. package/themes/original/src/components/GiftCard/SendGiftCard/styles.tsx +9 -0
  120. package/themes/original/src/components/GoogleLogin/styles.tsx +1 -1
  121. package/themes/original/src/components/GoogleMap/index.tsx +15 -4
  122. package/themes/original/src/components/Help/index.tsx +8 -8
  123. package/themes/original/src/components/HelpAccountAndPayment/index.tsx +10 -31
  124. package/themes/original/src/components/HelpAccountAndPayment/styles.tsx +5 -3
  125. package/themes/original/src/components/HelpGuide/index.tsx +6 -6
  126. package/themes/original/src/components/HelpGuide/styles.tsx +6 -0
  127. package/themes/original/src/components/HelpOrder/index.tsx +6 -15
  128. package/themes/original/src/components/HelpOrder/styles.tsx +8 -1
  129. package/themes/original/src/components/Home/index.tsx +13 -4
  130. package/themes/original/src/components/LastOrder/index.tsx +1 -34
  131. package/themes/original/src/components/LoginForm/Otp/index.tsx +55 -13
  132. package/themes/original/src/components/LoginForm/Otp/styles.tsx +0 -1
  133. package/themes/original/src/components/LoginForm/index.tsx +63 -26
  134. package/themes/original/src/components/LottieAnimation/index.tsx +89 -55
  135. package/themes/original/src/components/MessageListing/index.tsx +16 -42
  136. package/themes/original/src/components/Messages/index.tsx +32 -10
  137. package/themes/original/src/components/MomentOption/index.tsx +195 -88
  138. package/themes/original/src/components/MultiCart/index.tsx +50 -0
  139. package/themes/original/src/components/MultiCartsPaymethodsAndWallets/index.tsx +151 -49
  140. package/themes/original/src/components/MultiCheckout/index.tsx +308 -88
  141. package/themes/original/src/components/MultiCheckout/styles.tsx +3 -1
  142. package/themes/original/src/components/MultiOrdersDetails/SingleOrderCard.tsx +37 -224
  143. package/themes/original/src/components/MultiOrdersDetails/index.tsx +68 -21
  144. package/themes/original/src/components/MultiOrdersDetails/styles.tsx +1 -1
  145. package/themes/original/src/components/MyOrders/index.tsx +65 -52
  146. package/themes/original/src/components/NavBar/index.tsx +18 -18
  147. package/themes/original/src/components/NotFoundSource/index.tsx +14 -10
  148. package/themes/original/src/components/Notifications/index.tsx +46 -50
  149. package/themes/original/src/components/Notifications/styles.tsx +6 -3
  150. package/themes/original/src/components/OrderDetails/OrderEta.tsx +76 -0
  151. package/themes/original/src/components/OrderDetails/OrderHistory.tsx +15 -3
  152. package/themes/original/src/components/OrderDetails/index.tsx +192 -360
  153. package/themes/original/src/components/OrderDetails/styles.tsx +0 -1
  154. package/themes/original/src/components/OrderItAgain/index.tsx +3 -1
  155. package/themes/original/src/components/OrderProgress/index.tsx +93 -114
  156. package/themes/original/src/components/OrderProgress/styles.tsx +5 -0
  157. package/themes/original/src/components/OrderSummary/index.tsx +85 -57
  158. package/themes/original/src/components/OrderTypeSelector/index.tsx +1 -1
  159. package/themes/original/src/components/OrdersOption/PreviousBusinessOrdered/index.tsx +24 -19
  160. package/themes/original/src/components/OrdersOption/PreviousProductsOrdered/index.tsx +14 -14
  161. package/themes/original/src/components/OrdersOption/index.tsx +74 -66
  162. package/themes/original/src/components/OrdersOption/styles.tsx +1 -1
  163. package/themes/original/src/components/PageBanner/index.tsx +171 -0
  164. package/themes/original/src/components/PageBanner/styles.tsx +11 -0
  165. package/themes/original/src/components/PaymentOptionCard/index.tsx +180 -0
  166. package/themes/original/src/components/PaymentOptionStripe/styles.tsx +1 -1
  167. package/themes/original/src/components/PaymentOptionWallet/index.tsx +56 -56
  168. package/themes/original/src/components/PaymentOptions/index.tsx +64 -7
  169. package/themes/original/src/components/PhoneInputNumber/index.tsx +3 -3
  170. package/themes/original/src/components/PlaceSpot/index.tsx +12 -6
  171. package/themes/original/src/components/ProductForm/index.tsx +116 -37
  172. package/themes/original/src/components/ProductForm/styles.tsx +5 -7
  173. package/themes/original/src/components/ProductItemAccordion/index.tsx +17 -14
  174. package/themes/original/src/components/ProductOptionSubOption/index.tsx +19 -11
  175. package/themes/original/src/components/ProductOptionSubOption/styles.tsx +1 -2
  176. package/themes/original/src/components/ProfessionalFilter/SingleProfessionalCard/index.tsx +108 -0
  177. package/themes/original/src/components/ProfessionalFilter/index.tsx +20 -50
  178. package/themes/original/src/components/ProfessionalProfile/index.tsx +36 -7
  179. package/themes/original/src/components/Promotions/index.tsx +234 -220
  180. package/themes/original/src/components/Promotions/styles.tsx +10 -3
  181. package/themes/original/src/components/ReviewDriver/index.tsx +3 -3
  182. package/themes/original/src/components/ReviewOrder/index.tsx +26 -9
  183. package/themes/original/src/components/ReviewOrder/styles.tsx +7 -0
  184. package/themes/original/src/components/ReviewProducts/index.tsx +23 -11
  185. package/themes/original/src/components/ReviewTrigger/index.tsx +27 -9
  186. package/themes/original/src/components/ReviewTrigger/styles.tsx +8 -1
  187. package/themes/original/src/components/ScheduleAccordion/index.tsx +68 -0
  188. package/themes/original/src/components/ScheduleAccordion/styles.tsx +14 -0
  189. package/themes/original/src/components/ServiceForm/index.tsx +66 -17
  190. package/themes/original/src/components/Sessions/index.tsx +11 -8
  191. package/themes/original/src/components/Sessions/styles.tsx +5 -0
  192. package/themes/original/src/components/SignupForm/index.tsx +42 -19
  193. package/themes/original/src/components/SingleOrderCard/index.tsx +130 -52
  194. package/themes/original/src/components/SingleOrderCard/styles.tsx +11 -2
  195. package/themes/original/src/components/SingleProductCard/index.tsx +72 -34
  196. package/themes/original/src/components/SingleProductCard/styles.tsx +22 -4
  197. package/themes/original/src/components/SingleProductReview/styles.tsx +1 -1
  198. package/themes/original/src/components/StripeCardsList/index.tsx +13 -3
  199. package/themes/original/src/components/StripeElementsForm/index.tsx +51 -34
  200. package/themes/original/src/components/UpsellingProducts/index.tsx +238 -224
  201. package/themes/original/src/components/UpsellingProducts/styles.tsx +12 -1
  202. package/themes/original/src/components/UserDetails/index.tsx +8 -4
  203. package/themes/original/src/components/UserFormDetails/index.tsx +47 -7
  204. package/themes/original/src/components/UserFormDetails/styles.tsx +1 -1
  205. package/themes/original/src/components/UserProfile/index.tsx +10 -13
  206. package/themes/original/src/components/UserProfileForm/index.tsx +25 -28
  207. package/themes/original/src/components/UserProfileForm/styles.tsx +7 -0
  208. package/themes/original/src/components/WalletTransactionItem/index.tsx +2 -2
  209. package/themes/original/src/components/WalletTransactions/index.tsx +3 -3
  210. package/themes/original/src/components/Wallets/index.tsx +67 -24
  211. package/themes/original/src/components/Wallets/styles.tsx +3 -4
  212. package/themes/original/src/components/shared/HeaderTitle.tsx +8 -3
  213. package/themes/original/src/components/shared/OButton.tsx +6 -2
  214. package/themes/original/src/components/shared/OInput.tsx +16 -2
  215. package/themes/original/src/components/shared/OModal.tsx +3 -3
  216. package/themes/original/src/layouts/Container.tsx +1 -1
  217. package/themes/original/src/types/index.tsx +38 -9
  218. package/themes/original/src/utils/index.tsx +364 -58
  219. package/themes/uber-eats/src/components/BusinessesListing/index.tsx +1 -1
@@ -13,7 +13,8 @@ import IconAntDesign from 'react-native-vector-icons/AntDesign'
13
13
  import {
14
14
  StyleSheet,
15
15
  View,
16
- TouchableOpacity
16
+ Platform,
17
+ Pressable
17
18
  } from 'react-native';
18
19
  import Spinner from 'react-native-loading-spinner-overlay';
19
20
  import { MomentOptionParams } from '../../types';
@@ -28,6 +29,7 @@ import {
28
29
  TimeItem
29
30
  } from './styles';
30
31
  import { useSafeAreaInsets } from 'react-native-safe-area-context';
32
+ import { locale, monthsEnum } from '../../utils';
31
33
 
32
34
  const MomentOptionUI = (props: MomentOptionParams) => {
33
35
  const {
@@ -36,6 +38,14 @@ const MomentOptionUI = (props: MomentOptionParams) => {
36
38
  hoursList,
37
39
  dateSelected,
38
40
  timeSelected,
41
+ cateringPreorder,
42
+ isCart,
43
+ preorderLeadTime,
44
+ business,
45
+ getActualSchedule,
46
+ preorderMaximumDays,
47
+ preorderMinimumDays,
48
+ isPage,
39
49
  handleAsap,
40
50
  handleChangeDate,
41
51
  handleChangeTime,
@@ -149,8 +159,8 @@ const MomentOptionUI = (props: MomentOptionParams) => {
149
159
 
150
160
  const [selectedTime, setSelectedTime] = useState(null);
151
161
  const [datesWhitelist, setDateWhitelist] = useState<any>([{ start: null, end: null }])
152
- const [selectDate, setSelectedDate] = useState<any>(null)
153
-
162
+ const [selectDate, setSelectedDate] = useState<any>(dateSelected)
163
+ const [timeList, setTimeList] = useState<any>(hoursList)
154
164
  const goToBack = () => navigation?.canGoBack() && navigation.goBack();
155
165
 
156
166
  const _handleAsap = () => {
@@ -162,9 +172,9 @@ const MomentOptionUI = (props: MomentOptionParams) => {
162
172
  }
163
173
  };
164
174
 
165
- const handleChangeMoment = () => {
175
+ const handleChangeMoment = (time?: any) => {
166
176
  setMomentState({ isLoading: 1, isEditing: true });
167
- handleChangeTime(selectedTime);
177
+ handleChangeTime(time ?? selectedTime);
168
178
  };
169
179
 
170
180
  const momento = moment(
@@ -203,6 +213,14 @@ const MomentOptionUI = (props: MomentOptionParams) => {
203
213
  if (handleChangeDate) handleChangeDate(moment(val).format('YYYY-MM-DD'))
204
214
  }
205
215
 
216
+ const handleChangeTimeSelected = (time: any) => {
217
+ if (cateringPreorder) {
218
+ handleChangeMoment(time)
219
+ } else {
220
+ setSelectedTime(time)
221
+ }
222
+ }
223
+
206
224
  const LeftSelector = () => {
207
225
  return (
208
226
  <View style={{ height: '100%', justifyContent: 'flex-end' }}>
@@ -229,20 +247,25 @@ const MomentOptionUI = (props: MomentOptionParams) => {
229
247
 
230
248
  useEffect(() => {
231
249
  if (datesList?.length > 0) {
232
- const _datesList = datesList.slice(0, Number(configs?.max_days_preorder?.value || 6))
233
- const minDateParts = _datesList[0].split('-')
234
- const maxDateParts = _datesList[_datesList.length - 1].split('-')
235
- const _minDate = new Date(minDateParts[0], minDateParts[1] - 1, minDateParts[2])
236
- const _maxDate = new Date(maxDateParts[0], maxDateParts[1] - 1, maxDateParts[2])
237
- setDateWhitelist([{ start: _minDate, end: _maxDate }])
250
+ const _datesList = datesList.slice((cateringPreorder && preorderMinimumDays) || 0, Number(cateringPreorder ? preorderMaximumDays || configs?.max_days_preorder?.value : configs?.max_days_preorder?.value ?? 6))
251
+ if (_datesList?.length > 0) {
252
+ const minDateParts = _datesList?.[0]?.split('-')
253
+ const maxDateParts = _datesList[_datesList.length - 1].split('-')
254
+ const _minDate = new Date(minDateParts[0], minDateParts[1] - 1, minDateParts[2])
255
+ const _maxDate = new Date(maxDateParts[0], maxDateParts[1] - 1, maxDateParts[2])
256
+ setDateWhitelist([{ start: _minDate, end: _maxDate }])
257
+ }
238
258
  }
239
- }, [datesList])
259
+ }, [JSON.stringify(datesList), preorderMinimumDays, preorderMaximumDays, cateringPreorder])
240
260
 
241
261
  useEffect(() => {
242
262
  if (dateSelected) {
243
263
  const dateParts = dateSelected.split('-')
244
264
  const _dateSelected = new Date(dateParts[0], dateParts[1] - 1, dateParts[2])
245
265
  setSelectedDate(_dateSelected)
266
+ if (cateringPreorder) {
267
+ onSelectDate(_dateSelected)
268
+ }
246
269
  }
247
270
  }, [dateSelected])
248
271
 
@@ -250,39 +273,98 @@ const MomentOptionUI = (props: MomentOptionParams) => {
250
273
  setSelectedTime(timeSelected)
251
274
  }, [timeSelected])
252
275
 
276
+ useEffect(() => {
277
+ if (cateringPreorder) {
278
+ let _timeLists = []
279
+ const schedule = business && getActualSchedule()
280
+ if (!schedule && business) {
281
+ return
282
+ }
283
+ _timeLists = hoursList
284
+ .filter(hour => (!business || schedule?.lapses?.some((lapse: any) =>
285
+ moment(dateSelected + ` ${hour.startTime}`) >= moment(dateSelected + ` ${lapse.open.hour}:${lapse.open.minute}`).add(preorderLeadTime, 'minutes') && moment(dateSelected + ` ${hour.endTime}`) <= moment(dateSelected + ` ${lapse.close.hour}:${lapse.close.minute}`))) &&
286
+ moment(dateSelected + ` ${hour.startTime}`) < moment(dateSelected + ` ${hour.endTime}`) &&
287
+ (moment().add(preorderLeadTime, 'minutes') < moment(dateSelected + ` ${hour.startTime}`) || !cateringPreorder))
288
+ .map(hour => {
289
+ return {
290
+ value: hour.startTime,
291
+ text: is12hours ? (
292
+ hour.startTime.includes('12')
293
+ ? `${hour.startTime}PM`
294
+ : parseTime(moment(hour.startTime, 'HH:mm'), { outputFormat: 'hh:mma' })
295
+ ) : (
296
+ parseTime(moment(hour.startTime, 'HH:mm'), { outputFormat: 'HH:mm' })
297
+ ),
298
+ endText: is12hours ? (
299
+ hour.endTime.includes('12')
300
+ ? `${hour.endTime}PM`
301
+ : parseTime(moment(hour.endTime, 'HH:mm'), { outputFormat: 'hh:mma' })
302
+ ) : (
303
+ parseTime(moment(hour.endTime, 'HH:mm'), { outputFormat: 'HH:mm' })
304
+ )
305
+ }
306
+ })
307
+ if (_timeLists?.length > 0) {
308
+ setTimeList(_timeLists)
309
+ }
310
+ } else {
311
+ setTimeList(hoursList.map(hour => {
312
+ return {
313
+ value: hour.startTime,
314
+ text: is12hours ? (
315
+ hour.startTime.includes('12')
316
+ ? `${hour.startTime}PM`
317
+ : parseTime(moment(hour.startTime, 'HH:mm'), { outputFormat: 'hh:mma' })
318
+ ) : (
319
+ parseTime(moment(hour.startTime, 'HH:mm'), { outputFormat: 'HH:mm' })
320
+ )
321
+ }
322
+ }))
323
+ }
324
+ }, [dateSelected, JSON.stringify(hoursList), JSON.stringify(datesWhitelist), cateringPreorder, JSON.stringify(business)])
325
+
253
326
  return (
254
327
  <>
255
- <Container style={{ paddingLeft: 40, paddingRight: 40 }}>
256
- <View style={{ paddingBottom: 90 }}>
257
- <NavBar
258
- onActionLeft={() => goToBack()}
259
- btnStyle={{ paddingLeft: 0 }}
260
- paddingTop={0}
261
- style={{ paddingBottom: 0 }}
262
- title={t('QUESTION_WHEN_ORDER', 'When do you want your order?')}
263
- titleAlign={'center'}
264
- titleStyle={{ fontSize: 14, marginRight: 0, marginLeft: 0 }}
265
- titleWrapStyle={{ paddingHorizontal: 0 }}
266
- />
267
-
268
- <WrapSelectOption
269
- onPress={() => _handleAsap()}
270
- disabled={orderState.loading} style={{ alignItems: 'flex-start' }}>
271
- {optionSelected.isAsap ? (
272
- <OIcon
273
- src={theme.images.general.option_checked}
274
- width={16}
275
- style={{ marginEnd: 24 }}
276
- />
277
- ) : (
278
- <OIcon
279
- src={theme.images.general.option_normal}
280
- width={16}
281
- style={{ marginEnd: 24 }}
282
- />
283
- )}
284
- <OText color={optionSelected.isAsap ? theme.colors.textNormal : theme.colors.disabled}>{t('ASAP_ABBREVIATION', 'ASAP') + ` (${moment().format('dddd, MMM D, yyyy h:mm A')} + delivery time)`}</OText>
285
- </WrapSelectOption>
328
+ <Container
329
+ style={{
330
+ paddingLeft: !cateringPreorder || isPage ? 40 : 0,
331
+ paddingRight: !cateringPreorder || isPage ? 40 : 0
332
+ }}
333
+ nestedScrollEnabled
334
+ >
335
+ <View style={{ paddingBottom: cateringPreorder ? 0 : 90, paddingRight: 20 }}>
336
+ {!isCart && (
337
+ <NavBar
338
+ onActionLeft={() => goToBack()}
339
+ btnStyle={{ paddingLeft: 0 }}
340
+ style={{ paddingBottom: 0 }}
341
+ paddingTop={Platform.OS === 'ios' ? 10 : 0}
342
+ title={t('QUESTION_WHEN_ORDER', 'When do you want your order?')}
343
+ titleAlign={'center'}
344
+ titleStyle={{ fontSize: 20, marginRight: 0, marginLeft: 0 }}
345
+ titleWrapStyle={{ paddingHorizontal: 0 }}
346
+ />
347
+ )}
348
+ {(preorderMinimumDays === 0 && preorderLeadTime === 0) || !cateringPreorder && (
349
+ <WrapSelectOption
350
+ onPress={() => _handleAsap()}
351
+ disabled={orderState.loading} style={{ alignItems: 'flex-start' }}>
352
+ {optionSelected.isAsap ? (
353
+ <OIcon
354
+ src={theme.images.general.option_checked}
355
+ width={16}
356
+ style={{ marginEnd: 24 }}
357
+ />
358
+ ) : (
359
+ <OIcon
360
+ src={theme.images.general.option_normal}
361
+ width={16}
362
+ style={{ marginEnd: 24 }}
363
+ />
364
+ )}
365
+ <OText color={optionSelected.isAsap ? theme.colors.textNormal : theme.colors.disabled}>{t('ASAP_ABBREVIATION', 'ASAP') + ` (${t(moment().format('dddd')?.toLocaleUpperCase(), moment().format('dddd'))}, ${t(monthsEnum[moment().format('MMM')], moment().format('MMM'))}${moment().format(' D, yyyy h:mm A')} + ${t('DELIVERY_TIME', 'delivery time')})`}</OText>
366
+ </WrapSelectOption>
367
+ )}
286
368
  <WrapSelectOption
287
369
  onPress={() => setOptionSelected({ isAsap: false, isSchedule: true })}
288
370
  disabled={orderState.loading}>
@@ -301,57 +383,80 @@ const MomentOptionUI = (props: MomentOptionParams) => {
301
383
  )}
302
384
  <OText color={optionSelected.isSchedule ? theme.colors.textNormal : theme.colors.disabled}>{t('SCHEDULE_FOR_LATER', 'Schedule for later')}</OText>
303
385
  </WrapSelectOption>
304
-
305
386
  {optionSelected.isSchedule && (
306
387
  <OrderTimeWrapper>
307
- <View style={{ flex: 1 }}>
308
- {selectDate && datesWhitelist[0]?.start !== null && (
309
- <CalendarStrip
310
- scrollable
311
- style={styles.calendar}
312
- calendarHeaderContainerStyle={styles.calendarHeaderContainer}
313
- calendarHeaderStyle={styles.calendarHeader}
314
- dateNumberStyle={styles.dateNumber}
315
- dateNameStyle={styles.dateName}
316
- iconContainer={{ flex: 0.1 }}
317
- highlightDateNameStyle={styles.highlightDateName}
318
- highlightDateNumberStyle={styles.highlightDateNumber}
319
- dayContainerStyle={{ height: '100%' }}
320
- highlightDateContainerStyle={{ height: '100%' }}
321
- calendarHeaderFormat='MMMM, YYYY'
322
- iconStyle={{ borderWidth: 1 }}
323
- selectedDate={selectDate}
324
- datesWhitelist={datesWhitelist}
325
- disabledDateNameStyle={styles.disabledDateName}
326
- disabledDateNumberStyle={styles.disabledDateNumber}
327
- disabledDateOpacity={0.6}
328
- onDateSelected={(date) => onSelectDate(date)}
329
- leftSelector={<LeftSelector />}
330
- rightSelector={<RightSelector />}
331
- />
332
- )}
333
- </View>
334
- <TimeListWrapper nestedScrollEnabled={true}>
388
+ {datesWhitelist[0]?.start === datesWhitelist[0]?.end && (
389
+ <OText>
390
+ {moment(selectDate).format('Do MMMM, YYYY')}
391
+ </OText>
392
+ )}
393
+ {datesWhitelist[0]?.start !== datesWhitelist[0]?.end && (
394
+ <View style={{ flex: 1 }}>
395
+ {selectDate && datesWhitelist[0]?.start !== null && (
396
+ <CalendarStrip
397
+ scrollable
398
+ style={styles.calendar}
399
+ calendarHeaderContainerStyle={styles.calendarHeaderContainer}
400
+ calendarHeaderStyle={styles.calendarHeader}
401
+ dateNumberStyle={styles.dateNumber}
402
+ dateNameStyle={styles.dateName}
403
+ iconContainer={{ flex: 0.1 }}
404
+ highlightDateNameStyle={styles.highlightDateName}
405
+ highlightDateNumberStyle={styles.highlightDateNumber}
406
+ dayContainerStyle={{ height: '100%' }}
407
+ highlightDateContainerStyle={{ height: '100%' }}
408
+ calendarHeaderFormat='MMMM, YYYY'
409
+ iconStyle={{ borderWidth: 1 }}
410
+ selectedDate={dateSelected}
411
+ datesWhitelist={datesWhitelist}
412
+ minDate={moment()}
413
+ maxDate={cateringPreorder ? moment().add(preorderMaximumDays, 'days') : undefined}
414
+ disabledDateNameStyle={styles.disabledDateName}
415
+ disabledDateNumberStyle={styles.disabledDateNumber}
416
+ disabledDateOpacity={0.6}
417
+ onDateSelected={(date) => onSelectDate(date)}
418
+ leftSelector={<LeftSelector />}
419
+ rightSelector={<RightSelector />}
420
+ />
421
+ )}
422
+ </View>
423
+ )}
424
+ <TimeListWrapper nestedScrollEnabled={true} cateringPreorder={cateringPreorder}>
335
425
  <TimeContentWrapper>
336
- {hoursList.map((time: any, i: number) => (
337
- <TouchableOpacity key={i} onPress={() => setSelectedTime(time.startTime)}>
338
- <TimeItem active={selectedTime === time.startTime}>
426
+ {timeList.map((time: any, i: number) => (
427
+ <Pressable key={i} onPress={() => handleChangeTimeSelected(time.value)}>
428
+ <TimeItem
429
+ active={selectedTime === time.value}
430
+ cateringPreorder={cateringPreorder}
431
+ >
432
+ {cateringPreorder && (
433
+ <>
434
+ {selectedTime === time.value ? (
435
+ <OIcon
436
+ src={theme.images.general.option_checked}
437
+ width={18}
438
+ style={{ marginEnd: 24, bottom: 2 }}
439
+ />
440
+ ) : (
441
+ <OIcon
442
+ src={theme.images.general.option_normal}
443
+ width={18}
444
+ style={{ marginEnd: 24, bottom: 2 }}
445
+ />
446
+ )}
447
+ </>
448
+ )}
339
449
  <OText
340
- size={14}
341
- color={selectedTime === time.startTime ? theme.colors.primary : theme.colors.textNormal}
450
+ size={cateringPreorder ? 18 : 16}
451
+ color={selectedTime === time.value ? theme.colors.primary : theme.colors.textNormal}
342
452
  style={{
343
453
  lineHeight: 24
344
454
  }}
345
- >{is12hours ? (
346
- time.startTime.includes('12')
347
- ? `${time.startTime}PM`
348
- : parseTime(moment(time.startTime, 'HH:mm'), { outputFormat: 'hh:mma' })
349
- ) : time.startTime
350
- }</OText>
455
+ >{time.text} {cateringPreorder && `- ${time.endText}`}</OText>
351
456
  </TimeItem>
352
- </TouchableOpacity>
457
+ </Pressable>
353
458
  ))}
354
- {hoursList.length % 3 === 2 && (
459
+ {timeList.length % 3 === 2 && (
355
460
  <TimeItem style={{ backgroundColor: 'transparent' }} />
356
461
  )}
357
462
  </TimeContentWrapper>
@@ -361,9 +466,11 @@ const MomentOptionUI = (props: MomentOptionParams) => {
361
466
  </View>
362
467
  <Spinner visible={momentState.isLoading === 1} />
363
468
  </Container>
364
- <View style={{ position: 'absolute', bottom: bottom, paddingBottom: 20, paddingHorizontal: 40, backgroundColor: 'white', width: '100%' }}>
365
- <OButton onClick={handleChangeMoment} isDisabled={!selectedTime} text={t('CONTINUE', 'Continue')} style={{ borderRadius: 7.6, height: 44, shadowOpacity: 0 }} textStyle={{ color: 'white', fontSize: 14 }} showNextIcon />
366
- </View>
469
+ {!isCart && !cateringPreorder && (
470
+ <View style={{ position: 'absolute', bottom: bottom, paddingBottom: 20, paddingHorizontal: 40, backgroundColor: 'white', width: '100%' }}>
471
+ <OButton onClick={() => handleChangeMoment()} isDisabled={!selectedTime} text={t('CONTINUE', 'Continue')} style={{ borderRadius: 7.6, height: 44, shadowOpacity: 0 }} textStyle={{ color: 'white', fontSize: 14 }} showNextIcon />
472
+ </View>
473
+ )}
367
474
  </>
368
475
  );
369
476
  };
@@ -0,0 +1,50 @@
1
+ import React from 'react'
2
+ import { View } from 'react-native'
3
+ import { Placeholder, PlaceholderLine, Fade } from 'rn-placeholder'
4
+ import { useTheme } from 'styled-components/native';
5
+ import { MultiCartCreate } from 'ordering-components/native'
6
+
7
+ import { Container } from '../../layouts/Container';
8
+ import { ChContainer, ChSection, ChUserDetails } from '../Checkout/styles'
9
+
10
+ export const MultiCartUI = () => {
11
+ const theme = useTheme();
12
+ return (
13
+ <Container noPadding>
14
+ <ChContainer style={{ paddingHorizontal: 40 }}>
15
+ <ChSection>
16
+ <ChUserDetails>
17
+ <Placeholder Animation={Fade}>
18
+ <PlaceholderLine height={20} />
19
+ <PlaceholderLine height={20} />
20
+ <PlaceholderLine height={20} />
21
+ <PlaceholderLine height={20} style={{ marginBottom: 20 }} />
22
+ </Placeholder>
23
+ <View style={{ height: 8, backgroundColor: theme.colors.backgroundGray100, marginHorizontal: -40, marginBottom: 20 }} />
24
+ <Placeholder Animation={Fade}>
25
+ <PlaceholderLine height={20} />
26
+ <PlaceholderLine height={20} />
27
+ <PlaceholderLine height={20} />
28
+ <PlaceholderLine height={20} style={{ marginBottom: 20 }} />
29
+ </Placeholder>
30
+ <View style={{ height: 8, backgroundColor: theme.colors.backgroundGray100, marginHorizontal: -40, marginBottom: 20 }} />
31
+ <Placeholder Animation={Fade}>
32
+ <PlaceholderLine height={20} />
33
+ <PlaceholderLine height={120} style={{ marginBottom: 20, borderRadius: 8 }} />
34
+ <PlaceholderLine height={20} />
35
+ <PlaceholderLine height={20} />
36
+ </Placeholder>
37
+ </ChUserDetails>
38
+ </ChSection>
39
+ </ChContainer>
40
+ </Container>
41
+ )
42
+ }
43
+
44
+ export const MultiCart = (props: any) => {
45
+ const mulcartProps = {
46
+ ...props,
47
+ UIComponent: MultiCartUI
48
+ }
49
+ return <MultiCartCreate {...mulcartProps} />
50
+ }