ordering-ui-react-native 0.16.51 → 0.16.54
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.
- package/package.json +1 -1
- package/themes/original/src/components/BusinessBasicInformation/index.tsx +197 -142
- package/themes/original/src/components/BusinessBasicInformation/styles.tsx +2 -2
- package/themes/original/src/components/BusinessProductsListing/index.tsx +34 -8
- package/themes/original/src/components/BusinessProductsListing/styles.tsx +5 -0
- package/themes/original/src/components/BusinessesListing/Layout/Appointment/index.tsx +9 -1
- package/themes/original/src/components/BusinessesListing/Layout/Appointment/styles.tsx +3 -2
- package/themes/original/src/components/BusinessesListing/Layout/Original/index.tsx +216 -67
- package/themes/original/src/components/BusinessesListing/Layout/Original/styles.tsx +46 -2
- package/themes/original/src/components/BusinessesListing/index.tsx +69 -21
- package/themes/original/src/components/GoogleMap/index.tsx +10 -11
- package/themes/original/src/components/OrderDetails/index.tsx +32 -34
- package/themes/original/src/components/ReviewOrder/index.tsx +79 -99
- package/themes/original/src/components/ReviewOrder/styles.tsx +0 -9
- package/themes/original/src/components/ReviewTrigger/index.tsx +118 -0
- package/themes/original/src/components/ReviewTrigger/styles.tsx +34 -0
- package/themes/original/src/components/ServiceForm/index.tsx +15 -5
- package/themes/original/src/components/SingleProductCard/index.tsx +106 -88
- package/themes/original/src/components/SingleProductCard/styles.tsx +2 -2
- package/themes/original/src/components/shared/OBottomPopup.tsx +31 -9
- package/themes/original/src/components/shared/OButton.tsx +2 -0
- package/themes/original/src/types/index.tsx +16 -15
|
@@ -361,8 +361,6 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
|
|
|
361
361
|
id: order?.id,
|
|
362
362
|
business_id: order?.business_id,
|
|
363
363
|
logo: order.business?.logo,
|
|
364
|
-
business_name: order?.business?.name,
|
|
365
|
-
delivery_datetime: order?.delivery_datetime,
|
|
366
364
|
driver: order?.driver,
|
|
367
365
|
products: order?.products,
|
|
368
366
|
review: order?.review,
|
|
@@ -524,41 +522,41 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
|
|
|
524
522
|
<OrderData>
|
|
525
523
|
<View style={styles.linkWrapper}>
|
|
526
524
|
{
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
>
|
|
537
|
-
<OText
|
|
538
|
-
size={10}
|
|
539
|
-
lineHeight={15}
|
|
540
|
-
color={theme.colors.primary}
|
|
541
|
-
style={{ textDecorationLine: 'underline' }}
|
|
525
|
+
(
|
|
526
|
+
parseInt(order?.status) === 1 ||
|
|
527
|
+
parseInt(order?.status) === 11 ||
|
|
528
|
+
parseInt(order?.status) === 15
|
|
529
|
+
) && !order.review && !isReviewed && (
|
|
530
|
+
<TouchableOpacity
|
|
531
|
+
activeOpacity={0.7}
|
|
532
|
+
style={{ marginTop: 6, marginRight: 10 }}
|
|
533
|
+
onPress={() => handleClickOrderReview(order)}
|
|
542
534
|
>
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
535
|
+
<OText
|
|
536
|
+
size={10}
|
|
537
|
+
lineHeight={15}
|
|
538
|
+
color={theme.colors.primary}
|
|
539
|
+
style={{ textDecorationLine: 'underline' }}
|
|
540
|
+
>
|
|
541
|
+
{t('REVIEW_YOUR_ORDER', 'Review your order')}
|
|
542
|
+
</OText>
|
|
543
|
+
</TouchableOpacity>
|
|
544
|
+
)}
|
|
545
|
+
<TouchableOpacity
|
|
546
|
+
activeOpacity={0.7}
|
|
547
|
+
style={{ marginTop: 6 }}
|
|
548
|
+
onPress={() => setIsOrderHistory(true)}
|
|
551
549
|
|
|
550
|
+
>
|
|
551
|
+
<OText
|
|
552
|
+
size={10}
|
|
553
|
+
lineHeight={15}
|
|
554
|
+
color={theme.colors.primary}
|
|
555
|
+
style={{ textDecorationLine: 'underline', textTransform: 'capitalize' }}
|
|
552
556
|
>
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
color={theme.colors.primary}
|
|
557
|
-
style={{ textDecorationLine: 'underline', textTransform: 'capitalize' }}
|
|
558
|
-
>
|
|
559
|
-
{t('VIEW_DETAILS', 'View Details')}
|
|
560
|
-
</OText>
|
|
561
|
-
</TouchableOpacity>
|
|
557
|
+
{t('VIEW_DETAILS', 'View Details')}
|
|
558
|
+
</OText>
|
|
559
|
+
</TouchableOpacity>
|
|
562
560
|
</View>
|
|
563
561
|
|
|
564
562
|
<StaturBar>
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import React, { useState, useEffect } from 'react'
|
|
2
|
-
import
|
|
3
|
-
import { OrderReview as ReviewOrderController, useLanguage, useToast, ToastType, useUtils } from 'ordering-components/native'
|
|
2
|
+
import { OrderReview as ReviewOrderController, useLanguage, useToast, ToastType } from 'ordering-components/native'
|
|
4
3
|
import { useForm, Controller } from 'react-hook-form'
|
|
5
4
|
import LinearGradient from 'react-native-linear-gradient'
|
|
6
5
|
|
|
@@ -12,9 +11,7 @@ import {
|
|
|
12
11
|
ActionContainer,
|
|
13
12
|
SkipButton,
|
|
14
13
|
RatingBarContainer,
|
|
15
|
-
RatingTextContainer
|
|
16
|
-
RatingStarContainer,
|
|
17
|
-
PlacedDate
|
|
14
|
+
RatingTextContainer
|
|
18
15
|
} from './styles'
|
|
19
16
|
import { OButton, OIcon, OInput, OText } from '../shared'
|
|
20
17
|
import { TouchableOpacity, StyleSheet, View, I18nManager } from 'react-native';
|
|
@@ -91,11 +88,10 @@ export const ReviewOrderUI = (props: ReviewOrderParams) => {
|
|
|
91
88
|
const [, t] = useLanguage()
|
|
92
89
|
const [, { showToast }] = useToast()
|
|
93
90
|
const { handleSubmit, control, errors } = useForm()
|
|
94
|
-
|
|
91
|
+
|
|
95
92
|
const [alertState, setAlertState] = useState<{ open: boolean, content: Array<any>, success?: boolean }>({ open: false, content: [], success: false })
|
|
96
93
|
const [comments, setComments] = useState<Array<any>>([])
|
|
97
94
|
const [extraComment, setExtraComment] = useState('')
|
|
98
|
-
const placedOnDate = parseDate(order?.delivery_datetime, { outputFormat: 'dddd MMMM DD, YYYY' })
|
|
99
95
|
|
|
100
96
|
const onSubmit = () => {
|
|
101
97
|
if (Object.values(stars).some((value: any) => value === 0)) {
|
|
@@ -195,15 +191,14 @@ export const ReviewOrderUI = (props: ReviewOrderParams) => {
|
|
|
195
191
|
<>
|
|
196
192
|
<ReviewOrderContainer>
|
|
197
193
|
<NavBar
|
|
198
|
-
title={t('
|
|
194
|
+
title={t('REVIEW_ORDER', 'Review your Order')}
|
|
199
195
|
titleAlign={'center'}
|
|
200
|
-
leftImg={theme.images.general.close}
|
|
201
196
|
onActionLeft={() => navigation?.canGoBack() && navigation.goBack()}
|
|
202
197
|
showCall={false}
|
|
203
198
|
btnStyle={{ paddingLeft: 0 }}
|
|
204
|
-
style={{ flexDirection: 'column', alignItems: 'flex-start'
|
|
205
|
-
titleWrapStyle={{ paddingHorizontal: 0
|
|
206
|
-
titleStyle={{
|
|
199
|
+
style={{ flexDirection: 'column', alignItems: 'flex-start' }}
|
|
200
|
+
titleWrapStyle={{ paddingHorizontal: 0 }}
|
|
201
|
+
titleStyle={{ marginRight: 0, marginLeft: 0 }}
|
|
207
202
|
/>
|
|
208
203
|
<BusinessLogo>
|
|
209
204
|
<View style={styles.logoWrapper}>
|
|
@@ -214,7 +209,6 @@ export const ReviewOrderUI = (props: ReviewOrderParams) => {
|
|
|
214
209
|
/>
|
|
215
210
|
</View>
|
|
216
211
|
</BusinessLogo>
|
|
217
|
-
{!!order?.business_name && <OText style={{ textAlign: 'center', marginTop: 15 }} color={theme.colors.textNormal}>{order?.business_name}</OText>}
|
|
218
212
|
{order?.review ? (
|
|
219
213
|
<View style={styles.reviewedStyle}>
|
|
220
214
|
<OText color={theme.colors.primary}>{t('ORDER_REVIEWED', 'This order has been already reviewed')}</OText>
|
|
@@ -222,92 +216,78 @@ export const ReviewOrderUI = (props: ReviewOrderParams) => {
|
|
|
222
216
|
) : (
|
|
223
217
|
<View style={{ flex: 1, justifyContent: 'flex-end' }}>
|
|
224
218
|
<FormReviews>
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
<
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
219
|
+
<OText mBottom={13} color={theme.colors.textNormal}>{t('HOW_WAS_YOUR_ORDER', 'How was your order?')}</OText>
|
|
220
|
+
<RatingBarContainer>
|
|
221
|
+
<LinearGradient
|
|
222
|
+
start={{ x: 0.0, y: 0.0 }}
|
|
223
|
+
end={{ x: qualificationList[stars.quality - 1]?.percent || 0, y: 0 }}
|
|
224
|
+
locations={[.9999, .9999]}
|
|
225
|
+
colors={[theme.colors.primary, theme.colors.backgroundGray200]}
|
|
226
|
+
style={styles.statusBar}
|
|
227
|
+
/>
|
|
228
|
+
<RatingTextContainer>
|
|
229
|
+
{qualificationList.map((qualification: any) => (
|
|
230
|
+
<View
|
|
231
|
+
key={qualification.key}
|
|
232
|
+
style={{ ...qualification.parentStyle, ...styles.ratingItemContainer }}
|
|
233
|
+
>
|
|
234
|
+
<TouchableOpacity
|
|
235
|
+
style={qualification.isInnerStyle && styles.ratingItem}
|
|
236
|
+
onPress={() => handleChangeStars(qualification.key)}
|
|
240
237
|
>
|
|
241
|
-
<
|
|
242
|
-
style={
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
238
|
+
<View
|
|
239
|
+
style={{
|
|
240
|
+
...styles.ratingLineStyle,
|
|
241
|
+
backgroundColor: (qualification.pointerColor && !(stars.quality >= qualification.key)) ? theme.colors.dusk : 'transparent'
|
|
242
|
+
}}
|
|
243
|
+
/>
|
|
244
|
+
<OText size={12} color={stars.quality === qualification.key ? theme.colors.black : theme.colors.backgroundGray200}>{qualification.text}</OText>
|
|
245
|
+
</TouchableOpacity>
|
|
246
|
+
</View>
|
|
247
|
+
))}
|
|
248
|
+
</RatingTextContainer>
|
|
249
|
+
</RatingBarContainer>
|
|
250
|
+
|
|
251
|
+
<OText style={{ marginTop: 30 }} color={theme.colors.textNormal}>
|
|
252
|
+
{commentsList[stars?.quality || 1]?.title}
|
|
253
|
+
</OText>
|
|
254
|
+
<CommentsButtonGroup>
|
|
255
|
+
{commentsList[stars?.quality || 1]?.list?.map(commentItem => (
|
|
256
|
+
<OButton
|
|
257
|
+
key={commentItem.key}
|
|
258
|
+
text={commentItem.content}
|
|
259
|
+
bgColor={isSelectedComment(commentItem.key) ? theme.colors.primary : theme.colors.backgroundGray200}
|
|
260
|
+
borderColor={isSelectedComment(commentItem.key) ? theme.colors.primary : theme.colors.backgroundGray200}
|
|
261
|
+
textStyle={{
|
|
262
|
+
color: isSelectedComment(commentItem.key) ? theme.colors.white : theme.colors.black,
|
|
263
|
+
fontSize: 13,
|
|
264
|
+
paddingRight: isSelectedComment(commentItem.key) ? 15 : 0
|
|
265
|
+
}}
|
|
266
|
+
style={{ height: 35, paddingLeft: 5, paddingRight: 5, marginHorizontal: 3, marginVertical: 10 }}
|
|
267
|
+
imgRightSrc={isSelectedComment(commentItem.key) ? theme.images.general.close : null}
|
|
268
|
+
imgRightStyle={{ tintColor: theme.colors.white, right: 5, margin: 5 }}
|
|
269
|
+
onClick={() => handleChangeComment(commentItem)}
|
|
270
|
+
/>
|
|
271
|
+
))}
|
|
272
|
+
</CommentsButtonGroup>
|
|
273
|
+
|
|
274
|
+
<OText style={{ marginTop: 30 }} color={theme.colors.textNormal}>{t('REVIEW_COMMENT_QUESTION', 'Do you want to add something?')}</OText>
|
|
275
|
+
<Controller
|
|
276
|
+
control={control}
|
|
277
|
+
defaultValue=''
|
|
278
|
+
name='comments'
|
|
279
|
+
render={({ onChange }: any) => (
|
|
280
|
+
<OInput
|
|
281
|
+
name='comments'
|
|
282
|
+
onChange={(val: any) => {
|
|
283
|
+
onChange(val)
|
|
284
|
+
setExtraComment(val.target.value)
|
|
285
|
+
}}
|
|
286
|
+
style={styles.inputTextArea}
|
|
287
|
+
multiline
|
|
288
|
+
/>
|
|
260
289
|
)}
|
|
261
|
-
|
|
262
|
-
<PlacedDate>
|
|
263
|
-
<OText color={theme.colors.textNormal}>{t('DONOT_FORGET_RATE_YOUR_ORDER', 'Do not forget to rate your order placed on ')}</OText>
|
|
264
|
-
<OText color={theme.colors.textNormal} style={{ fontWeight: "bold" }}>{placedOnDate}</OText>
|
|
265
|
-
</PlacedDate>
|
|
266
|
-
{false && (
|
|
267
|
-
<>
|
|
268
|
-
<OText style={{ marginTop: 30 }} color={theme.colors.textNormal}>
|
|
269
|
-
{commentsList[stars?.quality || 1]?.title}
|
|
270
|
-
</OText>
|
|
271
|
-
<CommentsButtonGroup>
|
|
272
|
-
{commentsList[stars?.quality || 1]?.list?.map((commentItem: any) => (
|
|
273
|
-
<OButton
|
|
274
|
-
key={commentItem.key}
|
|
275
|
-
text={commentItem.content}
|
|
276
|
-
bgColor={isSelectedComment(commentItem.key) ? theme.colors.primary : theme.colors.backgroundGray200}
|
|
277
|
-
borderColor={isSelectedComment(commentItem.key) ? theme.colors.primary : theme.colors.backgroundGray200}
|
|
278
|
-
textStyle={{
|
|
279
|
-
color: isSelectedComment(commentItem.key) ? theme.colors.white : theme.colors.black,
|
|
280
|
-
fontSize: 13,
|
|
281
|
-
paddingRight: isSelectedComment(commentItem.key) ? 15 : 0
|
|
282
|
-
}}
|
|
283
|
-
style={{ height: 35, paddingLeft: 5, paddingRight: 5, marginHorizontal: 3, marginVertical: 10 }}
|
|
284
|
-
imgRightSrc={isSelectedComment(commentItem.key) ? theme.images.general.close : null}
|
|
285
|
-
imgRightStyle={{ tintColor: theme.colors.white, right: 5, margin: 5 }}
|
|
286
|
-
onClick={() => handleChangeComment(commentItem)}
|
|
287
|
-
/>
|
|
288
|
-
))}
|
|
289
|
-
</CommentsButtonGroup>
|
|
290
|
-
</>
|
|
291
|
-
)}
|
|
292
|
-
{/* <OText style={{ marginTop: 30 }} color={theme.colors.textNormal}>{t('REVIEW_COMMENT_QUESTION', 'Do you want to add something?')}</OText> */}
|
|
293
|
-
{false && (
|
|
294
|
-
<Controller
|
|
295
|
-
control={control}
|
|
296
|
-
defaultValue=''
|
|
297
|
-
name='comments'
|
|
298
|
-
render={({ onChange }: any) => (
|
|
299
|
-
<OInput
|
|
300
|
-
name='comments'
|
|
301
|
-
onChange={(val: any) => {
|
|
302
|
-
onChange(val)
|
|
303
|
-
setExtraComment(val.target.value)
|
|
304
|
-
}}
|
|
305
|
-
style={styles.inputTextArea}
|
|
306
|
-
multiline
|
|
307
|
-
/>
|
|
308
|
-
)}
|
|
309
|
-
/>
|
|
310
|
-
)}
|
|
290
|
+
/>
|
|
311
291
|
</FormReviews>
|
|
312
292
|
</View>
|
|
313
293
|
)}
|
|
@@ -322,7 +302,7 @@ export const ReviewOrderUI = (props: ReviewOrderParams) => {
|
|
|
322
302
|
</SkipButton>
|
|
323
303
|
<OButton
|
|
324
304
|
textStyle={{ color: theme.colors.white, paddingRight: 10 }}
|
|
325
|
-
text={t('
|
|
305
|
+
text={t('CONTINUE', 'Continue')}
|
|
326
306
|
style={{ borderRadius: 8 }}
|
|
327
307
|
imgRightSrc={theme.images.general.arrow_right}
|
|
328
308
|
imgRightStyle={{ tintColor: theme.colors.white, right: 5, margin: 5 }}
|
|
@@ -338,7 +318,7 @@ export const ReviewOrder = (props: ReviewOrderParams) => {
|
|
|
338
318
|
const reviewOrderProps = {
|
|
339
319
|
...props,
|
|
340
320
|
UIComponent: ReviewOrderUI,
|
|
341
|
-
defaultStar: 5
|
|
321
|
+
defaultStar: props?.defaultStar || 5
|
|
342
322
|
}
|
|
343
323
|
return <ReviewOrderController {...reviewOrderProps} />
|
|
344
324
|
}
|
|
@@ -42,12 +42,3 @@ export const RatingTextContainer = styled.View`
|
|
|
42
42
|
justify-content: space-between;
|
|
43
43
|
margin-top: 10px;
|
|
44
44
|
`
|
|
45
|
-
export const RatingStarContainer = styled.View`
|
|
46
|
-
flex-direction: row;
|
|
47
|
-
align-items: center;
|
|
48
|
-
justify-content: space-between;
|
|
49
|
-
margin-top: 10px;
|
|
50
|
-
`
|
|
51
|
-
export const PlacedDate = styled.View`
|
|
52
|
-
margin-top: 30px;
|
|
53
|
-
`
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import React, { useState } from 'react'
|
|
2
|
+
import FontAwesome from 'react-native-vector-icons/FontAwesome';
|
|
3
|
+
import { useLanguage, useUtils } from 'ordering-components/native'
|
|
4
|
+
|
|
5
|
+
import {
|
|
6
|
+
ReviewOrderContainer,
|
|
7
|
+
BusinessLogo,
|
|
8
|
+
FormReviews,
|
|
9
|
+
ActionContainer,
|
|
10
|
+
RatingStarContainer,
|
|
11
|
+
PlacedDate
|
|
12
|
+
} from './styles'
|
|
13
|
+
import { OButton, OIcon, OText } from '../shared'
|
|
14
|
+
import { StyleSheet, View, I18nManager } from 'react-native';
|
|
15
|
+
import { FloatingBottomContainer } from '../../layouts/FloatingBottomContainer'
|
|
16
|
+
|
|
17
|
+
import { useTheme } from 'styled-components/native'
|
|
18
|
+
|
|
19
|
+
export const ReviewTrigger = (props: any) => {
|
|
20
|
+
const {
|
|
21
|
+
order,
|
|
22
|
+
handleOpenOrderReview
|
|
23
|
+
} = props
|
|
24
|
+
|
|
25
|
+
const theme = useTheme()
|
|
26
|
+
|
|
27
|
+
const styles = StyleSheet.create({
|
|
28
|
+
logoWrapper: {
|
|
29
|
+
shadowColor: theme.colors.black,
|
|
30
|
+
shadowRadius: 3,
|
|
31
|
+
shadowOffset: { width: 1, height: 4 },
|
|
32
|
+
elevation: 3,
|
|
33
|
+
borderRadius: 8,
|
|
34
|
+
shadowOpacity: 0.1,
|
|
35
|
+
overflow: 'hidden'
|
|
36
|
+
},
|
|
37
|
+
inputTextArea: {
|
|
38
|
+
borderColor: theme.colors.lightGray,
|
|
39
|
+
borderRadius: 8,
|
|
40
|
+
marginTop: 10,
|
|
41
|
+
marginBottom: 40,
|
|
42
|
+
height: 100,
|
|
43
|
+
alignItems: 'flex-start'
|
|
44
|
+
},
|
|
45
|
+
statusBar: {
|
|
46
|
+
transform: [{ scaleX: I18nManager.isRTL ? -1 : 1 }],
|
|
47
|
+
height: 10,
|
|
48
|
+
borderRadius: 5,
|
|
49
|
+
marginTop: 5
|
|
50
|
+
},
|
|
51
|
+
ratingItemContainer: {
|
|
52
|
+
position: 'absolute',
|
|
53
|
+
top: -20
|
|
54
|
+
},
|
|
55
|
+
ratingItem: {
|
|
56
|
+
left: '-50%',
|
|
57
|
+
flexDirection: 'column',
|
|
58
|
+
alignItems: 'center'
|
|
59
|
+
},
|
|
60
|
+
ratingLineStyle: {
|
|
61
|
+
height: 10,
|
|
62
|
+
width: 1,
|
|
63
|
+
marginBottom: 10,
|
|
64
|
+
backgroundColor: theme.colors.dusk
|
|
65
|
+
},
|
|
66
|
+
reviewedStyle: {
|
|
67
|
+
flexDirection: 'row',
|
|
68
|
+
justifyContent: 'center',
|
|
69
|
+
marginVertical: 20
|
|
70
|
+
},
|
|
71
|
+
})
|
|
72
|
+
|
|
73
|
+
const [, t] = useLanguage()
|
|
74
|
+
const [{ parseDate }] = useUtils()
|
|
75
|
+
const placedOnDate = parseDate(order?.delivery_datetime, { utc: true, outputFormat: 'dddd MMMM DD, YYYY' })
|
|
76
|
+
const [star, setStar] = useState(5)
|
|
77
|
+
|
|
78
|
+
return (
|
|
79
|
+
<>
|
|
80
|
+
<ReviewOrderContainer>
|
|
81
|
+
<BusinessLogo>
|
|
82
|
+
<View style={styles.logoWrapper}>
|
|
83
|
+
<OIcon
|
|
84
|
+
url={order?.logo}
|
|
85
|
+
width={80}
|
|
86
|
+
height={80}
|
|
87
|
+
/>
|
|
88
|
+
</View>
|
|
89
|
+
</BusinessLogo>
|
|
90
|
+
{!!order?.business_name && <OText style={{ textAlign: 'center', marginTop: 15 }} color={theme.colors.textNormal}>{order?.business_name}</OText>}
|
|
91
|
+
<View style={{ flex: 1, justifyContent: 'flex-end' }}>
|
|
92
|
+
<FormReviews>
|
|
93
|
+
<RatingStarContainer>
|
|
94
|
+
{[...Array(5).keys()].map((index: number) => (<FontAwesome name={(index <= (star - 1)) ? 'star' : 'star-o'} size={28} key={`star-symbol-${index}`} onPress={() => setStar(index + 1)} color={theme?.colors?.primary} />)
|
|
95
|
+
)}
|
|
96
|
+
</RatingStarContainer>
|
|
97
|
+
<PlacedDate>
|
|
98
|
+
<OText color={theme.colors.textNormal}>{t('DONOT_FORGET_RATE_YOUR_ORDER', 'Do not forget to rate your order placed on ')}</OText>
|
|
99
|
+
<OText color={theme.colors.textNormal} style={{ fontWeight: "bold" }}>{placedOnDate}</OText>
|
|
100
|
+
</PlacedDate>
|
|
101
|
+
</FormReviews>
|
|
102
|
+
</View>
|
|
103
|
+
</ReviewOrderContainer>
|
|
104
|
+
<FloatingBottomContainer>
|
|
105
|
+
<ActionContainer>
|
|
106
|
+
<OButton
|
|
107
|
+
textStyle={{ color: theme.colors.white, paddingRight: 10 }}
|
|
108
|
+
text={t('GOTO_REVIEW', 'Go to review')}
|
|
109
|
+
style={{ borderRadius: 8 }}
|
|
110
|
+
imgRightSrc={theme.images.general.arrow_right}
|
|
111
|
+
imgRightStyle={{ tintColor: theme.colors.white, right: 5, margin: 5 }}
|
|
112
|
+
onClick={() => handleOpenOrderReview(star)}
|
|
113
|
+
/>
|
|
114
|
+
</ActionContainer>
|
|
115
|
+
</FloatingBottomContainer>
|
|
116
|
+
</>
|
|
117
|
+
)
|
|
118
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import styled from 'styled-components/native'
|
|
2
|
+
|
|
3
|
+
export const ReviewOrderContainer = styled.ScrollView`
|
|
4
|
+
padding: 20px 40px;
|
|
5
|
+
margin-bottom: 100px;
|
|
6
|
+
`
|
|
7
|
+
|
|
8
|
+
export const BusinessLogo = styled.View`
|
|
9
|
+
margin-vertical: 5px;
|
|
10
|
+
align-items: center;
|
|
11
|
+
`
|
|
12
|
+
|
|
13
|
+
export const FormReviews = styled.View`
|
|
14
|
+
flex: 1;
|
|
15
|
+
height: 100%;
|
|
16
|
+
margin-top: 30px;
|
|
17
|
+
`
|
|
18
|
+
|
|
19
|
+
export const ActionContainer = styled.View`
|
|
20
|
+
flex-direction: row;
|
|
21
|
+
align-items: center;
|
|
22
|
+
justify-content: center;
|
|
23
|
+
padding: 3px 30px;
|
|
24
|
+
`
|
|
25
|
+
|
|
26
|
+
export const RatingStarContainer = styled.View`
|
|
27
|
+
flex-direction: row;
|
|
28
|
+
align-items: center;
|
|
29
|
+
justify-content: space-between;
|
|
30
|
+
margin-top: 10px;
|
|
31
|
+
`
|
|
32
|
+
export const PlacedDate = styled.View`
|
|
33
|
+
margin-top: 30px;
|
|
34
|
+
`
|
|
@@ -65,8 +65,8 @@ const ServiceFormUI = (props: ServiceFormParams) => {
|
|
|
65
65
|
|
|
66
66
|
const styles = StyleSheet.create({
|
|
67
67
|
photoStyle: {
|
|
68
|
-
width:
|
|
69
|
-
height:
|
|
68
|
+
width: 45,
|
|
69
|
+
height: 45,
|
|
70
70
|
borderRadius: 7.6
|
|
71
71
|
},
|
|
72
72
|
buttonStyle: {
|
|
@@ -313,12 +313,14 @@ const ServiceFormUI = (props: ServiceFormParams) => {
|
|
|
313
313
|
<OText
|
|
314
314
|
size={14}
|
|
315
315
|
weight={'400'}
|
|
316
|
+
lineHeight={22}
|
|
316
317
|
>
|
|
317
318
|
{currentProfessional?.name} {currentProfessional?.lastname}
|
|
318
319
|
</OText>
|
|
319
320
|
<OText
|
|
320
321
|
size={12}
|
|
321
322
|
weight={'400'}
|
|
323
|
+
lineHeight={17}
|
|
322
324
|
color={isBusyTime(currentProfessional) ? theme.colors.danger5 : theme.colors.success500}
|
|
323
325
|
>
|
|
324
326
|
{isBusyTime(currentProfessional)
|
|
@@ -459,9 +461,7 @@ const ServiceFormUI = (props: ServiceFormParams) => {
|
|
|
459
461
|
size={14}
|
|
460
462
|
weight={Platform.OS === 'ios' ? '600' : 'bold'}
|
|
461
463
|
>
|
|
462
|
-
{dateSelected
|
|
463
|
-
? moment(dateSelected).format('hh:mm A')
|
|
464
|
-
: t('ASAP_ABBREVIATION', 'ASAP')}
|
|
464
|
+
{dateSelected && moment(dateSelected).format('hh:mm A')}
|
|
465
465
|
</OText>
|
|
466
466
|
{((productCart &&
|
|
467
467
|
auth &&
|
|
@@ -517,6 +517,14 @@ const ServiceFormUI = (props: ServiceFormParams) => {
|
|
|
517
517
|
entireModal
|
|
518
518
|
>
|
|
519
519
|
<ScrollView contentContainerStyle={styles.professionalList}>
|
|
520
|
+
<View style={{ padding: 11 }}>
|
|
521
|
+
<OText
|
|
522
|
+
size={14}
|
|
523
|
+
weight={'400'}
|
|
524
|
+
>
|
|
525
|
+
{t('ANY_OROFESSIONAL_MEMBER', 'Any professional member')}
|
|
526
|
+
</OText>
|
|
527
|
+
</View>
|
|
520
528
|
{professionalList?.map((professional: any) => professional?.products?.includes(product?.id) && (
|
|
521
529
|
<TouchableOpacity
|
|
522
530
|
key={professional?.id}
|
|
@@ -536,12 +544,14 @@ const ServiceFormUI = (props: ServiceFormParams) => {
|
|
|
536
544
|
<OText
|
|
537
545
|
size={14}
|
|
538
546
|
weight={'400'}
|
|
547
|
+
lineHeight={22}
|
|
539
548
|
>
|
|
540
549
|
{professional?.name} {professional?.lastname}
|
|
541
550
|
</OText>
|
|
542
551
|
<OText
|
|
543
552
|
size={12}
|
|
544
553
|
weight={'400'}
|
|
554
|
+
lineHeight={17}
|
|
545
555
|
color={isBusyTime(professional) ? theme.colors.danger5 : theme.colors.success500}
|
|
546
556
|
>
|
|
547
557
|
{isBusyTime(professional)
|