ordering-ui-react-native 0.14.93 → 0.14.94-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 (120) hide show
  1. package/package.json +6 -3
  2. package/src/DeliveryApp.tsx +32 -1
  3. package/src/components/BusinessTypeFilter/index.tsx +9 -2
  4. package/src/components/BusinessTypeFilter/styles.tsx +1 -1
  5. package/src/components/BusinessesListing/index.tsx +1 -1
  6. package/src/components/Cart/index.tsx +1 -1
  7. package/src/components/Checkout/index.tsx +0 -1
  8. package/src/components/Home/index.tsx +3 -5
  9. package/src/components/LanguageSelector/index.tsx +65 -97
  10. package/src/components/LanguageSelector/styles.tsx +4 -17
  11. package/src/components/Messages/index.tsx +38 -30
  12. package/src/components/MomentOption/index.tsx +3 -1
  13. package/src/components/OrderDetails/index.tsx +26 -5
  14. package/src/components/PaymentOptions/index.tsx +7 -16
  15. package/src/components/PaymentOptionsWebView/index.tsx +123 -124
  16. package/src/components/ProductForm/index.tsx +1 -1
  17. package/src/components/ProductForm/styles.tsx +1 -0
  18. package/src/components/StripeElementsForm/index.tsx +27 -48
  19. package/src/components/UserProfileForm/index.tsx +35 -1
  20. package/src/components/VerifyPhone/styles.tsx +1 -2
  21. package/src/config.json +0 -2
  22. package/src/pages/Checkout.tsx +1 -1
  23. package/src/types/index.tsx +2 -9
  24. package/src/utils/index.tsx +2 -1
  25. package/themes/business/index.tsx +2 -0
  26. package/themes/business/src/components/Chat/index.tsx +32 -31
  27. package/themes/business/src/components/OrderDetails/Business.tsx +1 -0
  28. package/themes/business/src/components/OrderDetails/OrderHeaderComponent.tsx +85 -17
  29. package/themes/business/src/components/OrdersListManager/index.tsx +871 -0
  30. package/themes/business/src/components/OrdersListManager/styles.tsx +123 -0
  31. package/themes/business/src/components/OrdersListManager/utils.tsx +216 -0
  32. package/themes/business/src/components/OrdersOption/index.tsx +18 -68
  33. package/themes/business/src/components/OrdersOption/styles.tsx +2 -5
  34. package/themes/business/src/components/PreviousOrders/index.tsx +80 -23
  35. package/themes/doordash/src/components/BusinessesListing/index.tsx +1 -1
  36. package/themes/doordash/src/components/LoginForm/index.tsx +1 -2
  37. package/themes/instacart/src/components/BusinessesListing/index.tsx +1 -1
  38. package/themes/kiosk/src/components/BusinessController/index.tsx +27 -6
  39. package/themes/kiosk/src/components/BusinessController/styles.tsx +1 -1
  40. package/themes/kiosk/src/components/BusinessProductsListing/index.tsx +51 -24
  41. package/themes/kiosk/src/components/Cart/index.tsx +1 -1
  42. package/themes/kiosk/src/components/CartBottomSheet/index.tsx +1 -1
  43. package/themes/kiosk/src/components/CartBottomSheet/styles.tsx +1 -1
  44. package/themes/kiosk/src/components/CartContent/index.tsx +13 -3
  45. package/themes/kiosk/src/components/CartItem/index.tsx +20 -8
  46. package/themes/kiosk/src/components/CategoriesMenu/index.tsx +7 -5
  47. package/themes/kiosk/src/components/CustomerName/index.tsx +89 -88
  48. package/themes/kiosk/src/components/Intro/index.tsx +13 -13
  49. package/themes/kiosk/src/components/LanguageSelector/index.tsx +12 -8
  50. package/themes/kiosk/src/components/NavBar/index.tsx +14 -14
  51. package/themes/kiosk/src/components/OptionCard/index.tsx +1 -1
  52. package/themes/kiosk/src/components/OrderDetails/index.tsx +2 -2
  53. package/themes/kiosk/src/components/OrderSummary/index.tsx +1 -1
  54. package/themes/kiosk/src/components/OrderTypeCardSelector/index.tsx +10 -12
  55. package/themes/kiosk/src/components/ProductForm/index.tsx +172 -124
  56. package/themes/kiosk/src/components/ProductForm/styles.tsx +1 -1
  57. package/themes/kiosk/src/components/ProductOption/index.tsx +1 -0
  58. package/themes/kiosk/src/components/ProductOption/styles.tsx +1 -0
  59. package/themes/kiosk/src/components/UpsellingProducts/index.tsx +48 -34
  60. package/themes/kiosk/src/components/shared/OButton.tsx +5 -18
  61. package/themes/kiosk/src/components/shared/OCard.tsx +112 -78
  62. package/themes/original/index.tsx +34 -6
  63. package/themes/original/src/components/AddressForm/index.tsx +15 -10
  64. package/themes/original/src/components/AddressList/index.tsx +27 -1
  65. package/themes/original/src/components/AnalyticsSegment/index.tsx +127 -0
  66. package/themes/original/src/components/BusinessBasicInformation/index.tsx +100 -45
  67. package/themes/original/src/components/BusinessController/index.tsx +34 -18
  68. package/themes/original/src/components/BusinessMenuList/index.tsx +14 -5
  69. package/themes/original/src/components/BusinessPreorder/index.tsx +142 -121
  70. package/themes/original/src/components/BusinessProductsCategories/index.tsx +7 -5
  71. package/themes/original/src/components/BusinessProductsList/index.tsx +52 -8
  72. package/themes/original/src/components/BusinessProductsListing/index.tsx +21 -15
  73. package/themes/original/src/components/BusinessReviews/index.tsx +4 -3
  74. package/themes/original/src/components/BusinessesListing/index.tsx +39 -52
  75. package/themes/original/src/components/Cart/index.tsx +42 -9
  76. package/themes/original/src/components/CartContent/index.tsx +2 -2
  77. package/themes/original/src/components/Checkout/index.tsx +56 -32
  78. package/themes/original/src/components/Checkout/styles.tsx +7 -0
  79. package/themes/original/src/components/CouponControl/index.tsx +1 -0
  80. package/themes/original/src/components/DriverTips/index.tsx +1 -1
  81. package/themes/original/src/components/ForgotPasswordForm/index.tsx +8 -12
  82. package/themes/original/src/components/HighestRatedBusinesses/index.tsx +105 -90
  83. package/themes/original/src/components/LoginForm/index.tsx +83 -68
  84. package/themes/original/src/components/Messages/index.tsx +52 -45
  85. package/themes/original/src/components/Messages/styles.tsx +1 -3
  86. package/themes/original/src/components/MomentOption/index.tsx +127 -152
  87. package/themes/original/src/components/MomentOption/styles.tsx +42 -18
  88. package/themes/original/src/components/OrderDetails/index.tsx +103 -124
  89. package/themes/original/src/components/OrderDetails/styles.tsx +3 -1
  90. package/themes/original/src/components/OrderProgress/index.tsx +5 -6
  91. package/themes/original/src/components/OrderSummary/index.tsx +34 -1
  92. package/themes/original/src/components/OrdersOption/index.tsx +15 -46
  93. package/themes/original/src/components/OrdersOption/styles.tsx +0 -6
  94. package/themes/original/src/components/PaymentOptions/index.tsx +24 -25
  95. package/themes/original/src/components/PhoneInputNumber/index.tsx +15 -8
  96. package/themes/original/src/components/PlaceSpot/index.tsx +114 -0
  97. package/themes/original/src/components/PlaceSpot/styles.tsx +11 -0
  98. package/themes/original/src/components/PreviousOrders/index.tsx +19 -13
  99. package/themes/original/src/components/ProductForm/index.tsx +154 -105
  100. package/themes/original/src/components/ProductForm/styles.tsx +5 -3
  101. package/themes/original/src/components/ProductOptionSubOption/index.tsx +6 -1
  102. package/themes/original/src/components/ReviewOrder/index.tsx +10 -9
  103. package/themes/original/src/components/ReviewProducts/index.tsx +1 -1
  104. package/themes/original/src/components/SignupForm/index.tsx +173 -154
  105. package/themes/original/src/components/SingleProductCard/index.tsx +6 -13
  106. package/themes/original/src/components/SingleProductCard/styles.tsx +1 -1
  107. package/themes/original/src/components/StripeElementsForm/index.tsx +55 -72
  108. package/themes/original/src/components/UpsellingProducts/index.tsx +6 -6
  109. package/themes/original/src/components/UserDetails/index.tsx +4 -95
  110. package/themes/original/src/components/UserFormDetails/index.tsx +2 -14
  111. package/themes/original/src/components/UserProfile/index.tsx +16 -11
  112. package/themes/original/src/components/UserProfileForm/index.tsx +16 -8
  113. package/themes/original/src/components/VerifyPhone/index.tsx +10 -7
  114. package/themes/original/src/components/VerifyPhone/styles.tsx +2 -1
  115. package/themes/original/src/components/shared/HeaderTitle.tsx +20 -0
  116. package/themes/original/src/components/shared/index.tsx +2 -0
  117. package/themes/original/src/types/index.tsx +25 -9
  118. package/themes/single-business/src/components/OrderTypeSelector/index.tsx +5 -5
  119. package/themes/uber-eats/src/components/BusinessesListing/index.tsx +1 -1
  120. package/src/components/StripeMethodForm/index.tsx +0 -163
@@ -5,8 +5,6 @@ import { useTheme } from 'styled-components/native';
5
5
  import { OIcon, OText, OModal } from '../shared';
6
6
  import { BusinessBasicInformationParams } from '../../types';
7
7
  import { convertHoursToMinutes } from '../../utils';
8
- import { BusinessInformation } from '../BusinessInformation';
9
- import { BusinessReviews } from '../BusinessReviews';
10
8
  import dayjs from 'dayjs';
11
9
  import timezone from 'dayjs/plugin/timezone';
12
10
  import isBetween from 'dayjs/plugin/isBetween';
@@ -22,14 +20,19 @@ import {
22
20
  BusinessInfoItem,
23
21
  WrapReviews,
24
22
  WrapBusinessInfo,
23
+ TitleWrapper,
24
+ RibbonBox
25
25
  } from './styles';
26
26
  import { Fade, Placeholder, PlaceholderLine } from 'rn-placeholder';
27
27
  const types = ['food', 'laundry', 'alcohol', 'groceries'];
28
28
 
29
+ let BusinessInformation: null | React.ElementType = null
30
+ let BusinessReviews: null | React.ElementType = null
31
+
29
32
  export const BusinessBasicInformation = (
30
33
  props: BusinessBasicInformationParams,
31
34
  ) => {
32
- const { navigation, businessState, isBusinessInfoShow, logo, header } = props;
35
+ const { navigation, businessState, isBusinessInfoShow, logo, header, isPreOrder } = props;
33
36
  const { business, loading } = businessState;
34
37
 
35
38
  const theme = useTheme();
@@ -38,6 +41,25 @@ export const BusinessBasicInformation = (
38
41
  const [{ parsePrice, parseDistance, optimizeImage }] = useUtils();
39
42
  const [openBusinessInformation, setOpenBusinessInformation] = useState(false);
40
43
  const [openBusinessReviews, setOpenBusinessReviews] = useState(false);
44
+ const [businessInformationObtained, setBusinessInformationObtained] = useState(false)
45
+ const [businessReviewsObtained, setBusinessReviewsObtainedbtained] = useState(false)
46
+
47
+ const handleClickBusinessInformation = () => {
48
+ if (!businessInformationObtained) {
49
+ BusinessInformation = require('../BusinessInformation').BusinessInformation
50
+ setBusinessInformationObtained(true)
51
+ }
52
+ setOpenBusinessInformation(true)
53
+ }
54
+
55
+ const handleClickBusinessReviews = () => {
56
+ if (!businessReviewsObtained) {
57
+ BusinessReviews = require('../BusinessReviews').BusinessReviews
58
+ setBusinessReviewsObtainedbtained(true)
59
+ }
60
+ setOpenBusinessReviews(true)
61
+ }
62
+
41
63
  const getBusinessType = () => {
42
64
  if (Object.keys(business).length <= 0) return t('GENERAL', 'General');
43
65
  const _types: any = [];
@@ -51,7 +73,7 @@ export const BusinessBasicInformation = (
51
73
  return _types.join(', ');
52
74
  };
53
75
 
54
-
76
+
55
77
  useEffect(() => {
56
78
  if (businessState?.loading) return
57
79
  let timeout: any = null
@@ -65,16 +87,16 @@ export const BusinessBasicInformation = (
65
87
  })
66
88
  }
67
89
  if (lapse) {
68
- const to = currentDate.hour(lapse.close.hour).minute(lapse.close.minute)
69
- const timeToClose = (to.unix() - currentDate.unix()) * 1000
70
- timeout = setTimeout(() => {
71
- navigation.navigate('BusinessPreorder', { business: businessState?.business, handleBusinessClick: () => navigation?.goBack() })
72
- }, timeToClose)
90
+ const to = currentDate.hour(lapse.close.hour).minute(lapse.close.minute)
91
+ const timeToClose = (to.unix() - currentDate.unix()) * 1000
92
+ timeout = setTimeout(() => {
93
+ navigation.navigate('BusinessPreorder', { business: businessState?.business, handleBusinessClick: () => navigation?.goBack() })
94
+ }, timeToClose)
73
95
  }
74
96
  return () => {
75
- timeout && clearTimeout(timeout)
97
+ timeout && clearTimeout(timeout)
76
98
  }
77
- }, [businessState?.business])
99
+ }, [businessState?.business])
78
100
 
79
101
  return (
80
102
  <BusinessContainer>
@@ -90,7 +112,7 @@ export const BusinessBasicInformation = (
90
112
  optimizeImage(businessState?.business?.header, 'h_250,c_limit'),
91
113
  }}>
92
114
  {!isBusinessInfoShow && (
93
- <WrapBusinessInfo onPress={() => setOpenBusinessInformation(true)}>
115
+ <WrapBusinessInfo onPress={() => handleClickBusinessInformation()}>
94
116
  <OIcon src={theme.images.general.info} width={24} />
95
117
  </WrapBusinessInfo>
96
118
  )}
@@ -121,9 +143,29 @@ export const BusinessBasicInformation = (
121
143
  <PlaceholderLine height={30} width={20} />
122
144
  </Placeholder>
123
145
  ) : (
124
- <OText size={24} weight={'600'}>
125
- {business?.name}
126
- </OText>
146
+ <TitleWrapper>
147
+ <OText size={24} weight={'600'}>
148
+ {business?.name}
149
+ </OText>
150
+ {business?.ribbon?.enabled && (
151
+ <RibbonBox
152
+ bgColor={business?.ribbon?.color}
153
+ isRoundRect={business?.ribbon?.shape === shape?.rectangleRound}
154
+ isCapsule={business?.ribbon?.shape === shape?.capsuleShape}
155
+ >
156
+ <OText
157
+ size={10}
158
+ weight={'400'}
159
+ color={theme.colors.white}
160
+ numberOfLines={2}
161
+ ellipsizeMode='tail'
162
+ lineHeight={13}
163
+ >
164
+ {business?.ribbon?.text}
165
+ </OText>
166
+ </RibbonBox>
167
+ )}
168
+ </TitleWrapper>
127
169
  )}
128
170
  </BusinessInfoItem>
129
171
  {loading ? (
@@ -181,13 +223,17 @@ export const BusinessBasicInformation = (
181
223
  <WrapReviews>
182
224
  {!isBusinessInfoShow && (
183
225
  <>
184
- <TouchableOpacity onPress={() => navigation.navigate('BusinessPreorder', { business: businessState?.business, handleBusinessClick: () => navigation?.goBack() })}>
185
- <OText color={theme.colors.textSecondary} style={{ textDecorationLine: 'underline' }}>
186
- {t('PRE_ORDER', 'Preorder')}
187
- </OText>
188
- </TouchableOpacity>
189
- <OText size={12} color={theme.colors.textSecondary}>{' \u2022 '}</OText>
190
- <TouchableOpacity onPress={() => setOpenBusinessReviews(true)}>
226
+ {isPreOrder && (
227
+ <>
228
+ <TouchableOpacity onPress={() => navigation.navigate('BusinessPreorder', { business: businessState?.business, handleBusinessClick: () => navigation?.goBack() })}>
229
+ <OText color={theme.colors.textSecondary} style={{ textDecorationLine: 'underline' }}>
230
+ {t('PRE_ORDER', 'Preorder')}
231
+ </OText>
232
+ </TouchableOpacity>
233
+ <OText size={12} color={theme.colors.textSecondary}>{' \u2022 '}</OText>
234
+ </>
235
+ )}
236
+ <TouchableOpacity onPress={() => handleClickBusinessReviews()}>
191
237
  <OText color={theme.colors.textSecondary} style={{ textDecorationLine: 'underline' }}>
192
238
  {t('REVIEWS', 'Reviews')}
193
239
  </OText>
@@ -196,28 +242,37 @@ export const BusinessBasicInformation = (
196
242
  )}
197
243
  </WrapReviews>
198
244
  </BusinessInfo>
199
- <OModal
200
- titleSectionStyle={styles.modalTitleSectionStyle}
201
- open={openBusinessInformation}
202
- onClose={() => setOpenBusinessInformation(false)}
203
- isNotDecoration>
204
- <BusinessInformation
205
- businessState={businessState}
206
- business={business}
207
- />
208
- </OModal>
209
- <OModal
210
- entireModal
211
- titleSectionStyle={styles.modalTitleSectionStyle}
212
- open={openBusinessReviews}
213
- onClose={() => setOpenBusinessReviews(false)}
214
- isNotDecoration>
215
- <BusinessReviews
216
- businessState={businessState}
217
- businessId={business.id}
218
- reviews={business.reviews?.reviews}
219
- />
220
- </OModal>
245
+ {businessInformationObtained ? (
246
+ <OModal
247
+ titleSectionStyle={styles.modalTitleSectionStyle}
248
+ open={openBusinessInformation}
249
+ onClose={() => setOpenBusinessInformation(false)}
250
+ isNotDecoration>
251
+ {BusinessInformation && (
252
+ <BusinessInformation
253
+ businessState={businessState}
254
+ business={business}
255
+ />
256
+ )}
257
+ </OModal>
258
+ ) : null}
259
+ {businessReviewsObtained ? (
260
+ <OModal
261
+ entireModal
262
+ titleSectionStyle={styles.modalTitleSectionStyle}
263
+ open={openBusinessReviews}
264
+ onClose={() => setOpenBusinessReviews(false)}
265
+ isNotDecoration
266
+ >
267
+ {BusinessReviews && (
268
+ <BusinessReviews
269
+ businessState={businessState}
270
+ businessId={business.id}
271
+ reviews={business.reviews?.reviews}
272
+ />
273
+ )}
274
+ </OModal>
275
+ ) : null}
221
276
  </BusinessContainer>
222
277
  );
223
278
  };
@@ -262,4 +317,4 @@ const styles = StyleSheet.create({
262
317
  zIndex: 100,
263
318
  left: 40
264
319
  },
265
- });
320
+ });
@@ -4,6 +4,7 @@ import {
4
4
  useUtils,
5
5
  useOrder,
6
6
  useLanguage,
7
+ useConfig
7
8
  } from 'ordering-components/native';
8
9
  import { OIcon, OText } from '../shared';
9
10
  import { StyleSheet, View } from 'react-native';
@@ -25,13 +26,26 @@ import FontAwesomeIcon from 'react-native-vector-icons/FontAwesome5';
25
26
  import FastImage from 'react-native-fast-image'
26
27
 
27
28
  export const BusinessControllerUI = (props: BusinessControllerParams) => {
28
- const { business, handleClick, navigation, isBusinessOpen } = props;
29
- const [{ parsePrice, parseDistance, parseNumber, optimizeImage }] =
30
- useUtils();
29
+ const {
30
+ business,
31
+ handleClick,
32
+ navigation,
33
+ isBusinessOpen,
34
+ style,
35
+ businessHeader,
36
+ businessFeatured,
37
+ businessLogo,
38
+ businessReviews,
39
+ businessDeliveryPrice,
40
+ businessDeliveryTime,
41
+ businessPickupTime,
42
+ businessDistance
43
+ } = props;
44
+ const [{ parsePrice, parseDistance, parseNumber, optimizeImage }] = useUtils();
31
45
  const [orderState] = useOrder();
46
+ const [configState] = useConfig();
32
47
  const [, t] = useLanguage();
33
48
  const theme = useTheme()
34
-
35
49
  const styles = StyleSheet.create({
36
50
  headerStyle: {
37
51
  borderTopLeftRadius: 7.6,
@@ -111,18 +125,18 @@ export const BusinessControllerUI = (props: BusinessControllerParams) => {
111
125
  <FastImage
112
126
  style={{ height: 120 }}
113
127
  source={{
114
- uri: optimizeImage(business?.header, 'h_120,c_limit'),
115
- priority: FastImage.priority.normal,
128
+ uri: optimizeImage(businessHeader || business?.header, 'h_500,c_limit'),
129
+ priority: FastImage.priority.normal,
116
130
  }}
117
131
  resizeMode={FastImage.resizeMode.cover}
118
132
  />
119
- {business?.featured && (
133
+ {(businessFeatured ?? business?.featured) && (
120
134
  <View style={styles.featured}>
121
135
  <FontAwesomeIcon name="crown" size={26} color="gold" />
122
136
  </View>
123
137
  )}
124
138
  <BusinessState>
125
- {!isBusinessOpen && (
139
+ {!isBusinessOpen && (configState?.configs?.preorder_status_enabled?.value === '1') && (
126
140
  <View style={styles.businessStateView}>
127
141
  <OText
128
142
  color={theme.colors.textThird}
@@ -140,17 +154,17 @@ export const BusinessControllerUI = (props: BusinessControllerParams) => {
140
154
  <FastImage
141
155
  style={{ width: 56, height: 56 }}
142
156
  source={{
143
- uri: optimizeImage(business?.logo, 'h_60,c_limit'),
144
- priority: FastImage.priority.normal,
157
+ uri: optimizeImage(businessLogo || business?.logo, 'h_150,c_limit'),
158
+ priority: FastImage.priority.normal,
145
159
  }}
146
160
  resizeMode={FastImage.resizeMode.cover}
147
161
  />
148
162
  </BusinessLogo>
149
- {business?.reviews?.total > 0 && (
163
+ {(businessReviews?.reviews?.total > 0 ?? business?.reviews?.total > 0) && (
150
164
  <Reviews>
151
165
  <OIcon src={theme.images.general.star} width={12} style={styles.starIcon} />
152
166
  <OText size={10} style={{ lineHeight: 15 }}>
153
- {parseNumber(business?.reviews?.total, { separator: '.' })}
167
+ {parseNumber(businessReviews?.reviews?.total ?? business?.reviews?.total, { separator: '.' })}
154
168
  </OText>
155
169
  </Reviews>
156
170
  )}
@@ -176,15 +190,17 @@ export const BusinessControllerUI = (props: BusinessControllerParams) => {
176
190
  </View>
177
191
  ) : (
178
192
  <View style={styles.bullet}>
179
- <OText size={10} color={theme.colors.textSecondary}>
180
- {`${t('DELIVERY_FEE', 'Delivery fee')} ${parsePrice(business?.delivery_price) + ' \u2022 '}`}
181
- </OText>
193
+ {orderState?.options?.type === 1 && (
194
+ <OText size={10} color={theme.colors.textSecondary}>
195
+ {`${t('DELIVERY_FEE', 'Delivery fee')} ${parsePrice(businessDeliveryPrice ?? business?.delivery_price) + ' \u2022 '}`}
196
+ </OText>
197
+ )}
182
198
  <OText size={10} color={theme.colors.textSecondary}>{`${convertHoursToMinutes(
183
199
  orderState?.options?.type === 1
184
- ? business?.delivery_time
185
- : business?.pickup_time,
200
+ ? (businessDeliveryTime ?? business?.delivery_time)
201
+ : (businessPickupTime ?? business?.pickup_time),
186
202
  )} \u2022 `}</OText>
187
- <OText size={10} color={theme.colors.textSecondary}>{parseDistance(business?.distance)}</OText>
203
+ <OText size={10} color={theme.colors.textSecondary}>{parseDistance(businessDistance ?? business?.distance)}</OText>
188
204
  </View>
189
205
  )}
190
206
  </Metadata>
@@ -1,4 +1,4 @@
1
- import React from 'react'
1
+ import React, { useEffect } from 'react'
2
2
  import { useLanguage, BusinessMenuListing } from 'ordering-components/native'
3
3
  import { OText } from '../shared'
4
4
  import { BusinessMenuListParams } from '../../types'
@@ -7,6 +7,7 @@ import { useTheme } from 'styled-components/native'
7
7
  import IconAntDesign from 'react-native-vector-icons/AntDesign'
8
8
  import { Fade, Placeholder, PlaceholderLine } from 'rn-placeholder'
9
9
  import SelectDropdown from 'react-native-select-dropdown'
10
+ import { useSafeAreaInsets } from 'react-native-safe-area-context';
10
11
 
11
12
  const windowHeight = Dimensions.get('window').height;
12
13
 
@@ -18,6 +19,7 @@ const BusinessMenuListUI = (props: BusinessMenuListParams) => {
18
19
 
19
20
  const [, t] = useLanguage()
20
21
  const theme = useTheme()
22
+ const { top } = useSafeAreaInsets()
21
23
 
22
24
  const styles = StyleSheet.create({
23
25
  container: {
@@ -34,7 +36,7 @@ const BusinessMenuListUI = (props: BusinessMenuListParams) => {
34
36
  height: 44,
35
37
  width: '100%'
36
38
  }
37
- })
39
+ })
38
40
 
39
41
  const dropDownIcon = () => {
40
42
  return (
@@ -46,12 +48,18 @@ const BusinessMenuListUI = (props: BusinessMenuListParams) => {
46
48
  )
47
49
  }
48
50
 
51
+ useEffect(() => {
52
+ if (!businessMenuList?.loading && businessMenuList?.menus?.length === 1){
53
+ setMenu(businessMenuList?.menus[0])
54
+ }
55
+ }, [businessMenuList?.menus])
56
+
49
57
  return (
50
58
  <>
51
59
  {businessMenuList.loading ? (
52
60
  <Placeholder Animation={Fade}>
53
61
  <View>
54
- <PlaceholderLine height={44}/>
62
+ <PlaceholderLine height={44} />
55
63
  </View>
56
64
  </Placeholder>
57
65
  ) : (
@@ -65,6 +73,7 @@ const BusinessMenuListUI = (props: BusinessMenuListParams) => {
65
73
  onSelect={(selectedItem, index) => {
66
74
  setMenu(selectedItem)
67
75
  }}
76
+ defaultValue={businessMenuList?.menus?.length === 1 && businessMenuList?.menus[0]}
68
77
  buttonTextAfterSelection={(selectedItem, index) => {
69
78
  return selectedItem.name
70
79
  }}
@@ -81,7 +90,7 @@ const BusinessMenuListUI = (props: BusinessMenuListParams) => {
81
90
  dropdownStyle={{
82
91
  borderRadius: 8,
83
92
  borderColor: theme.colors.lightGray,
84
- marginTop: Platform.OS === 'ios' ? 12 : -15,
93
+ marginTop: Platform.OS === 'ios' ? 12 : -top,
85
94
  maxHeight: 160
86
95
  }}
87
96
  rowStyle={{
@@ -123,4 +132,4 @@ export const BusinessMenuList = (props: any) => {
123
132
  };
124
133
 
125
134
  return <BusinessMenuListing {...businessMenuListProps} />;
126
- };
135
+ };