ordering-ui-react-native 0.12.49 → 0.12.53

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 (21) hide show
  1. package/package.json +1 -1
  2. package/themes/business/src/components/GoogleMap/index.tsx +78 -4
  3. package/themes/business/src/components/OrderDetails/Business.tsx +11 -3
  4. package/themes/business/src/components/OrderDetails/Delivery.tsx +111 -101
  5. package/themes/business/src/components/OrderDetails/OrderContentComponent.tsx +54 -39
  6. package/themes/business/src/components/OrderDetails/OrderHeaderComponent.tsx +7 -7
  7. package/themes/business/src/components/OrderDetails/styles.tsx +11 -2
  8. package/themes/business/src/components/OrdersOption/index.tsx +5 -5
  9. package/themes/business/src/components/PreviousOrders/index.tsx +41 -26
  10. package/themes/doordash/src/components/ProductForm/index.tsx +37 -28
  11. package/themes/instacart/src/components/ProductForm/index.tsx +26 -15
  12. package/themes/original/src/components/ActiveOrders/index.tsx +19 -0
  13. package/themes/original/src/components/ActiveOrders/styles.tsx +5 -0
  14. package/themes/original/src/components/BusinessController/styles.tsx +5 -5
  15. package/themes/original/src/components/BusinessTypeFilter/index.tsx +16 -16
  16. package/themes/original/src/components/BusinessTypeFilter/styles.tsx +1 -0
  17. package/themes/original/src/components/BusinessesListing/index.tsx +8 -9
  18. package/themes/original/src/components/BusinessesListing/styles.tsx +1 -0
  19. package/themes/original/src/components/ProductForm/index.tsx +39 -36
  20. package/themes/single-business/src/components/ProductForm/index.tsx +15 -12
  21. package/themes/uber-eats/src/components/ProductForm/index.tsx +41 -44
@@ -187,7 +187,7 @@ const OrdersOptionUI = (props: OrdersOptionParams) => {
187
187
  };
188
188
 
189
189
  const getOrderStatus = (key: number) => {
190
- return orderStatus.find((status: any) => status.key === key)?.text;
190
+ return orderStatus.find((status: any) => status?.key === key)?.text;
191
191
  };
192
192
 
193
193
  const applyFilters = () => {
@@ -454,7 +454,7 @@ const OrdersOptionUI = (props: OrdersOptionParams) => {
454
454
  currentTabSelected !== 'logisticOrders' &&
455
455
  (
456
456
  <PreviousOrders
457
- orders={currentOrdersGroup.orders}
457
+ orders={currentOrdersGroup?.orders}
458
458
  onNavigationRedirect={onNavigationRedirect}
459
459
  getOrderStatus={getOrderStatus}
460
460
  handleClickOrder={handleClickOrder}
@@ -464,7 +464,7 @@ const OrdersOptionUI = (props: OrdersOptionParams) => {
464
464
  logisticOrders?.orders?.length > 0 &&
465
465
  currentTabSelected === 'logisticOrders' && (
466
466
  <PreviousOrders
467
- orders={logisticOrders.orders.filter((order: any) => !order?.expired).map((order: any) => ({ ...order, isLogistic: true }))}
467
+ orders={logisticOrders?.orders?.filter((order: any) => !order?.expired).map((order: any) => ({ ...order, isLogistic: true }))}
468
468
  onNavigationRedirect={onNavigationRedirect}
469
469
  getOrderStatus={getOrderStatus}
470
470
  handleClickLogisticOrder={handleClickLogisticOrder}
@@ -528,13 +528,13 @@ const OrdersOptionUI = (props: OrdersOptionParams) => {
528
528
  (currentOrdersGroup?.error?.length ||
529
529
  currentOrdersGroup?.orders?.length === 0)) ||
530
530
  (currentTabSelected === 'logisticOrders' &&
531
- (logisticOrders?.error?.length > 0 || logisticOrders?.orders?.length === 0))
531
+ (logisticOrders?.error?.length > 0 || logisticOrders?.orders?.length === 0 || !logisticOrders?.orders?.some(order => !order?.expired)))
532
532
  ) &&
533
533
  (
534
534
  <NotFoundSource
535
535
  content={
536
536
  ((currentTabSelected !== 'logisticOrders' && !currentOrdersGroup?.error?.length) ||
537
- (currentTabSelected === 'logisticOrders' && !logisticOrders?.error?.length))
537
+ (currentTabSelected === 'logisticOrders' && (!logisticOrders?.error?.length || (logisticOrders?.orders?.length > 0 && !logisticOrders?.orders?.some(order => !order?.expired)))))
538
538
  ? t('NO_RESULTS_FOUND', 'Sorry, no results found')
539
539
  : currentOrdersGroup?.error?.[0]?.message ||
540
540
  currentOrdersGroup?.error?.[0] ||
@@ -85,9 +85,9 @@ export const PreviousOrders = (props: any) => {
85
85
  <>
86
86
  {orders && orders?.length > 0 &&
87
87
  orders
88
- .filter((order: any) => hash[order?.id] ? false : (hash[order?.id] = true))
89
- .map((_order: any) => {
90
- const order = _order?.isLogistic && !_order?.order_group ? _order?.order : _order
88
+ ?.filter((order: any) => hash[order?.id] ? false : (hash[order?.id] = true))
89
+ ?.map((_order: any) => {
90
+ const order = _order?.isLogistic && !_order?.order_group && isLogisticOrder ? _order?.order : _order
91
91
  return (
92
92
  <View
93
93
  style={{
@@ -116,9 +116,9 @@ export const PreviousOrders = (props: any) => {
116
116
  </Logo>
117
117
  )}
118
118
  <Information>
119
- {order?.order_group && order?.order_group_id && (
119
+ {order?.order_group_id && (
120
120
  <OText>
121
- <OText>{order?.order_group?.orders?.length} {t('ORDERS', 'Orders')}</OText>
121
+ <OText>{(t('INVOICE_GROUP_NO', 'Group No.') + order?.order_group_id)}</OText>
122
122
  </OText>
123
123
  )}
124
124
  {order.business?.name && (
@@ -140,7 +140,7 @@ export const PreviousOrders = (props: any) => {
140
140
  numberOfLines={1}
141
141
  adjustsFontSizeToFit
142
142
  size={20}>
143
- {(order?.order_group && order?.order_group_id ? (t('INVOICE_GROUP_NO', 'Group No.') + order?.order_group_id) : (t('INVOICE_ORDER_NO', 'Order No.') + order.id)) + ' · '}
143
+ {(order?.order_group_id && order?.order_group && isLogisticOrder ? `${order?.order_group?.orders?.length} ${t('ORDERS', 'Orders')}` : (t('INVOICE_ORDER_NO', 'Order No.') + order.id)) + ' · '}
144
144
  {order?.delivery_datetime_utc
145
145
  ? parseDate(order?.delivery_datetime_utc)
146
146
  : parseDate(order?.delivery_datetime, { utc: false })}
@@ -171,26 +171,41 @@ export const PreviousOrders = (props: any) => {
171
171
  </TouchableOpacity>
172
172
  {isLogisticOrder && (
173
173
  <AcceptOrRejectOrder>
174
- <OButton
175
- text={t('REJECT', 'Reject')}
176
- onClick={() => handleClickLogisticOrder(2, _order?.id)}
177
- bgColor={theme.colors.danger}
178
- borderColor={theme.colors.danger}
179
- imgRightSrc={null}
180
- style={{ borderRadius: 7, height: 40 }}
181
- parentStyle={{ width: '45%' }}
182
- textStyle={{ color: theme.colors.dangerText }}
183
- />
184
- <OButton
185
- text={t('ACCEPT', 'Accept')}
186
- onClick={() => handleClickLogisticOrder(1, _order?.id)}
187
- bgColor={theme.colors.successOrder}
188
- borderColor={theme.colors.successOrder}
189
- imgRightSrc={null}
190
- style={{ borderRadius: 7, height: 40 }}
191
- parentStyle={{ width: '45%' }}
192
- textStyle={{ color: theme.colors.successText }}
193
- />
174
+ {order?.order_group_id && order?.order_group ? (
175
+ <OButton
176
+ text={t('VIEW_ORDER', 'View order')}
177
+ onClick={() => handlePressOrder({ ...order, logistic_order_id: _order?.id })}
178
+ bgColor={theme.colors.blueLight}
179
+ borderColor={theme.colors.blueLight}
180
+ imgRightSrc={null}
181
+ style={{ borderRadius: 7, height: 40 }}
182
+ parentStyle={{ width: '100%' }}
183
+ textStyle={{ color: theme.colors.primary }}
184
+ />
185
+ ) : (
186
+ <>
187
+ <OButton
188
+ text={t('REJECT', 'Reject')}
189
+ onClick={() => handleClickLogisticOrder(2, _order?.id)}
190
+ bgColor={theme.colors.danger}
191
+ borderColor={theme.colors.danger}
192
+ imgRightSrc={null}
193
+ style={{ borderRadius: 7, height: 40 }}
194
+ parentStyle={{ width: '45%' }}
195
+ textStyle={{ color: theme.colors.dangerText }}
196
+ />
197
+ <OButton
198
+ text={t('ACCEPT', 'Accept')}
199
+ onClick={() => handleClickLogisticOrder(1, _order?.id)}
200
+ bgColor={theme.colors.successOrder}
201
+ borderColor={theme.colors.successOrder}
202
+ imgRightSrc={null}
203
+ style={{ borderRadius: 7, height: 40 }}
204
+ parentStyle={{ width: '45%' }}
205
+ textStyle={{ color: theme.colors.successText }}
206
+ />
207
+ </>
208
+ )}
194
209
  </AcceptOrRejectOrder>
195
210
  )}
196
211
  </View>
@@ -172,24 +172,33 @@ export const ProductOptionsUI = (props: any) => {
172
172
  </View>
173
173
  </Placeholder>
174
174
  ) : (
175
- <>
176
- <OText style={{ flex: I18nManager.isRTL ? 0 : 1, ...theme.labels.large }}>{product?.name || productCart.name}</OText>
177
- {/* <OText size={20} style={{ flex: I18nManager.isRTL ? 1 : 0 }} color={theme.colors.primary}>{productCart.price ? parsePrice(productCart.price) : ''}</OText> */}
178
- </>
175
+ <View style={{ flexDirection: 'column', width: '100%' }}>
176
+ <OText size={20} style={{ flex: I18nManager.isRTL ? 0 : 1, marginBottom: 10 }}>{product?.name || productCart.name}</OText>
177
+ <View style={{ flexDirection: 'row', justifyContent: 'space-between' }}>
178
+ {((product?.sku && product?.sku !== '-1' && product?.sku !== '1') || (product?.estimated_person)) && (
179
+ <OText size={14} style={{ marginBottom: 10, flex: I18nManager.isRTL ? 1 : 0 }} color={'#909BA9'}>
180
+ {
181
+ ((product?.sku && product?.sku !== '-1' && product?.sku !== '1') || (productCart?.sku && productCart?.sku !== '-1' && productCart?.sku !== '1'))
182
+ && <>{t('SKU', 'Sku')}{' '}{product?.sku || productCart?.sku}</>
183
+ }
184
+ {product?.sku && product?.sku !== '-1' && product?.sku !== '1' && product?.estimated_person && (
185
+ <>&nbsp;&#183;&nbsp;</>
186
+ )}
187
+ {product?.estimated_person
188
+ && <>{product?.estimated_person}{' '}{t('ESTIMATED_PERSONS', 'persons')}</>
189
+ }
190
+ </OText>
191
+ )}
192
+ </View>
193
+ <OText size={16} style={{ flex: I18nManager.isRTL ? 1 : 0 }} color={theme.colors.primary}>{productCart.price ? parsePrice(productCart.price) : ''}</OText>
194
+ </View>
179
195
  )}
180
196
  </ProductTitle>
181
- <ProductDescription>
182
- <OText style={theme.labels.small as TextStyle} color={theme.colors.textSecondary}>{product?.description || productCart?.description}</OText>
183
- {(
184
- (product?.sku && product?.sku !== '-1' && product?.sku !== '1') ||
185
- (productCart?.sku && productCart?.sku !== '-1' && productCart?.sku !== '1')
186
- ) && (
187
- <>
188
- <OText size={20}>{t('SKU', 'Sku')}</OText>
189
- <OText>{product?.sku || productCart?.sku}</OText>
190
- </>
191
- )}
192
- </ProductDescription>
197
+ {(product?.description || productCart?.description) && (
198
+ <ProductDescription>
199
+ <OText color={theme.colors.textSecondary}>{product?.description || productCart?.description}</OText>
200
+ </ProductDescription>
201
+ )}
193
202
  {loading && !product ? (
194
203
  <>
195
204
  {[...Array(2)].map((item, i) => (
@@ -319,18 +328,18 @@ export const ProductOptionsUI = (props: any) => {
319
328
 
320
329
  <View style={{ width: '100%' }}>
321
330
  {/* {productCart && !isSoldOut && maxProductQuantity > 0 && auth && orderState.options?.address_id && ( */}
322
- <OButton
323
- onClick={() => handleSaveProduct()}
324
- imgRightSrc=''
325
- text={`${orderState.loading ? t('LOADING', 'Loading') : editMode ? t('UPDATE', 'Update') : t('ADD_TO_CART', 'Add to Cart')}`}
326
- textSub={`${orderState.loading ? '' : productCart.total ? parsePrice(productCart?.total) : ''}`}
327
- textStyle={{ color: saveErrors ? theme.colors.textSecondary : theme.colors.white, fontSize: 14, fontWeight: Platform.OS === 'ios' ? '600' : 'bold' }}
328
- style={{
329
- backgroundColor: saveErrors ? theme.colors.backgroundGray300 : theme.colors.primary,
330
- borderWidth: 1, shadowOpacity: 0, height: 40,
331
- borderColor: saveErrors ? theme.colors.backgroundGray300 : theme.colors.primary,
332
- }}
333
- />
331
+ <OButton
332
+ onClick={() => handleSaveProduct()}
333
+ imgRightSrc=''
334
+ text={`${orderState.loading ? t('LOADING', 'Loading') : editMode ? t('UPDATE', 'Update') : t('ADD_TO_CART', 'Add to Cart')}`}
335
+ textSub={`${orderState.loading ? '' : productCart.total ? parsePrice(productCart?.total) : ''}`}
336
+ textStyle={{ color: saveErrors ? theme.colors.textSecondary : theme.colors.white, fontSize: 14, fontWeight: Platform.OS === 'ios' ? '600' : 'bold' }}
337
+ style={{
338
+ backgroundColor: saveErrors ? theme.colors.backgroundGray300 : theme.colors.primary,
339
+ borderWidth: 1, shadowOpacity: 0, height: 40,
340
+ borderColor: saveErrors ? theme.colors.backgroundGray300 : theme.colors.primary,
341
+ }}
342
+ />
334
343
  {/* )} */}
335
344
  {auth && !orderState.options?.address_id && (
336
345
  orderState.loading ? (
@@ -120,7 +120,7 @@ export const ProductOptionsUI = (props: any) => {
120
120
  <ProductHeader
121
121
  source={{ uri: product?.images || productCart?.images }}
122
122
  resizeMode={'contain'}
123
- style={{height: windowWidth, maxHeight: windowWidth}}
123
+ style={{ height: windowWidth, maxHeight: windowWidth }}
124
124
  />
125
125
  </>
126
126
  )}
@@ -135,22 +135,33 @@ export const ProductOptionsUI = (props: any) => {
135
135
  </View>
136
136
  </Placeholder>
137
137
  ) : (
138
- <OText mBottom={7} style={{ flex: I18nManager.isRTL ? 0 : 1, ...theme.labels.subtitle, fontWeight: Platform.OS === 'ios' ? '600' : 'bold' }}>{product?.name || productCart.name}</OText>
138
+ <View style={{ flexDirection: 'column', width: '100%' }}>
139
+ <OText size={20} style={{ flex: I18nManager.isRTL ? 0 : 1, marginBottom: 10, fontWeight: Platform.OS === 'ios' ? '600' : 'bold' }}>{product?.name || productCart.name}</OText>
140
+ <View style={{ flexDirection: 'row', justifyContent: 'space-between' }}>
141
+ {((product?.sku && product?.sku !== '-1' && product?.sku !== '1') || (product?.estimated_person)) && (
142
+ <OText size={14} style={{ flex: I18nManager.isRTL ? 1 : 0 }} color={'#909BA9'} mBottom={7}>
143
+ {
144
+ ((product?.sku && product?.sku !== '-1' && product?.sku !== '1') || (productCart?.sku && productCart?.sku !== '-1' && productCart?.sku !== '1'))
145
+ && <>{t('SKU', 'Sku')}{' '}{product?.sku || productCart?.sku}</>
146
+ }
147
+ {product?.sku && product?.sku !== '-1' && product?.sku !== '1' && product?.estimated_person && (
148
+ <>&nbsp;&#183;&nbsp;</>
149
+ )}
150
+ {product?.estimated_person
151
+ && <>{product?.estimated_person}{' '}{t('ESTIMATED_PERSONS', 'persons')}</>
152
+ }
153
+ </OText>
154
+ )}
155
+ </View>
156
+ <OText size={16} mBottom={7} style={{ flex: I18nManager.isRTL ? 1 : 0 }} color={theme.colors.primary}>{productCart.price ? parsePrice(productCart.price) : ''}</OText>
157
+ </View>
139
158
  )}
140
159
  </ProductTitle>
141
- <ProductDescription>
142
- <OText mBottom={7} style={{ ...theme.labels.small }} color={theme.colors.textSecondary}>{product?.description?.trim() || productCart?.description?.trim()}</OText>
143
- <OText style={{ flex: I18nManager.isRTL ? 1 : 0, ...theme.labels.subtitle, fontWeight: Platform.OS === 'ios' ? '600' : 'bold' }} color={theme.colors.textPrimary}>{productCart.price ? parsePrice(productCart.price) : ''}</OText>
144
- {(
145
- (product?.sku && product?.sku !== '-1' && product?.sku !== '1') ||
146
- (productCart?.sku && productCart?.sku !== '-1' && productCart?.sku !== '1')
147
- ) && (
148
- <>
149
- <OText size={20}>{t('SKU', 'Sku')}</OText>
150
- <OText>{product?.sku || productCart?.sku}</OText>
151
- </>
152
- )}
153
- </ProductDescription>
160
+ {(product?.description || productCart?.description) && (
161
+ <ProductDescription>
162
+ <OText mBottom={7} style={{ ...theme.labels.small }} color={theme.colors.textSecondary}>{product?.description?.trim() || productCart?.description?.trim()}</OText>
163
+ </ProductDescription>
164
+ )}
154
165
  <View style={{ height: 16, backgroundColor: theme.colors.secundary, marginHorizontal: -40, marginBottom: 20 }} />
155
166
  {loading && !product ? (
156
167
  <>
@@ -10,6 +10,7 @@ import {
10
10
  OrderInformation,
11
11
  BusinessInformation,
12
12
  Price,
13
+ LoadMore
13
14
  } from './styles';
14
15
  import { View, StyleSheet } from 'react-native';
15
16
  import { getGoogleMapImage } from '../../utils';
@@ -113,6 +114,18 @@ export const ActiveOrders = (props: ActiveOrdersParams) => {
113
114
  orders.map((order: any, index: any) => (
114
115
  <Order key={order?.id || order?.uuid} order={order} index={index} />
115
116
  ))}
117
+ {pagination?.totalPages && pagination?.currentPage < pagination?.totalPages && (
118
+ <LoadMore>
119
+ <OButton
120
+ bgColor={theme.colors.white}
121
+ textStyle={{ color: theme.colors.primary, fontSize: 14 }}
122
+ text={t('LOAD_MORE_ORDERS', 'Load more orders')}
123
+ borderColor={theme.colors.primary}
124
+ onClick={loadMoreOrders}
125
+ style={styles.loadMoreButton}
126
+ />
127
+ </LoadMore>
128
+ )}
116
129
  </ActiveOrdersContainer>
117
130
  <View
118
131
  style={{
@@ -140,4 +153,10 @@ const styles = StyleSheet.create({
140
153
  alignItems: 'center',
141
154
  minWidth: 230,
142
155
  },
156
+ loadMoreButton: {
157
+ width: 200,
158
+ height: 46,
159
+ marginLeft: 'auto',
160
+ marginRight: 'auto',
161
+ },
143
162
  });
@@ -42,3 +42,8 @@ export const Price = styled.View`
42
42
  margin-left: 10px;
43
43
  width: 30%;
44
44
  `
45
+ export const LoadMore = styled.View`
46
+ flex-direction: row;
47
+ justify-content: center;
48
+ margin-top: 10px;
49
+ `
@@ -3,9 +3,9 @@ import styled, { css } from 'styled-components/native';
3
3
  export const Card = styled.TouchableOpacity`
4
4
  margin-vertical: 20px;
5
5
  border-radius: 7.6px;
6
- flex: 1;
7
6
  width: 100%;
8
- `;
7
+ position: relative;
8
+ `
9
9
 
10
10
  export const BusinessHero = styled.View`
11
11
  position: relative;
@@ -40,9 +40,9 @@ export const Metadata = styled.View`
40
40
  `;
41
41
 
42
42
  export const BusinessState = styled.View`
43
- position: absolute;
44
- top: 13px;
45
- end: 18px;
43
+ position: absolute;
44
+ top: 13px;
45
+ end: 18px;
46
46
  `
47
47
 
48
48
  export const BusinessLogo = styled.View`
@@ -29,7 +29,7 @@ export const BusinessTypeFilterUI = (props: BusinessTypeFilterParams) => {
29
29
  const [, t] = useLanguage();
30
30
 
31
31
  const theme = useTheme();
32
- const [isOpenAllCategories, setIsOpenAllCategories] = useState(false)
32
+ const [isOpenAllCategories, setIsOpenAllCategories] = useState(false)
33
33
 
34
34
  const renderTypes = ({ item }: any) => {
35
35
  return (
@@ -110,17 +110,17 @@ export const BusinessTypeFilterUI = (props: BusinessTypeFilterParams) => {
110
110
  entireModal
111
111
  >
112
112
  <ScrollView style={styles.allCategoriesContainer}>
113
- <OText
114
- size={20}
115
- mBottom={30}
116
- color={theme.colors.textSecondary}
117
- style={{ paddingHorizontal: 10 }}
118
- >
119
- {t('ALL_CATEGORIES', 'All categories')}
120
- </OText>
121
- <View style={styles.allCategoriesWrapper}>
122
- {typesState?.types.map((item: any) => (
123
- <TouchableOpacity
113
+ <OText
114
+ size={20}
115
+ mBottom={30}
116
+ color={theme.colors.textSecondary}
117
+ style={{ paddingHorizontal: 10 }}
118
+ >
119
+ {t('ALL_CATEGORIES', 'All categories')}
120
+ </OText>
121
+ <View style={styles.allCategoriesWrapper}>
122
+ {typesState?.types.map((item: any) => (
123
+ <TouchableOpacity
124
124
  key={item.id}
125
125
  style={styles.categoryStyle}
126
126
  onPress={() => {
@@ -149,9 +149,9 @@ export const BusinessTypeFilterUI = (props: BusinessTypeFilterParams) => {
149
149
  {t(`BUSINESS_TYPE_${item.name.replace(/\s/g, '_').toUpperCase()}`, item.name)}
150
150
  </OText>
151
151
  </TouchableOpacity>
152
- ))}
153
- </View>
154
- </ScrollView>
152
+ ))}
153
+ </View>
154
+ </ScrollView>
155
155
  </OModal>
156
156
  </>
157
157
  );
@@ -178,7 +178,7 @@ const styles = StyleSheet.create({
178
178
  marginHorizontal: 10,
179
179
  marginBottom: 40
180
180
  },
181
- allCategoriesContainer : {
181
+ allCategoriesContainer: {
182
182
  paddingHorizontal: 30,
183
183
  paddingVertical: 30
184
184
  },
@@ -5,6 +5,7 @@ export const BCContainer = styled.View`
5
5
  width: 100%;
6
6
  justify-content: flex-start;
7
7
  text-align: center;
8
+ min-height: 45px;
8
9
  `
9
10
 
10
11
  export const BusinessCategories = styled.View`
@@ -281,15 +281,14 @@ const BusinessesListingUI = (props: BusinessesListingParams) => {
281
281
  />
282
282
  )}
283
283
  {businessesList.businesses?.map(
284
- (business: any) =>
285
- !business.featured && (
286
- <BusinessController
287
- key={business.id}
288
- business={business}
289
- handleCustomClick={handleBusinessClick}
290
- orderType={orderState?.options?.type}
291
- />
292
- ),
284
+ (business: any) => (
285
+ <BusinessController
286
+ key={business.id}
287
+ business={business}
288
+ handleCustomClick={handleBusinessClick}
289
+ orderType={orderState?.options?.type}
290
+ />
291
+ )
293
292
  )}
294
293
  {businessesList.loading && (
295
294
  <>
@@ -71,5 +71,6 @@ export const FeaturedWrapper = styled.View`
71
71
 
72
72
  export const OrderProgressWrapper = styled.View`
73
73
  margin-top: 37px;
74
+ margin-bottom: 20px;
74
75
  padding-horizontal: 40px;
75
76
  `
@@ -13,7 +13,7 @@ import Swiper from 'react-native-swiper'
13
13
  import FastImage from 'react-native-fast-image';
14
14
  import IconAntDesign from 'react-native-vector-icons/AntDesign';
15
15
 
16
- import { View, TouchableOpacity, StyleSheet, Dimensions, Platform, AppRegistry } from 'react-native';
16
+ import { View, TouchableOpacity, StyleSheet, Dimensions, Platform, AppRegistry, I18nManager } from 'react-native';
17
17
 
18
18
  import {
19
19
  ProductHeader,
@@ -116,7 +116,7 @@ export const ProductOptionsUI = (props: any) => {
116
116
  slide1: {
117
117
  flex: 1,
118
118
  },
119
- mainSwiper : {
119
+ mainSwiper: {
120
120
  height: 258,
121
121
  },
122
122
  swiperButton: {
@@ -196,7 +196,7 @@ export const ProductOptionsUI = (props: any) => {
196
196
  useEffect(() => {
197
197
  const productImgList: any = []
198
198
  product?.images && productImgList.push(product.images)
199
- if(product?.gallery && product?.gallery.length > 0) {
199
+ if (product?.gallery && product?.gallery.length > 0) {
200
200
  for (const img of product?.gallery) {
201
201
  productImgList.push(img.file)
202
202
  }
@@ -296,7 +296,7 @@ export const ProductOptionsUI = (props: any) => {
296
296
  name="caretleft"
297
297
  color={theme.colors.white}
298
298
  size={13}
299
- // style={styles.starIcon}
299
+ // style={styles.starIcon}
300
300
  />
301
301
  </View>
302
302
  }
@@ -306,7 +306,7 @@ export const ProductOptionsUI = (props: any) => {
306
306
  name="caretright"
307
307
  color={theme.colors.white}
308
308
  size={13}
309
- // style={styles.starIcon}
309
+ // style={styles.starIcon}
310
310
  />
311
311
  </View>
312
312
  }
@@ -387,6 +387,20 @@ export const ProductOptionsUI = (props: any) => {
387
387
  style={{ flex: 1, marginBottom: 5 }}>
388
388
  {product?.name || productCart.name}
389
389
  </OText>
390
+ {((product?.sku && product?.sku !== '-1' && product?.sku !== '1') || (product?.estimated_person)) && (
391
+ <OText size={14} style={{ flex: I18nManager.isRTL ? 1 : 0 }} color={'#909BA9'} mBottom={7}>
392
+ {
393
+ ((product?.sku && product?.sku !== '-1' && product?.sku !== '1') || (productCart?.sku && productCart?.sku !== '-1' && productCart?.sku !== '1'))
394
+ && <>{t('SKU', 'Sku')}{' '}{product?.sku || productCart?.sku}</>
395
+ }
396
+ {product?.sku && product?.sku !== '-1' && product?.sku !== '1' && product?.estimated_person && (
397
+ <>&nbsp;&#183;&nbsp;</>
398
+ )}
399
+ {product?.estimated_person
400
+ && <>{product?.estimated_person}{' '}{t('ESTIMATED_PERSONS', 'persons')}</>
401
+ }
402
+ </OText>
403
+ )}
390
404
  <OText size={16} lineHeight={24} color={theme.colors.textNormal}>
391
405
  {productCart.price ? parsePrice(productCart.price) : ''}
392
406
  </OText>
@@ -397,17 +411,6 @@ export const ProductOptionsUI = (props: any) => {
397
411
  <OText color={theme.colors.textSecondary} size={12} lineHeight={18}>
398
412
  {product?.description || productCart?.description}
399
413
  </OText>
400
- {((product?.sku &&
401
- product?.sku !== '-1' &&
402
- product?.sku !== '1') ||
403
- (productCart?.sku &&
404
- productCart?.sku !== '-1' &&
405
- productCart?.sku !== '1')) && (
406
- <>
407
- <OText size={16}>{t('SKU', 'Sku')}</OText>
408
- <OText>{product?.sku || productCart?.sku}</OText>
409
- </>
410
- )}
411
414
  </ProductDescription>
412
415
  {loading && !product ? (
413
416
  <>
@@ -455,25 +458,25 @@ export const ProductOptionsUI = (props: any) => {
455
458
  style={{ marginBottom: 20 }}
456
459
  contentContainerStyle={{ paddingHorizontal: 33 }}
457
460
  >
458
- <TouchableOpacity
459
- key={`eopt_all_0`}
460
- onPress={() => setSelectedOpt(0)}
461
- style={[
462
- styles.extraItem,
463
- {
464
- borderBottomColor: selOpt == 0 ? theme.colors.textNormal : theme.colors.border,
465
- },
466
- ]}>
467
- <OText
468
- color={selOpt == 0 ? theme.colors.textNormal : theme.colors.textSecondary}
469
- size={selOpt == 0 ? 14 : 12}
470
- weight={selOpt == 0 ? '600' : 'normal'}>
471
- {t('ALL', 'All')}
472
- </OText>
473
- </TouchableOpacity>
474
- {product?.extras.map((extra: any) =>
475
- <ExtraOptions key={extra.id} options={extra.options} />
476
- )}
461
+ <TouchableOpacity
462
+ key={`eopt_all_0`}
463
+ onPress={() => setSelectedOpt(0)}
464
+ style={[
465
+ styles.extraItem,
466
+ {
467
+ borderBottomColor: selOpt == 0 ? theme.colors.textNormal : theme.colors.border,
468
+ },
469
+ ]}>
470
+ <OText
471
+ color={selOpt == 0 ? theme.colors.textNormal : theme.colors.textSecondary}
472
+ size={selOpt == 0 ? 14 : 12}
473
+ weight={selOpt == 0 ? '600' : 'normal'}>
474
+ {t('ALL', 'All')}
475
+ </OText>
476
+ </TouchableOpacity>
477
+ {product?.extras.map((extra: any) =>
478
+ <ExtraOptions key={extra.id} options={extra.options} />
479
+ )}
477
480
  </ExtraOptionWrap>
478
481
 
479
482
  {selOpt == 0 ? (
@@ -778,7 +781,7 @@ export const ProductOptionsUI = (props: any) => {
778
781
  isDisabled
779
782
  text={t('LOADING', 'Loading')}
780
783
  imgRightSrc=""
781
- textStyle={{fontSize: 10}}
784
+ textStyle={{ fontSize: 10 }}
782
785
  />
783
786
  ) : (
784
787
  <OButton onClick={navigation.navigate('AddressList')} />
@@ -9,7 +9,7 @@ import {
9
9
  import { useTheme } from 'styled-components/native';
10
10
  import { ProductIngredient } from '../ProductIngredient';
11
11
  import { ProductOption } from '../ProductOption';
12
- import { View, TouchableOpacity, StyleSheet, Dimensions, Platform, useWindowDimensions, Keyboard, KeyboardAvoidingView } from 'react-native';
12
+ import { View, TouchableOpacity, StyleSheet, Dimensions, Platform, useWindowDimensions, Keyboard, KeyboardAvoidingView, I18nManager } from 'react-native';
13
13
 
14
14
  import {
15
15
  ProductHeader,
@@ -312,6 +312,20 @@ export const ProductOptionsUI = (props: any) => {
312
312
  style={{ flex: 1, marginBottom: 5 }}>
313
313
  {product?.name || productCart.name}
314
314
  </OText>
315
+ {((product?.sku && product?.sku !== '-1' && product?.sku !== '1') || (product?.estimated_person)) && (
316
+ <OText size={14} style={{ flex: I18nManager.isRTL ? 1 : 0 }} color={'#909BA9'} mBottom={7}>
317
+ {
318
+ ((product?.sku && product?.sku !== '-1' && product?.sku !== '1') || (productCart?.sku && productCart?.sku !== '-1' && productCart?.sku !== '1'))
319
+ && <>{t('SKU', 'Sku')}{' '}{product?.sku || productCart?.sku}</>
320
+ }
321
+ {product?.sku && product?.sku !== '-1' && product?.sku !== '1' && product?.estimated_person && (
322
+ <>&nbsp;&#183;&nbsp;</>
323
+ )}
324
+ {product?.estimated_person
325
+ && <>{product?.estimated_person}{' '}{t('ESTIMATED_PERSONS', 'persons')}</>
326
+ }
327
+ </OText>
328
+ )}
315
329
  <OText size={16} lineHeight={24} color={theme.colors.textNormal}>
316
330
  {productCart.price ? parsePrice(productCart.price) : ''}
317
331
  </OText>
@@ -322,17 +336,6 @@ export const ProductOptionsUI = (props: any) => {
322
336
  <OText color={theme.colors.textSecondary} size={12} lineHeight={18}>
323
337
  {product?.description || productCart?.description}
324
338
  </OText>
325
- {((product?.sku &&
326
- product?.sku !== '-1' &&
327
- product?.sku !== '1') ||
328
- (productCart?.sku &&
329
- productCart?.sku !== '-1' &&
330
- productCart?.sku !== '1')) && (
331
- <>
332
- <OText size={16}>{t('SKU', 'Sku')}</OText>
333
- <OText>{product?.sku || productCart?.sku}</OText>
334
- </>
335
- )}
336
339
  </ProductDescription>
337
340
  {loading && !product ? (
338
341
  <>