ordering-ui-react-native 0.12.54 → 0.12.58

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 (205) hide show
  1. package/package.json +1 -1
  2. package/src/components/Cart/index.tsx +50 -16
  3. package/src/components/OrderDetails/index.tsx +8 -0
  4. package/src/components/OrderSummary/index.tsx +38 -3
  5. package/src/layouts/Container.tsx +1 -1
  6. package/themes/business/src/components/OrderDetails/OrderContentComponent.tsx +8 -0
  7. package/themes/business/src/components/OrderDetails/styles.tsx +1 -0
  8. package/themes/business/src/layouts/Container.tsx +3 -1
  9. package/themes/doordash/src/components/Cart/index.tsx +36 -2
  10. package/themes/doordash/src/components/OrderDetails/index.tsx +8 -0
  11. package/themes/doordash/src/components/OrderSummary/index.tsx +36 -3
  12. package/themes/doordash/src/layouts/Container.tsx +1 -1
  13. package/themes/instacart/src/components/Cart/index.tsx +37 -3
  14. package/themes/instacart/src/components/OrderDetails/index.tsx +8 -0
  15. package/themes/instacart/src/components/OrderSummary/index.tsx +37 -4
  16. package/themes/instacart/src/layouts/Container.tsx +1 -1
  17. package/themes/kiosk/src/layouts/Container.tsx +2 -1
  18. package/themes/original/src/components/Cart/index.tsx +268 -234
  19. package/themes/original/src/components/OrderDetails/index.tsx +723 -715
  20. package/themes/original/src/components/OrderSummary/index.tsx +37 -3
  21. package/themes/original/src/layouts/Container.tsx +1 -1
  22. package/themes/single-business/src/components/Cart/index.tsx +92 -16
  23. package/themes/single-business/src/components/Cart/styles.tsx +39 -0
  24. package/themes/single-business/src/components/CartContent/index.tsx +56 -52
  25. package/themes/single-business/src/components/CartContent/styles.tsx +2 -16
  26. package/themes/single-business/src/components/PhoneInputNumber/index.tsx +103 -112
  27. package/themes/single-business/src/components/UserDetails/index.tsx +107 -111
  28. package/themes/single-business/src/components/UserDetails/styles.tsx +3 -8
  29. package/themes/single-business/src/components/UserFormDetails/index.tsx +279 -326
  30. package/themes/single-business/src/components/UserFormDetails/styles.tsx +7 -5
  31. package/themes/single-business/src/layouts/Container.tsx +1 -1
  32. package/themes/uber-eats/src/components/Cart/index.tsx +37 -3
  33. package/themes/uber-eats/src/components/OrderDetails/index.tsx +8 -0
  34. package/themes/uber-eats/src/components/OrderSummary/index.tsx +40 -6
  35. package/themes/uber-eats/src/layouts/Container.tsx +1 -1
  36. package/themes/franchises/index.tsx +0 -111
  37. package/themes/franchises/src/components/ActiveOrders/index.tsx +0 -134
  38. package/themes/franchises/src/components/ActiveOrders/styles.tsx +0 -44
  39. package/themes/franchises/src/components/AddressDetails/index.tsx +0 -77
  40. package/themes/franchises/src/components/AddressDetails/styles.tsx +0 -21
  41. package/themes/franchises/src/components/AddressForm/index.tsx +0 -837
  42. package/themes/franchises/src/components/AddressForm/styles.tsx +0 -27
  43. package/themes/franchises/src/components/AddressList/index.tsx +0 -338
  44. package/themes/franchises/src/components/AddressList/styles.tsx +0 -20
  45. package/themes/franchises/src/components/AppleLogin/index.tsx +0 -149
  46. package/themes/franchises/src/components/AppleLogin/styles.tsx +0 -21
  47. package/themes/franchises/src/components/BottomWrapper/index.tsx +0 -29
  48. package/themes/franchises/src/components/BusinessBasicInformation/index.tsx +0 -310
  49. package/themes/franchises/src/components/BusinessBasicInformation/styles.tsx +0 -66
  50. package/themes/franchises/src/components/BusinessController/index.tsx +0 -184
  51. package/themes/franchises/src/components/BusinessController/styles.tsx +0 -64
  52. package/themes/franchises/src/components/BusinessFeaturedController/index.tsx +0 -189
  53. package/themes/franchises/src/components/BusinessFeaturedController/styles.tsx +0 -50
  54. package/themes/franchises/src/components/BusinessInformation/index.tsx +0 -202
  55. package/themes/franchises/src/components/BusinessInformation/styles.tsx +0 -39
  56. package/themes/franchises/src/components/BusinessItemAccordion/index.tsx +0 -125
  57. package/themes/franchises/src/components/BusinessItemAccordion/styles.tsx +0 -54
  58. package/themes/franchises/src/components/BusinessProductsCategories/index.tsx +0 -87
  59. package/themes/franchises/src/components/BusinessProductsCategories/styles.tsx +0 -8
  60. package/themes/franchises/src/components/BusinessProductsList/index.tsx +0 -199
  61. package/themes/franchises/src/components/BusinessProductsList/styles.tsx +0 -14
  62. package/themes/franchises/src/components/BusinessProductsListing/index.tsx +0 -292
  63. package/themes/franchises/src/components/BusinessProductsListing/styles.tsx +0 -30
  64. package/themes/franchises/src/components/BusinessReviews/index.tsx +0 -249
  65. package/themes/franchises/src/components/BusinessReviews/styles.tsx +0 -59
  66. package/themes/franchises/src/components/BusinessTypeFilter/index.tsx +0 -127
  67. package/themes/franchises/src/components/BusinessTypeFilter/styles.tsx +0 -40
  68. package/themes/franchises/src/components/BusinessesListing/index.tsx +0 -339
  69. package/themes/franchises/src/components/BusinessesListing/styles.tsx +0 -92
  70. package/themes/franchises/src/components/Cart/index.tsx +0 -298
  71. package/themes/franchises/src/components/Cart/styles.tsx +0 -28
  72. package/themes/franchises/src/components/CartContent/index.tsx +0 -60
  73. package/themes/franchises/src/components/CartContent/styles.tsx +0 -19
  74. package/themes/franchises/src/components/Checkout/index.tsx +0 -664
  75. package/themes/franchises/src/components/Checkout/styles.tsx +0 -89
  76. package/themes/franchises/src/components/CouponControl/index.tsx +0 -119
  77. package/themes/franchises/src/components/CouponControl/styles.tsx +0 -22
  78. package/themes/franchises/src/components/DriverTips/index.tsx +0 -167
  79. package/themes/franchises/src/components/DriverTips/styles.tsx +0 -63
  80. package/themes/franchises/src/components/FacebookLogin/index.tsx +0 -107
  81. package/themes/franchises/src/components/FacebookLogin/styles.tsx +0 -21
  82. package/themes/franchises/src/components/FloatingButton/index.tsx +0 -100
  83. package/themes/franchises/src/components/FloatingButton/styles.tsx +0 -26
  84. package/themes/franchises/src/components/ForgotPasswordForm/index.tsx +0 -156
  85. package/themes/franchises/src/components/ForgotPasswordForm/styles.tsx +0 -11
  86. package/themes/franchises/src/components/GPSButton/index.tsx +0 -84
  87. package/themes/franchises/src/components/GPSButton/styles.ts +0 -6
  88. package/themes/franchises/src/components/GoogleLogin/index.tsx +0 -122
  89. package/themes/franchises/src/components/GoogleLogin/styles.tsx +0 -23
  90. package/themes/franchises/src/components/GoogleMap/index.tsx +0 -229
  91. package/themes/franchises/src/components/Help/index.tsx +0 -56
  92. package/themes/franchises/src/components/Help/styles.tsx +0 -11
  93. package/themes/franchises/src/components/HelpAccountAndPayment/index.tsx +0 -68
  94. package/themes/franchises/src/components/HelpAccountAndPayment/styles.tsx +0 -6
  95. package/themes/franchises/src/components/HelpGuide/index.tsx +0 -67
  96. package/themes/franchises/src/components/HelpGuide/styles.tsx +0 -6
  97. package/themes/franchises/src/components/HelpOrder/index.tsx +0 -79
  98. package/themes/franchises/src/components/HelpOrder/styles.tsx +0 -6
  99. package/themes/franchises/src/components/Home/index.tsx +0 -102
  100. package/themes/franchises/src/components/Home/styles.tsx +0 -18
  101. package/themes/franchises/src/components/LanguageSelector/index.tsx +0 -98
  102. package/themes/franchises/src/components/LanguageSelector/styles.tsx +0 -7
  103. package/themes/franchises/src/components/LastOrder/index.tsx +0 -168
  104. package/themes/franchises/src/components/LastOrder/styles.tsx +0 -16
  105. package/themes/franchises/src/components/LastOrders/index.tsx +0 -104
  106. package/themes/franchises/src/components/LastOrders/styles.tsx +0 -17
  107. package/themes/franchises/src/components/LoginForm/index.tsx +0 -512
  108. package/themes/franchises/src/components/LoginForm/styles.tsx +0 -77
  109. package/themes/franchises/src/components/LogoutButton/index.tsx +0 -36
  110. package/themes/franchises/src/components/Messages/index.tsx +0 -359
  111. package/themes/franchises/src/components/Messages/styles.tsx +0 -20
  112. package/themes/franchises/src/components/MomentOption/index.tsx +0 -321
  113. package/themes/franchises/src/components/MomentOption/styles.tsx +0 -66
  114. package/themes/franchises/src/components/NavBar/index.tsx +0 -129
  115. package/themes/franchises/src/components/NotFoundSource/index.tsx +0 -50
  116. package/themes/franchises/src/components/NotFoundSource/styles.tsx +0 -16
  117. package/themes/franchises/src/components/Notifications/index.tsx +0 -120
  118. package/themes/franchises/src/components/Notifications/styles.ts +0 -21
  119. package/themes/franchises/src/components/OrderDetails/index.tsx +0 -820
  120. package/themes/franchises/src/components/OrderDetails/styles.tsx +0 -120
  121. package/themes/franchises/src/components/OrderSummary/index.tsx +0 -232
  122. package/themes/franchises/src/components/OrderSummary/styles.tsx +0 -41
  123. package/themes/franchises/src/components/OrderTypeSelector/index.tsx +0 -92
  124. package/themes/franchises/src/components/OrderTypeSelector/styles.tsx +0 -27
  125. package/themes/franchises/src/components/OrdersOption/index.tsx +0 -243
  126. package/themes/franchises/src/components/OrdersOption/styles.tsx +0 -5
  127. package/themes/franchises/src/components/PaymentOptionCash/index.tsx +0 -102
  128. package/themes/franchises/src/components/PaymentOptionCash/styles.tsx +0 -18
  129. package/themes/franchises/src/components/PaymentOptionStripe/index.tsx +0 -234
  130. package/themes/franchises/src/components/PaymentOptionStripe/styles.tsx +0 -71
  131. package/themes/franchises/src/components/PaymentOptions/index.tsx +0 -430
  132. package/themes/franchises/src/components/PaymentOptions/styles.tsx +0 -77
  133. package/themes/franchises/src/components/PhoneInputNumber/index.tsx +0 -127
  134. package/themes/franchises/src/components/PhoneInputNumber/styles.tsx +0 -3
  135. package/themes/franchises/src/components/PreviousOrders/index.tsx +0 -188
  136. package/themes/franchises/src/components/PreviousOrders/styles.tsx +0 -33
  137. package/themes/franchises/src/components/ProductForm/index.tsx +0 -695
  138. package/themes/franchises/src/components/ProductForm/styles.tsx +0 -78
  139. package/themes/franchises/src/components/ProductIngredient/index.tsx +0 -43
  140. package/themes/franchises/src/components/ProductIngredient/styles.tsx +0 -7
  141. package/themes/franchises/src/components/ProductItemAccordion/index.tsx +0 -276
  142. package/themes/franchises/src/components/ProductItemAccordion/styles.tsx +0 -57
  143. package/themes/franchises/src/components/ProductOption/index.tsx +0 -50
  144. package/themes/franchises/src/components/ProductOption/styles.tsx +0 -11
  145. package/themes/franchises/src/components/ProductOptionSubOption/index.tsx +0 -146
  146. package/themes/franchises/src/components/ProductOptionSubOption/styles.tsx +0 -32
  147. package/themes/franchises/src/components/ReviewDriver/index.tsx +0 -221
  148. package/themes/franchises/src/components/ReviewDriver/styles.tsx +0 -46
  149. package/themes/franchises/src/components/ReviewOrder/index.tsx +0 -325
  150. package/themes/franchises/src/components/ReviewOrder/styles.tsx +0 -46
  151. package/themes/franchises/src/components/ReviewProduct/index.tsx +0 -275
  152. package/themes/franchises/src/components/ReviewProduct/styles.tsx +0 -53
  153. package/themes/franchises/src/components/SearchBar/index.tsx +0 -139
  154. package/themes/franchises/src/components/SignupForm/index.tsx +0 -643
  155. package/themes/franchises/src/components/SignupForm/styles.tsx +0 -27
  156. package/themes/franchises/src/components/SingleProductCard/index.tsx +0 -124
  157. package/themes/franchises/src/components/SingleProductCard/styles.tsx +0 -23
  158. package/themes/franchises/src/components/StripeCardForm/index.tsx +0 -97
  159. package/themes/franchises/src/components/StripeCardForm/naked.tsx +0 -128
  160. package/themes/franchises/src/components/StripeCardForm/styles.tsx +0 -32
  161. package/themes/franchises/src/components/StripeCardsList/index.tsx +0 -182
  162. package/themes/franchises/src/components/StripeElementsForm/index.tsx +0 -204
  163. package/themes/franchises/src/components/StripeElementsForm/naked.tsx +0 -90
  164. package/themes/franchises/src/components/StripeElementsForm/styles.tsx +0 -13
  165. package/themes/franchises/src/components/StripeRedirectForm/index.tsx +0 -159
  166. package/themes/franchises/src/components/StripeRedirectForm/styles.tsx +0 -23
  167. package/themes/franchises/src/components/TagSelector/index.tsx +0 -94
  168. package/themes/franchises/src/components/TagSelector/styles.ts +0 -0
  169. package/themes/franchises/src/components/TaxInformation/index.tsx +0 -51
  170. package/themes/franchises/src/components/TaxInformation/styles.tsx +0 -9
  171. package/themes/franchises/src/components/UpsellingProducts/index.tsx +0 -222
  172. package/themes/franchises/src/components/UpsellingProducts/styles.tsx +0 -50
  173. package/themes/franchises/src/components/UserDetails/index.tsx +0 -134
  174. package/themes/franchises/src/components/UserDetails/styles.tsx +0 -26
  175. package/themes/franchises/src/components/UserFormDetails/index.tsx +0 -351
  176. package/themes/franchises/src/components/UserFormDetails/styles.tsx +0 -35
  177. package/themes/franchises/src/components/UserProfile/index.tsx +0 -179
  178. package/themes/franchises/src/components/UserProfile/styles.ts +0 -42
  179. package/themes/franchises/src/components/UserProfileForm/index.tsx +0 -253
  180. package/themes/franchises/src/components/UserProfileForm/styles.tsx +0 -29
  181. package/themes/franchises/src/components/VerifyPhone/index.tsx +0 -188
  182. package/themes/franchises/src/components/VerifyPhone/styles.tsx +0 -43
  183. package/themes/franchises/src/components/shared/OAlert.tsx +0 -55
  184. package/themes/franchises/src/components/shared/OBottomPopup.tsx +0 -73
  185. package/themes/franchises/src/components/shared/OBottomStickBar.tsx +0 -62
  186. package/themes/franchises/src/components/shared/OButton.tsx +0 -132
  187. package/themes/franchises/src/components/shared/ODropDown.tsx +0 -169
  188. package/themes/franchises/src/components/shared/OIcon.tsx +0 -53
  189. package/themes/franchises/src/components/shared/OIconButton.tsx +0 -127
  190. package/themes/franchises/src/components/shared/OIconText.tsx +0 -54
  191. package/themes/franchises/src/components/shared/OInput.tsx +0 -113
  192. package/themes/franchises/src/components/shared/OKeyButton.tsx +0 -35
  193. package/themes/franchises/src/components/shared/OModal.tsx +0 -172
  194. package/themes/franchises/src/components/shared/OText.tsx +0 -52
  195. package/themes/franchises/src/components/shared/OTextarea.tsx +0 -36
  196. package/themes/franchises/src/components/shared/OToast.tsx +0 -93
  197. package/themes/franchises/src/components/shared/OToggle.tsx +0 -158
  198. package/themes/franchises/src/components/shared/index.tsx +0 -29
  199. package/themes/franchises/src/config/constants.tsx +0 -57
  200. package/themes/franchises/src/layouts/Container.tsx +0 -23
  201. package/themes/franchises/src/layouts/SafeAreaContainer.tsx +0 -6
  202. package/themes/franchises/src/providers/AlertProvider.tsx +0 -43
  203. package/themes/franchises/src/providers/StoreUtil.tsx +0 -50
  204. package/themes/franchises/src/types/index.tsx +0 -445
  205. package/themes/franchises/src/utils/index.tsx +0 -222
@@ -1,5 +1,5 @@
1
1
  import React, { useState } from 'react';
2
- import { View } from 'react-native'
2
+ import { ActivityIndicator, View } from 'react-native'
3
3
  import {
4
4
  Cart,
5
5
  useOrder,
@@ -19,7 +19,7 @@ import {
19
19
 
20
20
  import { ProductItemAccordion } from '../ProductItemAccordion';
21
21
  import { CouponControl } from '../CouponControl';
22
- import { OModal, OText } from '../shared';
22
+ import { OInput, OModal, OText } from '../shared';
23
23
  import { ProductForm } from '../ProductForm';
24
24
  import { verifyDecimals } from '../../utils';
25
25
  import AntIcon from 'react-native-vector-icons/AntDesign'
@@ -34,7 +34,9 @@ const OrderSummaryUI = (props: any) => {
34
34
  offsetDisabled,
35
35
  removeProduct,
36
36
  isCartPending,
37
- isFromCheckout
37
+ isFromCheckout,
38
+ commentState,
39
+ handleChangeComment
38
40
  } = props;
39
41
 
40
42
  const theme = useTheme()
@@ -188,6 +190,38 @@ const OrderSummaryUI = (props: any) => {
188
190
  </OSTable>
189
191
  </View>
190
192
  )}
193
+ {cart?.status !== 2 && (
194
+ <OSTable>
195
+ <View style={{ width: '100%', marginTop: 20 }}>
196
+ <OText size={12}>{t('COMMENTS', 'Comments')}</OText>
197
+ <View style={{ flex: 1, width: '100%' }}>
198
+ <OInput
199
+ value={cart?.comment}
200
+ placeholder={t('SPECIAL_COMMENTS', 'Special Comments')}
201
+ onChange={(value: string) => handleChangeComment(value)}
202
+ style={{
203
+ alignItems: 'flex-start',
204
+ width: '100%',
205
+ height: 100,
206
+ borderColor: theme.colors.textSecondary,
207
+ paddingRight: 50,
208
+ marginTop: 10
209
+ }}
210
+ multiline
211
+ />
212
+ {commentState?.loading && (
213
+ <View style={{ position: 'absolute', right: 20 }}>
214
+ <ActivityIndicator
215
+ size='large'
216
+ style={{ height: 100 }}
217
+ color={theme.colors.primary}
218
+ />
219
+ </View>
220
+ )}
221
+ </View>
222
+ </View>
223
+ </OSTable>
224
+ )}
191
225
  </OSBill>
192
226
  )}
193
227
  <OModal
@@ -18,7 +18,7 @@ const SafeAreaStyled = styled.SafeAreaView`
18
18
  export const Container = (props: any) => {
19
19
  return (
20
20
  <SafeAreaStyled>
21
- <ContainerStyled keyboardShouldPersistTaps='handled' {...props} style={{...props.style}}>
21
+ <ContainerStyled {...props} ref={props?.forwardRef} keyboardShouldPersistTaps='handled' style={{...props.style}}>
22
22
  {props.children}
23
23
  </ContainerStyled>
24
24
  </SafeAreaStyled>
@@ -16,26 +16,32 @@ import {
16
16
  OSCoupon,
17
17
  OSTotal,
18
18
  Title,
19
- LineDivider
19
+ LineDivider,
20
+ BIHeader,
21
+ BIInfo,
22
+ BIContentInfo,
23
+ BITotal
20
24
  } from './styles';
21
25
 
22
26
  import { ProductItemAccordion } from '../ProductItemAccordion';
23
27
  import { CouponControl } from '../CouponControl';
24
28
 
25
- import { OButton, OModal, OText } from '../shared';
29
+ import { OButton, OIcon, OModal, OText } from '../shared';
26
30
  import { ProductForm } from '../ProductForm';
27
31
  import { UpsellingProducts } from '../UpsellingProducts';
28
- import { verifyDecimals } from '../../utils';
32
+ import { convertHoursToMinutes, verifyDecimals } from '../../utils';
29
33
  import { Container } from '../../layouts/Container';
30
34
  import { NotFoundSource } from '../NotFoundSource'
31
35
  import { OSRow } from '../OrderSummary/styles';
32
36
  import AntIcon from 'react-native-vector-icons/AntDesign'
37
+ import MaterialCommunityIcon from 'react-native-vector-icons/MaterialCommunityIcons'
33
38
  import { TaxInformation } from '../TaxInformation';
34
39
  import { TouchableOpacity } from 'react-native';
35
40
  const CartUI = (props: any) => {
36
41
  const {
37
42
  cart,
38
43
  clearCart,
44
+ isCartList,
39
45
  changeQuantity,
40
46
  getProductMax,
41
47
  offsetDisabled,
@@ -62,6 +68,8 @@ const CartUI = (props: any) => {
62
68
 
63
69
  const isCartPending = cart?.status === 2
64
70
  const isCouponEnabled = validationFields?.fields?.checkout?.coupon?.enabled
71
+ const isClosed = !cart?.valid_schedule
72
+ const isProducts = cart?.products?.length
65
73
 
66
74
  const handleDeleteClick = (product: any) => {
67
75
  removeProduct(product, cart)
@@ -110,22 +118,91 @@ const CartUI = (props: any) => {
110
118
  }
111
119
  }
112
120
 
121
+ const CartHeader = () => {
122
+ return (
123
+ <BIHeader isClosed={isClosed}>
124
+ <BIInfo>
125
+ {cart?.business?.logo && (
126
+ <View
127
+ style={{
128
+ height: 72,
129
+ width: 72,
130
+ borderWidth: 1,
131
+ borderColor: theme.colors.border,
132
+ borderRadius: 8
133
+ }}
134
+ >
135
+ <OIcon
136
+ url={cart?.business?.logo}
137
+ width={70}
138
+ height={70}
139
+ style={{ borderRadius: 16 }}
140
+ />
141
+ </View>
142
+ )}
143
+ <BIContentInfo>
144
+ <OText>{cart?.business?.name}</OText>
145
+ {orderState?.options?.type === 1 ? (
146
+ <View style={{ display: 'flex', flexDirection: 'row', alignItems: 'center' }}>
147
+ <MaterialCommunityIcon
148
+ name='clock-outline'
149
+ size={20}
150
+ />
151
+ <OText size={12}>{convertHoursToMinutes(cart?.business?.delivery_time)}</OText>
152
+ </View>
153
+ ) : (
154
+ <View style={{ display: 'flex', flexDirection: 'row', alignItems: 'center' }}>
155
+ <MaterialCommunityIcon
156
+ name='clock-outline'
157
+ size={20}
158
+ />
159
+ <OText size={12}>{convertHoursToMinutes(cart?.business?.pickup_time)}</OText>
160
+ </View>
161
+ )}
162
+ </BIContentInfo>
163
+ </BIInfo>
164
+
165
+ {!isClosed && !!isProducts && cart?.valid_products && cart?.total > 0 && (
166
+ <BITotal>
167
+ <OText size={12}>{t('CART_TOTAL', 'Total')}</OText>
168
+ <OText size={12} color='#000'>{parsePrice(cart?.total)}</OText>
169
+ </BITotal>
170
+ )}
171
+
172
+ {isClosed && (
173
+ <BITotal>
174
+ <OText>{t('CLOSED', 'Closed')}</OText>
175
+ </BITotal>
176
+ )}
177
+
178
+ {!isClosed && !isProducts && (
179
+ <BITotal>
180
+ <OText>{t('NO_PRODUCTS', 'No products')}</OText>
181
+ </BITotal>
182
+ )}
183
+ </BIHeader>
184
+ )
185
+ }
186
+
113
187
  return (
114
188
  cart?.products?.length > 0 ? (
115
189
  <ScrollView
116
190
  showsVerticalScrollIndicator={false}
117
191
  showsHorizontalScrollIndicator={false}
118
- style={{ height, backgroundColor: theme.colors.backgroundPage }}
192
+ style={{ height: isCartList ? 'auto' : height, backgroundColor: theme.colors.backgroundPage }}
119
193
  >
120
- <Container>
121
- <Title>
122
- <OText
123
- size={20}
124
- weight='bold'
125
- >
126
- {t('YOUR_CART', 'Your cart')}
127
- </OText>
128
- </Title>
194
+ <Container noPadding={isCartList}>
195
+ {!isCartList ? (
196
+ <Title>
197
+ <OText
198
+ size={20}
199
+ >
200
+ {t('YOUR_CART', 'Your cart')}
201
+ </OText>
202
+ </Title>
203
+ ) : (
204
+ <CartHeader />
205
+ )}
129
206
 
130
207
  {cart?.products?.length > 0 && (
131
208
  <View>
@@ -247,7 +324,7 @@ const CartUI = (props: any) => {
247
324
  <>
248
325
  <LineDivider />
249
326
 
250
- <Container>
327
+ <Container noPadding={isCartList}>
251
328
  <View style={{ padding: 0, }}>
252
329
  <ScrollView
253
330
  showsVerticalScrollIndicator={false}
@@ -323,7 +400,6 @@ const CartUI = (props: any) => {
323
400
  <Title>
324
401
  <OText
325
402
  size={20}
326
- weight='bold'
327
403
  >
328
404
  {t('YOUR_CART', 'Your cart')}
329
405
  </OText>
@@ -339,7 +415,7 @@ const CartUI = (props: any) => {
339
415
  onClose={() => setOpenTaxModal({ open: false, data: null })}
340
416
  entireModal
341
417
  >
342
- <TaxInformation data={openTaxModal.data} products={cart.products} />
418
+ <TaxInformation data={openTaxModal.data} products={cart?.products} />
343
419
  </OModal>
344
420
  </Container>
345
421
  )
@@ -61,3 +61,42 @@ export const OSCoupon = styled.View`
61
61
  width: 100%;
62
62
  padding: 5px 0px;
63
63
  `
64
+
65
+ export const BIHeader = styled.View`
66
+ flex-direction: row;
67
+ align-items: center;
68
+ justify-content: space-between;
69
+ border-bottom-width: 1px;
70
+ border-bottom-color: ${(props: any) => props.theme.colors.border};
71
+ padding-bottom: 10px;
72
+
73
+ ${(props: any) => props.isClosed && css`
74
+ background-color: rgba(0, 0, 0, 0.1);
75
+ `}
76
+ `
77
+
78
+ export const BIInfo = styled.View`
79
+ display: flex;
80
+ flex-direction: row;
81
+ align-items: center;
82
+ width: 55%;
83
+ `
84
+
85
+ export const BIContent = styled.View`
86
+ `
87
+
88
+ export const BIContentInfo = styled.View`
89
+ display: flex;
90
+ flex-direction: column;
91
+ justify-content: flex-end;
92
+ text-transform: capitalize;
93
+ margin-left: 10px;
94
+ max-width: 65%;
95
+ `
96
+
97
+ export const BITotal = styled.View`
98
+ width: 25%;
99
+ display: flex;
100
+ flex-direction: column;
101
+ align-items: flex-end;
102
+ `
@@ -1,60 +1,64 @@
1
- import React, { useEffect, useState } from 'react';
2
- import { useLanguage, useOrder } from 'ordering-components/native';
1
+ import React, { useState } from 'react';
2
+ import { useWindowDimensions, View } from 'react-native';
3
3
  import { useTheme } from 'styled-components/native';
4
- import { CCContainer, CCNotCarts, CCList } from './styles';
4
+ import { useLanguage } from 'ordering-components/native';
5
+ import Spinner from 'react-native-loading-spinner-overlay';
5
6
 
7
+ import { Title } from './styles';
6
8
  import { Cart } from '../Cart';
7
- import { OIcon, OText } from '../shared';
8
- import Spinner from 'react-native-loading-spinner-overlay';
9
- import { View } from 'react-native';
9
+ import { NotFoundSource } from '../NotFoundSource';
10
+ import { OText } from '../shared';
10
11
 
11
12
  export const CartContent = (props: any) => {
12
- const {
13
- carts,
14
- isOrderStateCarts
15
- } = props
13
+ const { carts } = props
16
14
 
17
- const theme = useTheme();
18
- const [, t] = useLanguage()
19
- const [isCartsLoading, setIsCartsLoading] = useState(false)
15
+ const { height } = useWindowDimensions()
16
+ const theme = useTheme();
17
+ const [, t] = useLanguage()
18
+ const [isCartsLoading, setIsCartsLoading] = useState(false)
20
19
 
21
- return (
22
- <CCContainer>
23
- {isOrderStateCarts && carts?.length > 0 && (
24
- <>
25
- <OText size={24} lineHeight={36} weight={'600'} style={{ marginBottom: 20 }}>
26
- {carts.length > 1 ? t('MY_CARTS', 'My Carts') : t('CART', 'Cart')}
27
- </OText>
28
- {carts.map((cart: any) => (
29
- <CCList key={cart.uuid} style={{ overflow: 'visible' }}>
30
- {cart.products.length > 0 && (
31
- <>
32
- <Cart
33
- cart={cart}
34
- onNavigationRedirect={props.onNavigationRedirect}
35
- isCartsLoading={isCartsLoading}
36
- setIsCartsLoading={setIsCartsLoading}
37
- />
38
- <View style={{ height: 8, backgroundColor: theme.colors.backgroundGray100, marginHorizontal: -40, marginTop: 20 }} />
39
- </>
40
- )}
41
- </CCList>
42
- ))}
43
- </>
44
- )}
45
- {(!carts || carts?.length === 0) && (
46
- <CCNotCarts>
47
- {/* <OIcon
48
- url={props.icon}
49
- width={200}
50
- height={122}
51
- /> */}
52
- <OText size={24} style={{ textAlign: 'center' }}>
53
- {t('CARTS_NOT_FOUND', 'You don\'t have carts available')}
54
- </OText>
55
- </CCNotCarts>
56
- )}
57
- <Spinner visible={isCartsLoading} />
58
- </CCContainer>
59
- )
20
+ return (
21
+ carts?.length > 0 ? (
22
+ <>
23
+ <Title>
24
+ <OText size={20} style={{ marginTop: 20 }}>
25
+ {carts.length > 1 ? t('MY_CARTS', 'My Carts') : t('CART', 'Cart')}
26
+ </OText>
27
+ </Title>
28
+ {carts.map((cart: any, i: number) => (
29
+ <View key={cart.uuid} style={{ overflow: 'visible' }}>
30
+ {cart.products.length > 0 && (
31
+ <>
32
+ <Cart
33
+ cart={cart}
34
+ isCartList
35
+ onNavigationRedirect={props.onNavigationRedirect}
36
+ isCartsLoading={isCartsLoading}
37
+ setIsCartsLoading={setIsCartsLoading}
38
+ />
39
+ {!(i === (carts.length - 1)) && (
40
+ <View style={{ height: 8, backgroundColor: theme.colors.backgroundGray100, marginVertical: 20 }} />
41
+ )}
42
+ </>
43
+ )}
44
+ </View>
45
+ ))}
46
+ <Spinner visible={isCartsLoading} />
47
+ </>
48
+ ) : (
49
+ <>
50
+ <Title>
51
+ <OText size={20}>
52
+ {t('MY_CARTS', 'My Carts')}
53
+ </OText>
54
+ </Title>
55
+ <View style={{ height: height * 0.7, justifyContent: 'center' }}>
56
+ <NotFoundSource
57
+ content={t('NO_CARTS_FOUND', 'Sorry, no carts found')}
58
+ image={theme.images.general.notFound}
59
+ />
60
+ </View>
61
+ </>
62
+ )
63
+ )
60
64
  }
@@ -1,19 +1,5 @@
1
1
  import styled from 'styled-components/native';
2
2
 
3
- export const CCContainer = styled.View`
4
- padding: 20px 40px;
5
- `
6
-
7
- export const CCNotCarts = styled.View`
8
- height: 300px;
9
- display: flex;
10
- flex-direction: column;
11
- justify-content: center;
12
- align-items: center;
13
- width: 80%;
14
- margin: auto;
15
- `
16
-
17
- export const CCList = styled.ScrollView`
18
- padding: 10px 0px;
3
+ export const Title = styled.View`
4
+ margin: 20px 0;
19
5
  `
@@ -1,127 +1,118 @@
1
1
  import React, { useEffect, useRef, useState } from 'react';
2
2
  import PhoneInput from "react-native-phone-number-input";
3
- import { StyleSheet, View } from 'react-native';
3
+ import { StyleSheet } from 'react-native';
4
4
  import { useLanguage, useConfig } from 'ordering-components/native';
5
- import { useTheme } from 'styled-components/native';
5
+
6
6
  import { Wrapper } from './styles'
7
7
 
8
8
  import { PhoneInputParams } from '../../types';
9
- import { OIcon, OText } from '../shared';
10
- import { transformCountryCode } from '../../utils'
9
+ import { OText } from '../shared';
10
+ import {transformCountryCode} from '../../utils'
11
+ import {I18nManager} from 'react-native'
12
+ import { useTheme } from 'styled-components/native';
11
13
 
12
14
  export const PhoneInputNumber = (props: PhoneInputParams) => {
13
- const {
14
- data,
15
- handleData,
16
- defaultValue,
17
- defaultCode,
18
- forwardRef,
19
- textInputProps,
20
- boxStyle,
21
- inputStyle,
22
- textStyle,
23
- flagStyle,
24
- noDropIcon
25
- } = props
26
-
27
- const theme = useTheme();
28
-
15
+ const {
16
+ data,
17
+ handleData,
18
+ defaultValue,
19
+ defaultCode,
20
+ forwardRef,
21
+ textInputProps
22
+ } = props
29
23
 
30
- const style = StyleSheet.create({
31
- input: {
32
- backgroundColor: theme.colors.white,
33
- borderRadius: 7.6,
34
- borderWidth: 1,
35
- borderColor: theme.colors.border,
36
- paddingBottom: 0,
37
- paddingTop: 0,
38
- flexGrow: 1,
39
- flex: 1,
40
- height: 50,
41
- },
42
- countryBtn: {
43
- borderWidth: 1,
44
- borderColor: theme.colors.border,
45
- borderRadius: 7.6,
46
- marginEnd: 9,
47
- }
48
- })
24
+ const theme = useTheme();
49
25
 
26
+ const style = StyleSheet.create({
27
+ input: {
28
+ backgroundColor: theme.colors.white,
29
+ borderRadius: 8,
30
+ borderWidth: 1,
31
+ borderColor: theme.colors.border,
32
+ paddingVertical: 0,
33
+ flexGrow: 1,
34
+ flex: 1,
35
+ height: 50,
36
+ },
37
+ countryBtn: {
38
+ borderWidth: 1,
39
+ borderColor: theme.colors.border,
40
+ borderRadius: 8,
41
+ marginEnd: 9,
42
+ }
43
+ })
50
44
 
51
- const [, t] = useLanguage()
52
- const [{ configs }] = useConfig()
53
- const phoneInput = useRef<PhoneInput>(null);
54
- const [userphoneNumber, setUserphoneNumber] = useState('');
45
+ const [, t] = useLanguage()
46
+ const [{ configs }] = useConfig()
47
+ const phoneInput = useRef<PhoneInput>(null);
48
+ const [userphoneNumber, setUserphoneNumber] = useState('');
55
49
 
56
- const handleChangeNumber = (number: any) => {
57
- setUserphoneNumber(number)
58
- }
50
+ const handleChangeNumber = (number: any) => {
51
+ setUserphoneNumber(number)
52
+ }
59
53
 
60
- useEffect(() => {
61
- if ((defaultValue && userphoneNumber) || defaultValue === undefined || defaultValue === '') {
62
- if (userphoneNumber) {
63
- const checkValid = phoneInput.current?.isValidNumber(userphoneNumber);
64
- const callingCode = phoneInput.current?.getCallingCode();
65
- const formattedNumber = phoneInput.current?.getNumberAfterPossiblyEliminatingZero();
66
- const regex = /^[0-9]*$/
67
- const cellphone = userphoneNumber.slice(0, 0) + userphoneNumber.slice(1, userphoneNumber.length)
68
- const validNumber = regex.test(cellphone)
69
- if ((!checkValid && formattedNumber?.number) || !validNumber) {
70
- handleData && handleData({
71
- ...data,
72
- error: t('INVALID_ERROR_PHONE_NUMBER', 'The Phone Number field is invalid')
73
- })
74
- return
75
- }
76
- handleData && handleData({
77
- ...data,
78
- error: '',
79
- phone: {
80
- country_phone_code: callingCode,
81
- cellphone: formattedNumber?.number
82
- }
83
- })
84
- } else {
85
- handleData && handleData({
86
- ...data,
87
- error: '',
88
- phone: {
89
- country_phone_code: null,
90
- cellphone: null
91
- }
92
- })
93
- }
94
- }
95
- }, [userphoneNumber])
54
+ useEffect(() => {
55
+ if((defaultValue && userphoneNumber) || !defaultValue){
56
+ if (userphoneNumber === '') return;
57
+ if (userphoneNumber) {
58
+ const checkValid = phoneInput.current?.isValidNumber(userphoneNumber);
59
+ const callingCode = phoneInput.current?.getCallingCode();
60
+ const formattedNumber = phoneInput.current?.getNumberAfterPossiblyEliminatingZero();
61
+ const regex = /^[0-9]*$/
62
+ const cellphone = userphoneNumber.slice(0, 0) + userphoneNumber.slice(1, userphoneNumber.length)
63
+ const validNumber = regex.test(cellphone)
64
+ if ((!checkValid && formattedNumber?.number) || !validNumber) {
65
+ handleData && handleData({
66
+ ...data,
67
+ error: t('INVALID_ERROR_PHONE_NUMBER', 'The Phone Number field is invalid')
68
+ })
69
+ return
70
+ }
71
+ handleData && handleData({
72
+ ...data,
73
+ error: '',
74
+ phone: {
75
+ country_phone_code: callingCode,
76
+ cellphone: formattedNumber?.number
77
+ }
78
+ })
79
+ } else {
80
+ handleData && handleData({
81
+ ...data,
82
+ error: '',
83
+ phone: {
84
+ country_phone_code: null,
85
+ cellphone: null
86
+ }
87
+ })
88
+ }
89
+ }
90
+ }, [userphoneNumber])
96
91
 
97
- return (
98
- <Wrapper>
99
- <PhoneInput
100
- ref={phoneInput}
101
- defaultValue={userphoneNumber || defaultValue}
102
- defaultCode={defaultCode ? transformCountryCode(defaultCode) : configs?.default_country_code?.value}
103
- onChangeFormattedText={(text: string) => handleChangeNumber(text)}
104
- withDarkTheme
105
- countryPickerProps={{ withAlphaFilter: true }}
106
- textContainerStyle={{ ...style.input, ...inputStyle ? inputStyle : {} }}
107
- textInputStyle={textStyle}
108
- codeTextStyle={textStyle}
109
- flagButtonStyle={flagStyle}
110
- countryPickerButtonStyle={{ ...style.countryBtn, ...boxStyle ? boxStyle : {} }}
111
- placeholder={t('PHONE_NUMBER', 'Phone Number')}
112
- textInputProps={{ autoCompleteType: 'tel', ref: forwardRef, ...textInputProps }}
113
- containerStyle={{ width: '100%' }}
114
- renderDropdownImage={noDropIcon ? <View /> : <OIcon src={theme.images.general.arrow_down} width={13} color={'#B1BCCC'}></OIcon>}
115
- />
116
- {!!data?.error && (
117
- <OText
118
- size={16}
119
- color={theme.colors.error}
120
- style={{ textAlign: 'center', marginTop: 5 }}
121
- >
122
- {data.error}
123
- </OText>
124
- )}
125
- </Wrapper>
126
- )
92
+ return (
93
+ <Wrapper>
94
+ <PhoneInput
95
+ ref={phoneInput}
96
+ defaultValue={userphoneNumber || defaultValue}
97
+ defaultCode={defaultCode ? transformCountryCode(defaultCode) : configs?.default_country_code?.value}
98
+ onChangeFormattedText={(text : string) => handleChangeNumber(text)}
99
+ withDarkTheme
100
+ textInputStyle={{textAlign: I18nManager.isRTL ? 'right' : 'left'}}
101
+ countryPickerProps={{withAlphaFilter:true}}
102
+ textContainerStyle={style.input}
103
+ placeholder={t('PHONE_NUMBER', 'Phone Number')}
104
+ countryPickerButtonStyle={{ ...style.countryBtn }}
105
+ textInputProps={{autoCompleteType: 'tel', ref: forwardRef, ...textInputProps}}
106
+ />
107
+ {!!data?.error && (
108
+ <OText
109
+ size={16}
110
+ color={theme.colors.error}
111
+ style={{ textAlign: 'center', marginTop: 5 }}
112
+ >
113
+ {data.error}
114
+ </OText>
115
+ )}
116
+ </Wrapper>
117
+ )
127
118
  }