ordering-ui-react-native 0.12.55 → 0.12.59

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 (202) 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 +37 -2
  10. package/themes/doordash/src/components/OrderDetails/index.tsx +8 -0
  11. package/themes/doordash/src/components/OrderSummary/index.tsx +37 -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 +127 -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/OrderDetails/index.tsx +724 -708
  27. package/themes/single-business/src/components/OrderSummary/index.tsx +189 -154
  28. package/themes/single-business/src/layouts/Container.tsx +1 -1
  29. package/themes/uber-eats/src/components/Cart/index.tsx +37 -3
  30. package/themes/uber-eats/src/components/OrderDetails/index.tsx +8 -0
  31. package/themes/uber-eats/src/components/OrderSummary/index.tsx +40 -6
  32. package/themes/uber-eats/src/layouts/Container.tsx +1 -1
  33. package/themes/franchises/index.tsx +0 -111
  34. package/themes/franchises/src/components/ActiveOrders/index.tsx +0 -134
  35. package/themes/franchises/src/components/ActiveOrders/styles.tsx +0 -44
  36. package/themes/franchises/src/components/AddressDetails/index.tsx +0 -77
  37. package/themes/franchises/src/components/AddressDetails/styles.tsx +0 -21
  38. package/themes/franchises/src/components/AddressForm/index.tsx +0 -837
  39. package/themes/franchises/src/components/AddressForm/styles.tsx +0 -27
  40. package/themes/franchises/src/components/AddressList/index.tsx +0 -338
  41. package/themes/franchises/src/components/AddressList/styles.tsx +0 -20
  42. package/themes/franchises/src/components/AppleLogin/index.tsx +0 -149
  43. package/themes/franchises/src/components/AppleLogin/styles.tsx +0 -21
  44. package/themes/franchises/src/components/BottomWrapper/index.tsx +0 -29
  45. package/themes/franchises/src/components/BusinessBasicInformation/index.tsx +0 -310
  46. package/themes/franchises/src/components/BusinessBasicInformation/styles.tsx +0 -66
  47. package/themes/franchises/src/components/BusinessController/index.tsx +0 -184
  48. package/themes/franchises/src/components/BusinessController/styles.tsx +0 -64
  49. package/themes/franchises/src/components/BusinessFeaturedController/index.tsx +0 -189
  50. package/themes/franchises/src/components/BusinessFeaturedController/styles.tsx +0 -50
  51. package/themes/franchises/src/components/BusinessInformation/index.tsx +0 -202
  52. package/themes/franchises/src/components/BusinessInformation/styles.tsx +0 -39
  53. package/themes/franchises/src/components/BusinessItemAccordion/index.tsx +0 -125
  54. package/themes/franchises/src/components/BusinessItemAccordion/styles.tsx +0 -54
  55. package/themes/franchises/src/components/BusinessProductsCategories/index.tsx +0 -87
  56. package/themes/franchises/src/components/BusinessProductsCategories/styles.tsx +0 -8
  57. package/themes/franchises/src/components/BusinessProductsList/index.tsx +0 -199
  58. package/themes/franchises/src/components/BusinessProductsList/styles.tsx +0 -14
  59. package/themes/franchises/src/components/BusinessProductsListing/index.tsx +0 -292
  60. package/themes/franchises/src/components/BusinessProductsListing/styles.tsx +0 -30
  61. package/themes/franchises/src/components/BusinessReviews/index.tsx +0 -249
  62. package/themes/franchises/src/components/BusinessReviews/styles.tsx +0 -59
  63. package/themes/franchises/src/components/BusinessTypeFilter/index.tsx +0 -127
  64. package/themes/franchises/src/components/BusinessTypeFilter/styles.tsx +0 -40
  65. package/themes/franchises/src/components/BusinessesListing/index.tsx +0 -339
  66. package/themes/franchises/src/components/BusinessesListing/styles.tsx +0 -92
  67. package/themes/franchises/src/components/Cart/index.tsx +0 -298
  68. package/themes/franchises/src/components/Cart/styles.tsx +0 -28
  69. package/themes/franchises/src/components/CartContent/index.tsx +0 -60
  70. package/themes/franchises/src/components/CartContent/styles.tsx +0 -19
  71. package/themes/franchises/src/components/Checkout/index.tsx +0 -664
  72. package/themes/franchises/src/components/Checkout/styles.tsx +0 -89
  73. package/themes/franchises/src/components/CouponControl/index.tsx +0 -119
  74. package/themes/franchises/src/components/CouponControl/styles.tsx +0 -22
  75. package/themes/franchises/src/components/DriverTips/index.tsx +0 -167
  76. package/themes/franchises/src/components/DriverTips/styles.tsx +0 -63
  77. package/themes/franchises/src/components/FacebookLogin/index.tsx +0 -107
  78. package/themes/franchises/src/components/FacebookLogin/styles.tsx +0 -21
  79. package/themes/franchises/src/components/FloatingButton/index.tsx +0 -100
  80. package/themes/franchises/src/components/FloatingButton/styles.tsx +0 -26
  81. package/themes/franchises/src/components/ForgotPasswordForm/index.tsx +0 -156
  82. package/themes/franchises/src/components/ForgotPasswordForm/styles.tsx +0 -11
  83. package/themes/franchises/src/components/GPSButton/index.tsx +0 -84
  84. package/themes/franchises/src/components/GPSButton/styles.ts +0 -6
  85. package/themes/franchises/src/components/GoogleLogin/index.tsx +0 -122
  86. package/themes/franchises/src/components/GoogleLogin/styles.tsx +0 -23
  87. package/themes/franchises/src/components/GoogleMap/index.tsx +0 -229
  88. package/themes/franchises/src/components/Help/index.tsx +0 -56
  89. package/themes/franchises/src/components/Help/styles.tsx +0 -11
  90. package/themes/franchises/src/components/HelpAccountAndPayment/index.tsx +0 -68
  91. package/themes/franchises/src/components/HelpAccountAndPayment/styles.tsx +0 -6
  92. package/themes/franchises/src/components/HelpGuide/index.tsx +0 -67
  93. package/themes/franchises/src/components/HelpGuide/styles.tsx +0 -6
  94. package/themes/franchises/src/components/HelpOrder/index.tsx +0 -79
  95. package/themes/franchises/src/components/HelpOrder/styles.tsx +0 -6
  96. package/themes/franchises/src/components/Home/index.tsx +0 -102
  97. package/themes/franchises/src/components/Home/styles.tsx +0 -18
  98. package/themes/franchises/src/components/LanguageSelector/index.tsx +0 -98
  99. package/themes/franchises/src/components/LanguageSelector/styles.tsx +0 -7
  100. package/themes/franchises/src/components/LastOrder/index.tsx +0 -168
  101. package/themes/franchises/src/components/LastOrder/styles.tsx +0 -16
  102. package/themes/franchises/src/components/LastOrders/index.tsx +0 -104
  103. package/themes/franchises/src/components/LastOrders/styles.tsx +0 -17
  104. package/themes/franchises/src/components/LoginForm/index.tsx +0 -512
  105. package/themes/franchises/src/components/LoginForm/styles.tsx +0 -77
  106. package/themes/franchises/src/components/LogoutButton/index.tsx +0 -36
  107. package/themes/franchises/src/components/Messages/index.tsx +0 -359
  108. package/themes/franchises/src/components/Messages/styles.tsx +0 -20
  109. package/themes/franchises/src/components/MomentOption/index.tsx +0 -321
  110. package/themes/franchises/src/components/MomentOption/styles.tsx +0 -66
  111. package/themes/franchises/src/components/NavBar/index.tsx +0 -129
  112. package/themes/franchises/src/components/NotFoundSource/index.tsx +0 -50
  113. package/themes/franchises/src/components/NotFoundSource/styles.tsx +0 -16
  114. package/themes/franchises/src/components/Notifications/index.tsx +0 -120
  115. package/themes/franchises/src/components/Notifications/styles.ts +0 -21
  116. package/themes/franchises/src/components/OrderDetails/index.tsx +0 -820
  117. package/themes/franchises/src/components/OrderDetails/styles.tsx +0 -120
  118. package/themes/franchises/src/components/OrderSummary/index.tsx +0 -232
  119. package/themes/franchises/src/components/OrderSummary/styles.tsx +0 -41
  120. package/themes/franchises/src/components/OrderTypeSelector/index.tsx +0 -92
  121. package/themes/franchises/src/components/OrderTypeSelector/styles.tsx +0 -27
  122. package/themes/franchises/src/components/OrdersOption/index.tsx +0 -243
  123. package/themes/franchises/src/components/OrdersOption/styles.tsx +0 -5
  124. package/themes/franchises/src/components/PaymentOptionCash/index.tsx +0 -102
  125. package/themes/franchises/src/components/PaymentOptionCash/styles.tsx +0 -18
  126. package/themes/franchises/src/components/PaymentOptionStripe/index.tsx +0 -234
  127. package/themes/franchises/src/components/PaymentOptionStripe/styles.tsx +0 -71
  128. package/themes/franchises/src/components/PaymentOptions/index.tsx +0 -430
  129. package/themes/franchises/src/components/PaymentOptions/styles.tsx +0 -77
  130. package/themes/franchises/src/components/PhoneInputNumber/index.tsx +0 -127
  131. package/themes/franchises/src/components/PhoneInputNumber/styles.tsx +0 -3
  132. package/themes/franchises/src/components/PreviousOrders/index.tsx +0 -188
  133. package/themes/franchises/src/components/PreviousOrders/styles.tsx +0 -33
  134. package/themes/franchises/src/components/ProductForm/index.tsx +0 -695
  135. package/themes/franchises/src/components/ProductForm/styles.tsx +0 -78
  136. package/themes/franchises/src/components/ProductIngredient/index.tsx +0 -43
  137. package/themes/franchises/src/components/ProductIngredient/styles.tsx +0 -7
  138. package/themes/franchises/src/components/ProductItemAccordion/index.tsx +0 -276
  139. package/themes/franchises/src/components/ProductItemAccordion/styles.tsx +0 -57
  140. package/themes/franchises/src/components/ProductOption/index.tsx +0 -50
  141. package/themes/franchises/src/components/ProductOption/styles.tsx +0 -11
  142. package/themes/franchises/src/components/ProductOptionSubOption/index.tsx +0 -146
  143. package/themes/franchises/src/components/ProductOptionSubOption/styles.tsx +0 -32
  144. package/themes/franchises/src/components/ReviewDriver/index.tsx +0 -221
  145. package/themes/franchises/src/components/ReviewDriver/styles.tsx +0 -46
  146. package/themes/franchises/src/components/ReviewOrder/index.tsx +0 -325
  147. package/themes/franchises/src/components/ReviewOrder/styles.tsx +0 -46
  148. package/themes/franchises/src/components/ReviewProduct/index.tsx +0 -275
  149. package/themes/franchises/src/components/ReviewProduct/styles.tsx +0 -53
  150. package/themes/franchises/src/components/SearchBar/index.tsx +0 -139
  151. package/themes/franchises/src/components/SignupForm/index.tsx +0 -643
  152. package/themes/franchises/src/components/SignupForm/styles.tsx +0 -27
  153. package/themes/franchises/src/components/SingleProductCard/index.tsx +0 -124
  154. package/themes/franchises/src/components/SingleProductCard/styles.tsx +0 -23
  155. package/themes/franchises/src/components/StripeCardForm/index.tsx +0 -97
  156. package/themes/franchises/src/components/StripeCardForm/naked.tsx +0 -128
  157. package/themes/franchises/src/components/StripeCardForm/styles.tsx +0 -32
  158. package/themes/franchises/src/components/StripeCardsList/index.tsx +0 -182
  159. package/themes/franchises/src/components/StripeElementsForm/index.tsx +0 -204
  160. package/themes/franchises/src/components/StripeElementsForm/naked.tsx +0 -90
  161. package/themes/franchises/src/components/StripeElementsForm/styles.tsx +0 -13
  162. package/themes/franchises/src/components/StripeRedirectForm/index.tsx +0 -159
  163. package/themes/franchises/src/components/StripeRedirectForm/styles.tsx +0 -23
  164. package/themes/franchises/src/components/TagSelector/index.tsx +0 -94
  165. package/themes/franchises/src/components/TagSelector/styles.ts +0 -0
  166. package/themes/franchises/src/components/TaxInformation/index.tsx +0 -51
  167. package/themes/franchises/src/components/TaxInformation/styles.tsx +0 -9
  168. package/themes/franchises/src/components/UpsellingProducts/index.tsx +0 -222
  169. package/themes/franchises/src/components/UpsellingProducts/styles.tsx +0 -50
  170. package/themes/franchises/src/components/UserDetails/index.tsx +0 -134
  171. package/themes/franchises/src/components/UserDetails/styles.tsx +0 -26
  172. package/themes/franchises/src/components/UserFormDetails/index.tsx +0 -351
  173. package/themes/franchises/src/components/UserFormDetails/styles.tsx +0 -35
  174. package/themes/franchises/src/components/UserProfile/index.tsx +0 -179
  175. package/themes/franchises/src/components/UserProfile/styles.ts +0 -42
  176. package/themes/franchises/src/components/UserProfileForm/index.tsx +0 -253
  177. package/themes/franchises/src/components/UserProfileForm/styles.tsx +0 -29
  178. package/themes/franchises/src/components/VerifyPhone/index.tsx +0 -188
  179. package/themes/franchises/src/components/VerifyPhone/styles.tsx +0 -43
  180. package/themes/franchises/src/components/shared/OAlert.tsx +0 -55
  181. package/themes/franchises/src/components/shared/OBottomPopup.tsx +0 -73
  182. package/themes/franchises/src/components/shared/OBottomStickBar.tsx +0 -62
  183. package/themes/franchises/src/components/shared/OButton.tsx +0 -132
  184. package/themes/franchises/src/components/shared/ODropDown.tsx +0 -169
  185. package/themes/franchises/src/components/shared/OIcon.tsx +0 -53
  186. package/themes/franchises/src/components/shared/OIconButton.tsx +0 -127
  187. package/themes/franchises/src/components/shared/OIconText.tsx +0 -54
  188. package/themes/franchises/src/components/shared/OInput.tsx +0 -113
  189. package/themes/franchises/src/components/shared/OKeyButton.tsx +0 -35
  190. package/themes/franchises/src/components/shared/OModal.tsx +0 -172
  191. package/themes/franchises/src/components/shared/OText.tsx +0 -52
  192. package/themes/franchises/src/components/shared/OTextarea.tsx +0 -36
  193. package/themes/franchises/src/components/shared/OToast.tsx +0 -93
  194. package/themes/franchises/src/components/shared/OToggle.tsx +0 -158
  195. package/themes/franchises/src/components/shared/index.tsx +0 -29
  196. package/themes/franchises/src/config/constants.tsx +0 -57
  197. package/themes/franchises/src/layouts/Container.tsx +0 -23
  198. package/themes/franchises/src/layouts/SafeAreaContainer.tsx +0 -6
  199. package/themes/franchises/src/providers/AlertProvider.tsx +0 -43
  200. package/themes/franchises/src/providers/StoreUtil.tsx +0 -50
  201. package/themes/franchises/src/types/index.tsx +0 -445
  202. package/themes/franchises/src/utils/index.tsx +0 -222
@@ -1,221 +0,0 @@
1
- import React, { useState, useEffect, useCallback } from 'react'
2
- import { ReviewDriver as ReviewDriverController, useLanguage, ToastType, useToast } from 'ordering-components/native'
3
- import { useTheme } from 'styled-components/native';
4
- import MaterialCommunityIcon from 'react-native-vector-icons/MaterialCommunityIcons'
5
- import { useForm, Controller } from 'react-hook-form'
6
-
7
- import {
8
- ReviewOrderContainer,
9
- BusinessLogo,
10
- FormReviews,
11
- Category,
12
- Stars,
13
- BlockWrap,
14
- CommentItem
15
- } from './styles'
16
- import { OButton, OIcon, OInput, OText } from '../shared'
17
- import { TouchableOpacity, StyleSheet, View } from 'react-native';
18
- import NavBar from '../NavBar'
19
- import Spinner from 'react-native-loading-spinner-overlay'
20
-
21
- import { ReviewDriverParams } from '../../types'
22
- import { REVIEW_DRIVER_COMMENTS } from '../../config/constants';
23
- import TagSelector from '../TagSelector';
24
- import OBottomStickBar from '../shared/OBottomStickBar';
25
- import { Container } from '../../..';
26
-
27
- export const ReviewDriverUI = (props: ReviewDriverParams) => {
28
- const {
29
- dirverReviews,
30
- order,
31
- formState,
32
- setDriverReviews,
33
- closeReviewDriver,
34
- setIsDriverReviewed,
35
- handleSendDriverReview,
36
- navigation
37
- } = props
38
-
39
- const theme = useTheme();
40
-
41
- const styles = StyleSheet.create({
42
- inputTextArea: {
43
- borderColor: theme.colors.border,
44
- borderRadius: 7.6,
45
- marginVertical: 10,
46
- height: 100,
47
- alignItems: 'flex-start',
48
- paddingVertical: 12,
49
- fontSize: 10,
50
- marginBottom: 30
51
- },
52
- progress: {
53
- borderRadius: 5,
54
- height: 4,
55
- backgroundColor: theme.colors.backgroundGray200,
56
- marginVertical: 9,
57
- },
58
- progressLabel: {
59
- flexDirection: 'row',
60
- justifyContent: 'space-between',
61
- },
62
- })
63
-
64
- const [, t] = useLanguage()
65
- const [, { showToast }] = useToast()
66
- const { handleSubmit, control, errors } = useForm()
67
-
68
- const [alertState, setAlertState] = useState<{ open: boolean, content: Array<any>, success?: boolean }>({ open: false, content: [], success: false })
69
-
70
- const [curVal, setReviewVal] = useState(-1);
71
- const [curSuggest] = useState(REVIEW_DRIVER_COMMENTS.map(({key, value}) => t(key, value)));
72
- const [selectedSuggest, setSelectedSuggest] = useState([]);
73
- const [comment, setComment] = useState('');
74
-
75
-
76
- // const handleChangeReviews = (index) => {
77
- // if (index) setDriverReviews({ ...dirverReviews, qualification: index })
78
- // }
79
-
80
- const onSubmit = () => {
81
- if (dirverReviews?.qualification === 0) {
82
- setAlertState({
83
- open: true,
84
- content: [`${t('REVIEW_QUALIFICATION_REQUIRED', 'Review qualification is required')}`]
85
- })
86
- return
87
- }
88
- setAlertState({ ...alertState, success: true })
89
- handleSendDriverReview()
90
- }
91
-
92
- const onSuggestUpdate = useCallback((items) => {
93
- if (items.length > 0) {
94
- let selected: Array<never> = [];
95
- items.map(({label, checked}: never) => {
96
- if (checked === true) {
97
- selected.push(label);
98
- }
99
- });
100
- setSelectedSuggest(selected);
101
- }
102
- }, []);
103
-
104
- const handleNext = (type: number) => {
105
- if (type == 1) handleSubmit(onSubmit)
106
- navigation?.navigate('BottomTab', { screen: 'MyOrders' });
107
- }
108
-
109
- useEffect(() => {
110
- if (formState.error && !formState?.loading) {
111
- showToast(ToastType.Error, formState.result)
112
- }
113
- if (!formState.loading && !formState.error && alertState.success) {
114
- showToast(ToastType.Success, t('REVIEW_SUCCESS_CONTENT', 'Thank you, Review successfully submitted!'))
115
- setIsDriverReviewed && setIsDriverReviewed(true)
116
- handleNext(0);
117
- }
118
- }, [formState.result])
119
-
120
- useEffect(() => {
121
- if (Object.keys(errors).length > 0) {
122
- // Convert all errors in one string to show in toast provider
123
- const list = Object.values(errors);
124
- let stringError = '';
125
- list.map((item: any, i: number) => {
126
- stringError +=
127
- i + 1 === list.length ? `- ${item.message}` : `- ${item.message}\n`;
128
- });
129
- showToast(ToastType.Error, stringError);
130
- }
131
- }, [errors]);
132
-
133
- useEffect(() => {
134
- if (alertState.open) {
135
- alertState.content && showToast(
136
- ToastType.Error,
137
- alertState.content
138
- )
139
- }
140
- }, [alertState.content])
141
-
142
- useEffect(() => {
143
- let _comments = comment || '';
144
- if (selectedSuggest.length > 0) {
145
- _comments = _comments + ', ' + selectedSuggest.join(', ');
146
- }
147
- setDriverReviews({ ...dirverReviews, comment: _comments, qualification: 5 })
148
- }, [comment, selectedSuggest])
149
-
150
- return (
151
- <>
152
- <Container>
153
- <ReviewOrderContainer>
154
- <NavBar
155
- title={t('REVIEW_ORDER', 'Review Order')}
156
- titleAlign={'center'}
157
- onActionLeft={() => navigation?.canGoBack() && navigation.goBack()}
158
- showCall={false}
159
- btnStyle={{ paddingLeft: 0 }}
160
- paddingTop={0}
161
- isVertical
162
- leftImg={theme.images.general.close}
163
- leftImageStyle={{width: 16}}
164
- />
165
- <BusinessLogo>
166
- <OIcon
167
- url={order?.driver?.photo || theme.images.dummies.driverPhoto}
168
- width={72} height={72}
169
- style={{borderRadius: 7.6, backgroundColor: theme.colors.inputDisabled}}
170
- />
171
- <OText size={14} lineHeight={21}>{order?.driver?.name}</OText>
172
- </BusinessLogo>
173
- <View style={{ paddingBottom: 0 }}>
174
- <BlockWrap>
175
- <OText mBottom={16}>{t('COMMENTS', 'Comments')}</OText>
176
- <View style={{flexShrink: 1}}>
177
- <TagSelector items={curSuggest} activeColor={theme.colors.primary} normalColor={'#E9ECEF'} onUpdated={onSuggestUpdate} />
178
- </View>
179
- </BlockWrap>
180
- <FormReviews>
181
- <OText mBottom={10}>{t('DO_YOU_WANT_TO_ADD_SOMETHING', 'Do you want to add something?')}</OText>
182
- <Controller
183
- control={control}
184
- defaultValue=''
185
- name='comments'
186
- render={({ onChange }: any) => (
187
- <OInput
188
- name='comments'
189
- placeholder={t('COMMENTS', 'Comments')}
190
- onChange={(val: string) => {
191
- onChange(val)
192
- setComment(val)
193
- }}
194
- style={styles.inputTextArea}
195
- multiline
196
- inputStyle={{fontSize: 12}}
197
- />
198
- )}
199
- />
200
- </FormReviews>
201
- </View>
202
- <Spinner visible={formState.loading} />
203
- </ReviewOrderContainer>
204
- </Container>
205
- <OBottomStickBar
206
- rightBtnStyle={{borderRadius: 7.6, height: 44}}
207
- rightAction={() => handleNext(1)}
208
- leftAction={() => handleNext(0)}
209
- />
210
- </>
211
- )
212
- }
213
-
214
-
215
- export const ReviewDriver = (props: ReviewDriverParams) => {
216
- const reviewDriverProps = {
217
- ...props,
218
- UIComponent: ReviewDriverUI
219
- }
220
- return <ReviewDriverController {...reviewDriverProps} />
221
- }
@@ -1,46 +0,0 @@
1
- import styled from 'styled-components/native'
2
-
3
- export const ReviewOrderContainer = styled.View`
4
- width: 100%;
5
- flex: 1;
6
- `
7
- export const ReviewOrderTitle = styled.View`
8
-
9
- `
10
-
11
- export const BusinessLogo = styled.View`
12
- margin-vertical: 5px;
13
- align-items: center;
14
- box-shadow: 0 1px 2px #ddd;
15
- border-radius: 7.6px;
16
- margin-bottom: 20px;
17
- `
18
-
19
- export const FormReviews = styled.View`
20
- flex: 1;
21
- `
22
-
23
- export const Category = styled.View`
24
- padding: 10px;
25
- border-width: 1px;
26
- border-color: ${(props: any) => props.theme.colors.secundaryContrast};
27
- flex-direction: row;
28
- justify-content: space-between;
29
- margin-vertical: 5px;
30
- border-radius: 10px;
31
- `
32
-
33
- export const Stars = styled.View`
34
- flex-direction: row;
35
- `
36
-
37
- export const BlockWrap = styled.View`
38
- margin-vertical: 16px;
39
- padding-bottom: 20px;
40
- `;
41
-
42
- export const CommentItem = styled.TouchableOpacity`
43
- padding: 3px 10px;
44
- border-radius: 20px;
45
- min-height: 24px;
46
- `;
@@ -1,325 +0,0 @@
1
- import React, { useState, useEffect, useCallback } from 'react'
2
- import { OrderReview as ReviewOrderController, useLanguage, ToastType, useToast } from 'ordering-components/native'
3
- import { useTheme } from 'styled-components/native';
4
- import MaterialCommunityIcon from 'react-native-vector-icons/MaterialCommunityIcons'
5
- import { useForm, Controller } from 'react-hook-form'
6
-
7
- import {
8
- ReviewOrderContainer,
9
- BusinessLogo,
10
- FormReviews,
11
- Category,
12
- Stars,
13
- BlockWrap,
14
- CommentItem
15
- } from './styles'
16
- import { OButton, OIcon, OInput, OText } from '../shared'
17
- import { TouchableOpacity, StyleSheet, View } from 'react-native';
18
- import NavBar from '../NavBar'
19
- import Spinner from 'react-native-loading-spinner-overlay'
20
-
21
- import { ReviewOrderParams } from '../../types'
22
- import { ProgressBar } from 'react-native-paper';
23
- import { REVIEW_ORDER_COMMENTS } from '../../config/constants';
24
- import TagSelector from '../TagSelector';
25
- import OBottomStickBar from '../shared/OBottomStickBar';
26
- import { Container } from '../../..';
27
-
28
- export const ReviewOrderUI = (props: ReviewOrderParams) => {
29
- const {
30
- order,
31
- stars,
32
- handleChangeInput,
33
- handleChangeRating,
34
- handleSendReview,
35
- formState,
36
- navigation,
37
- orderComments,
38
- setStars
39
- } = props
40
-
41
- const theme = useTheme();
42
-
43
- const styles = StyleSheet.create({
44
- inputTextArea: {
45
- borderColor: theme.colors.border,
46
- borderRadius: 7.6,
47
- marginVertical: 10,
48
- height: 100,
49
- alignItems: 'flex-start',
50
- paddingVertical: 12,
51
- fontSize: 10,
52
- marginBottom: 30
53
- },
54
- progress: {
55
- borderRadius: 5,
56
- height: 4,
57
- backgroundColor: theme.colors.backgroundGray200,
58
- marginVertical: 9,
59
- },
60
- progressLabel: {
61
- flexDirection: 'row',
62
- justifyContent: 'space-between',
63
- },
64
- })
65
-
66
- const [, t] = useLanguage()
67
- const [, { showToast }] = useToast()
68
- const { handleSubmit, control, errors } = useForm()
69
-
70
- const [alertState, setAlertState] = useState<{ open: boolean, content: Array<any>, success?: boolean }>({ open: false, content: [], success: false })
71
-
72
- const [curVal, setReviewVal] = useState(-1);
73
- const [curSuggest, setSuggest] = useState(orderComments?.map(({key, value}: any) => t(key, value)) || REVIEW_ORDER_COMMENTS?.map(({key, value}) => t(key, value)));
74
- const [selectedSuggest, setSelectedSuggest] = useState([]);
75
- const [comment, setComment] = useState('');
76
-
77
- const categories = {
78
- quality: { name: 'quality', show: t('QUALITY', 'Quality of Product') },
79
- punctuality: { name: 'punctiality', show: t('PUNCTUALITY', 'Punctuality') },
80
- service: { name: 'service', show: t('SERVICE', 'Service') },
81
- packaging: { name: 'packaging', show: t('PRODUCT_PACKAGING', 'Product Packaging') }
82
- }
83
-
84
- const scores = [
85
- {
86
- val: 0.5,
87
- color: theme.colors.strength_1,
88
- text: t('REVIEW_TERRIBLE', 'Terrible')
89
- },
90
- {
91
- val: 1.5,
92
- color: theme.colors.strength_2,
93
- text: t('REVIEW_BAD', 'Bad')
94
- },
95
- {
96
- val: 2.5,
97
- color: theme.colors.strength_3,
98
- text: t('REVIEW_OKAY', 'Okay')
99
- },
100
- {
101
- val: 3.7,
102
- color: theme.colors.strength_4,
103
- text: t('REVIEW_GOOD', 'Good')
104
- },
105
- {
106
- val: 5,
107
- color: theme.colors.strength_5,
108
- text: t('REVIEW_GREAT', 'Great')
109
- },
110
- ]
111
-
112
- const getProgColor = () => {
113
- return scores.find(({val}) => val == curVal)?.color || theme.colors.textNormal;
114
- }
115
-
116
- const onSubmit = () => {
117
- if (Object.values(stars).some(value => value === 0)) {
118
- setAlertState({
119
- open: true,
120
- content: Object.values(categories).map((category, i) => stars[category.name] === 0 ? `- ${t('CATEGORY_ATLEAST_ONE', `${category.show} must be at least one point`).replace('CATEGORY', category.name.toUpperCase())} ${i !== 3 && '\n'}` : ' ')
121
- })
122
- return
123
- }
124
- handleSendReview()
125
- setAlertState({ ...alertState, success: true })
126
- }
127
-
128
-
129
- const timer = (ms: number) => new Promise(res => setTimeout(res, ms))
130
-
131
- const setStar = async (val: number) => { // We need to wrap the loop into an async function for this to work
132
- setReviewVal(val);
133
- const cats = Object.values(categories);
134
- for (var i = 0; i < cats.length; i++) {
135
- handleChangeRating({ target: { name: cats[i].name, value: val } });
136
- // console.log(`Index: ${i} ---- Value: ${val} --- Category: ${cats[i].name}`);
137
- await timer(1000);
138
- }
139
- }
140
-
141
- const handleChangeStars = async (val: number) => {
142
- if (val) {
143
- setStars({
144
- ...stars,
145
- quality: parseInt(val.toString()),
146
- punctiality: parseInt(val.toString()),
147
- service: parseInt(val.toString()),
148
- packaging: parseInt(val.toString())
149
- })
150
- setReviewVal(val);
151
- // await setStar(val);
152
- }
153
- }
154
-
155
- const onSuggestUpdate = useCallback((items) => {
156
- if (items.length > 0) {
157
- let selected: Array<never> = [];
158
- items.map(({label, checked}: never) => {
159
- if (checked === true) {
160
- selected.push(label);
161
- }
162
- });
163
- setSelectedSuggest(selected);
164
- }
165
- }, []);
166
-
167
- /**
168
- *
169
- * @param type next type as 0: skip,1: continue
170
- */
171
- const handleNext = (type: number) => {
172
- if (type === 1) handleSubmit(onSubmit);
173
- navigation?.navigate('ReviewProduct', { order: order });
174
- }
175
-
176
- useEffect(() => {
177
- if (formState.error && !formState?.loading) {
178
- showToast(ToastType.Error, formState.result)
179
- }
180
- if (!formState.loading && !formState.error && alertState.success) {
181
- showToast(ToastType.Success, t('REVIEW_SUCCESS_CONTENT', 'Thank you, Review successfully submitted!'))
182
- navigation?.navigate('ReviewProduct', { order: order });
183
- }
184
- }, [formState.result])
185
-
186
- useEffect(() => {
187
- if (Object.keys(errors).length > 0) {
188
- // Convert all errors in one string to show in toast provider
189
- const list = Object.values(errors);
190
- let stringError = '';
191
- list.map((item: any, i: number) => {
192
- stringError +=
193
- i + 1 === list.length ? `- ${item.message}` : `- ${item.message}\n`;
194
- });
195
- showToast(ToastType.Error, stringError);
196
- }
197
- }, [errors]);
198
-
199
- useEffect(() => {
200
- if (alertState.open) {
201
- alertState.content && showToast(
202
- ToastType.Error,
203
- alertState.content
204
- )
205
- }
206
- }, [alertState.content])
207
-
208
- useEffect(() => {
209
- setStars({
210
- ...stars,
211
- quality: 0,
212
- punctiality: 0,
213
- service: 0,
214
- packaging: 0
215
- })
216
- }, [])
217
-
218
-
219
- const getStar = (star: number, index: number, category: string) => {
220
- switch (star) {
221
- case 0:
222
- return (
223
- <TouchableOpacity key={index} onPress={() => handleChangeRating({ target: { name: category, value: index + 1 } })}>
224
- <MaterialCommunityIcon name='star-outline' size={24} color={theme.colors.backgroundDark} />
225
- </TouchableOpacity>
226
- )
227
- case 1:
228
- return (
229
- <TouchableOpacity key={index} onPress={() => handleChangeRating({ target: { name: category, value: index + 1 } })}>
230
- <MaterialCommunityIcon name='star' size={24} color={theme.colors.primary} />
231
- </TouchableOpacity>
232
- )
233
- }
234
- }
235
-
236
- return (
237
- <>
238
- <Container>
239
- <ReviewOrderContainer>
240
- <NavBar
241
- title={t('REVIEW_ORDER', 'Review Order')}
242
- titleAlign={'center'}
243
- onActionLeft={() => navigation?.canGoBack() && navigation.goBack()}
244
- showCall={false}
245
- btnStyle={{ paddingLeft: 0 }}
246
- paddingTop={0}
247
- isVertical
248
- leftImg={theme.images.general.close}
249
- leftImageStyle={{width: 16}}
250
- />
251
- <BusinessLogo>
252
- <OIcon url={order?.logo} width={72} height={72} style={{borderRadius: 7.6}} />
253
- </BusinessLogo>
254
- <View style={{ paddingBottom: 30 }}>
255
- <BlockWrap>
256
- <OText mBottom={10}>{t('HOW_WAS_YOUR_ORDER', 'How was your order?')}</OText>
257
- <ProgressBar
258
- progress={curVal / 5}
259
- color={getProgColor()}
260
- style={styles.progress}
261
- />
262
- <View style={styles.progressLabel}>
263
- {scores.map(({ val, text, color }, idx) =>
264
- <TouchableOpacity key={idx} onPress={() => handleChangeStars(val)}>
265
- <OText
266
- size={10}
267
- color={
268
- curVal === val
269
- ? color
270
- : theme.colors.backgroundGray400
271
- }>
272
- {text}
273
- </OText>
274
- </TouchableOpacity>
275
- )}
276
- </View>
277
- </BlockWrap>
278
- <BlockWrap>
279
- <OText mBottom={16}>{t('COMMENTS', 'Comments')}</OText>
280
- <View style={{flexShrink: 1}}>
281
- <TagSelector items={curSuggest} activeColor={theme.colors.primary} normalColor={'#E9ECEF'} onUpdated={onSuggestUpdate} />
282
- </View>
283
- </BlockWrap>
284
- <FormReviews>
285
- <OText mBottom={10}>{t('DO_YOU_WANT_TO_ADD_SOMETHING', 'Do you want to add something?')}</OText>
286
- <Controller
287
- control={control}
288
- defaultValue=''
289
- name='comments'
290
- render={({ onChange }: any) => (
291
- <OInput
292
- name='comments'
293
- placeholder={t('COMMENTS', 'Comments')}
294
- onChange={(val: string) => {
295
- onChange(val)
296
- handleChangeInput(val)
297
- }}
298
- style={styles.inputTextArea}
299
- multiline
300
- inputStyle={{fontSize: 12}}
301
- />
302
- )}
303
- />
304
- </FormReviews>
305
- </View>
306
- <Spinner visible={formState.loading} />
307
- </ReviewOrderContainer>
308
- </Container>
309
- <OBottomStickBar
310
- rightBtnStyle={{borderRadius: 7.6, height: 44}}
311
- rightAction={() => handleNext(0)}
312
- leftAction={() => handleNext(1)}
313
- />
314
- </>
315
- )
316
- }
317
-
318
-
319
- export const ReviewOrder = (props: ReviewOrderParams) => {
320
- const reviewOrderProps = {
321
- ...props,
322
- UIComponent: ReviewOrderUI
323
- }
324
- return <ReviewOrderController {...reviewOrderProps} />
325
- }
@@ -1,46 +0,0 @@
1
- import styled from 'styled-components/native'
2
-
3
- export const ReviewOrderContainer = styled.View`
4
- width: 100%;
5
- flex: 1;
6
- `
7
- export const ReviewOrderTitle = styled.View`
8
-
9
- `
10
-
11
- export const BusinessLogo = styled.View`
12
- margin-vertical: 5px;
13
- align-items: center;
14
- box-shadow: 0 1px 2px #ddd;
15
- border-radius: 7.6px;
16
- margin-bottom: 20px;
17
- `
18
-
19
- export const FormReviews = styled.View`
20
- flex: 1;
21
- `
22
-
23
- export const Category = styled.View`
24
- padding: 10px;
25
- border-width: 1px;
26
- border-color: ${(props: any) => props.theme.colors.secundaryContrast};
27
- flex-direction: row;
28
- justify-content: space-between;
29
- margin-vertical: 5px;
30
- border-radius: 10px;
31
- `
32
-
33
- export const Stars = styled.View`
34
- flex-direction: row;
35
- `
36
-
37
- export const BlockWrap = styled.View`
38
- margin-vertical: 16px;
39
- padding-bottom: 20px;
40
- `;
41
-
42
- export const CommentItem = styled.TouchableOpacity`
43
- padding: 3px 10px;
44
- border-radius: 20px;
45
- min-height: 24px;
46
- `;