ordering-ui-react-native 0.11.30 → 0.11.34
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/src/components/BusinessTypeFilter/index.tsx +1 -1
- package/src/components/Checkout/index.tsx +9 -24
- package/src/components/CouponControl/index.tsx +3 -2
- package/src/components/DriverTips/index.tsx +2 -1
- package/src/components/ProductItemAccordion/styles.tsx +2 -2
- package/src/components/shared/OButton.tsx +3 -2
- package/src/config.json +1 -1
- package/themes/instacart/src/components/AddressForm/index.tsx +4 -3
- package/themes/instacart/src/components/AddressForm/styles.tsx +1 -1
- package/themes/instacart/src/components/ForgotPasswordForm/index.tsx +2 -2
- package/themes/instacart/src/components/Home/index.tsx +21 -1
- package/themes/kiosk/src/components/BusinessMenu/index.tsx +1 -1
- package/themes/kiosk/src/components/CategoriesMenu/index.tsx +1 -1
- package/themes/kiosk/src/components/CustomerName/index.tsx +3 -3
- package/themes/kiosk/src/components/PaymentOptions/index.tsx +1 -1
- package/themes/original/src/components/AddressForm/index.tsx +27 -25
- package/themes/original/src/components/Checkout/index.tsx +1 -1
- package/themes/original/src/components/ForgotPasswordForm/index.tsx +1 -1
- package/themes/original/src/components/GoogleMap/index.tsx +1 -1
- package/themes/original/src/components/StripeElementsForm/index.tsx +26 -4
- package/themes/original/src/components/UserProfileForm/index.tsx +32 -31
package/package.json
CHANGED
|
@@ -35,7 +35,7 @@ export const BusinessTypeFilterUI = (props: BusinessTypeFilterParams) => {
|
|
|
35
35
|
alignItems: 'center',
|
|
36
36
|
},
|
|
37
37
|
categoryStyle: {
|
|
38
|
-
width: isOpenAllCategories ? windowWidth / 3 - 27 : windowWidth / 4 -
|
|
38
|
+
width: isOpenAllCategories ? windowWidth / 3 - 27 : windowWidth / 4 - 10,
|
|
39
39
|
height: 150,
|
|
40
40
|
flexDirection: 'column',
|
|
41
41
|
justifyContent: 'center',
|
|
@@ -119,9 +119,7 @@ const CheckoutUI = (props: any) => {
|
|
|
119
119
|
const [userErrors, setUserErrors] = useState<any>([]);
|
|
120
120
|
const [isUserDetailsEdit, setIsUserDetailsEdit] = useState(false);
|
|
121
121
|
const [phoneUpdate, setPhoneUpdate] = useState(false);
|
|
122
|
-
const [prog, setProg] = useState(true);
|
|
123
122
|
const [showGateway, setShowGateway] = useState<any>({closedByUsed: false, open: false});
|
|
124
|
-
const [progClr, setProgClr] = useState('#424242');
|
|
125
123
|
const [paypalMethod, setPaypalMethod] = useState<any>(null)
|
|
126
124
|
|
|
127
125
|
const driverTipsOptions = typeof configs?.driver_tip_options?.value === 'string'
|
|
@@ -130,7 +128,6 @@ const CheckoutUI = (props: any) => {
|
|
|
130
128
|
|
|
131
129
|
const configTypes = configs?.order_types_allowed?.value.split('|').map((value: any) => Number(value)) || []
|
|
132
130
|
const isPreOrderSetting = configs?.preorder_status_enabled?.value === '1'
|
|
133
|
-
|
|
134
131
|
const cartsWithProducts = carts && Object.values(carts).filter((cart: any) => cart.products.length) || null
|
|
135
132
|
|
|
136
133
|
const handlePlaceOrder = () => {
|
|
@@ -205,8 +202,12 @@ const CheckoutUI = (props: any) => {
|
|
|
205
202
|
}
|
|
206
203
|
|
|
207
204
|
const handlePaymentMethodClick = (paymethod : any) => {
|
|
208
|
-
|
|
209
|
-
|
|
205
|
+
setShowGateway({closedByUser: false, open: true})
|
|
206
|
+
setPaypalMethod(paymethod)
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
const handleCloseWebview = () => {
|
|
210
|
+
setShowGateway({open: false, closedByUser: true})
|
|
210
211
|
}
|
|
211
212
|
|
|
212
213
|
useEffect(() => {
|
|
@@ -558,9 +559,9 @@ const CheckoutUI = (props: any) => {
|
|
|
558
559
|
)}
|
|
559
560
|
<OModal
|
|
560
561
|
open={paypalMethod && showGateway.open}
|
|
561
|
-
onCancel={
|
|
562
|
-
onAccept={
|
|
563
|
-
onClose={
|
|
562
|
+
onCancel={handleCloseWebview}
|
|
563
|
+
onAccept={handleCloseWebview}
|
|
564
|
+
onClose={handleCloseWebview}
|
|
564
565
|
entireModal
|
|
565
566
|
>
|
|
566
567
|
<OText
|
|
@@ -573,9 +574,6 @@ const CheckoutUI = (props: any) => {
|
|
|
573
574
|
}}>
|
|
574
575
|
{t('PAYPAL_GATEWAY', 'PayPal GateWay')}
|
|
575
576
|
</OText>
|
|
576
|
-
<View style={{padding: 13, opacity: prog ? 1 : 0}}>
|
|
577
|
-
<ActivityIndicator size={24} color={progClr} />
|
|
578
|
-
</View>
|
|
579
577
|
<WebView
|
|
580
578
|
source={{ uri: `${ordering.root}/html/paypal_react_native` }}
|
|
581
579
|
onMessage={onMessage}
|
|
@@ -585,18 +583,6 @@ const CheckoutUI = (props: any) => {
|
|
|
585
583
|
cacheEnabled={false}
|
|
586
584
|
cacheMode='LOAD_NO_CACHE'
|
|
587
585
|
style={{ flex: 1 }}
|
|
588
|
-
onLoadStart={() => {
|
|
589
|
-
setProg(true);
|
|
590
|
-
setProgClr('#424242');
|
|
591
|
-
}}
|
|
592
|
-
onLoadProgress={() => {
|
|
593
|
-
setProg(true);
|
|
594
|
-
setProgClr('#00457C');
|
|
595
|
-
}}
|
|
596
|
-
onLoad={() => {
|
|
597
|
-
setProg(true);
|
|
598
|
-
setProgClr('#00457C');
|
|
599
|
-
}}
|
|
600
586
|
onLoadEnd={(e) => {
|
|
601
587
|
const message = {
|
|
602
588
|
action: 'init',
|
|
@@ -614,7 +600,6 @@ const CheckoutUI = (props: any) => {
|
|
|
614
600
|
clientId: paypalMethod?.credentials?.client_id
|
|
615
601
|
}
|
|
616
602
|
}
|
|
617
|
-
setProg(false);
|
|
618
603
|
webviewRef.current.postMessage(JSON.stringify(message))
|
|
619
604
|
}}
|
|
620
605
|
/>
|
|
@@ -30,7 +30,7 @@ const CouponControlUI = (props: any) => {
|
|
|
30
30
|
borderColor: theme.colors.secundaryContrast,
|
|
31
31
|
borderRadius: 50,
|
|
32
32
|
flex: 1,
|
|
33
|
-
marginRight:
|
|
33
|
+
marginRight: 20
|
|
34
34
|
},
|
|
35
35
|
});
|
|
36
36
|
|
|
@@ -102,7 +102,8 @@ const CouponControlUI = (props: any) => {
|
|
|
102
102
|
onClick={() => handleButtonApplyClick()}
|
|
103
103
|
bgColor={theme.colors.primary}
|
|
104
104
|
borderColor={theme.colors.primary}
|
|
105
|
-
textStyle={{color: 'white'}}
|
|
105
|
+
textStyle={{ color: 'white', fontSize: 18, maxWidth: 110, minWidth: 60 }}
|
|
106
|
+
textProps={{numberOfLines: 1}}
|
|
106
107
|
imgRightSrc={null}
|
|
107
108
|
text={t('APPLY', 'Apply')}
|
|
108
109
|
isDisabled={!couponInput}
|
|
@@ -118,8 +118,9 @@ const DriverTipsUI = (props: any) => {
|
|
|
118
118
|
text={t('APPLY_TIP', 'Apply Tip')}
|
|
119
119
|
bgColor={theme.colors.primary}
|
|
120
120
|
borderColor={theme.colors.primary}
|
|
121
|
-
textStyle={{ color: 'white', fontSize:
|
|
121
|
+
textStyle={{ color: 'white', fontSize: 18, maxWidth: 110, minWidth: 60 }}
|
|
122
122
|
imgRightSrc={null}
|
|
123
|
+
textProps={{numberOfLines: 1}}
|
|
123
124
|
isDisabled={!(value > 0 && value !== driverTip) || !value}
|
|
124
125
|
onClick={() => {
|
|
125
126
|
handlerChangeOption(value)
|
|
@@ -73,9 +73,9 @@ export const SelectItemBtn = styled(SelectItem)`
|
|
|
73
73
|
border-width: 1px;
|
|
74
74
|
border-color: transparent;
|
|
75
75
|
border-radius: 10px;
|
|
76
|
-
width:
|
|
76
|
+
width: 65px;
|
|
77
77
|
max-width: 140px;
|
|
78
78
|
margin-vertical: 5px;
|
|
79
|
-
padding: 15px
|
|
79
|
+
padding: 15px;
|
|
80
80
|
background-color: ${(props: any) => props.theme.colors.inputDisabled};
|
|
81
81
|
`
|
|
@@ -77,6 +77,7 @@ interface Props {
|
|
|
77
77
|
borderColor?: string;
|
|
78
78
|
loadingStyle?: ViewStyle;
|
|
79
79
|
theme?: any;
|
|
80
|
+
textProps?: any
|
|
80
81
|
}
|
|
81
82
|
|
|
82
83
|
const OButton = (props: Props): React.ReactElement => {
|
|
@@ -84,7 +85,7 @@ const OButton = (props: Props): React.ReactElement => {
|
|
|
84
85
|
return (
|
|
85
86
|
<View style={props.parentStyle}>
|
|
86
87
|
<StyledButtonDisabled style={props.style}>
|
|
87
|
-
<StyledTextDisabled style={props.textStyle}>
|
|
88
|
+
<StyledTextDisabled style={props.textStyle} {...props.textProps}>
|
|
88
89
|
{props.text}
|
|
89
90
|
</StyledTextDisabled>
|
|
90
91
|
</StyledButtonDisabled>
|
|
@@ -112,7 +113,7 @@ const OButton = (props: Props): React.ReactElement => {
|
|
|
112
113
|
<StyledImage style={{transform: [{scaleX: I18nManager.isRTL ? -1 : 1}], ...props.imgLeftStyle}} source={props.imgLeftSrc} />
|
|
113
114
|
) : null}
|
|
114
115
|
{props.text ? (
|
|
115
|
-
<StyledText style={props.textStyle}>{props.text}</StyledText>
|
|
116
|
+
<StyledText style={props.textStyle} {...props.textProps}>{props.text}</StyledText>
|
|
116
117
|
) : null}
|
|
117
118
|
{props.imgRightSrc ? (
|
|
118
119
|
<EndImage style={props.imgRightStyle} source={props.imgRightSrc} />
|
package/src/config.json
CHANGED
|
@@ -13,6 +13,7 @@ import { AddressFormParams } from '../../types'
|
|
|
13
13
|
import { getTraduction } from '../../utils'
|
|
14
14
|
import { GoogleMap } from '../GoogleMap'
|
|
15
15
|
import NavBar from '../NavBar'
|
|
16
|
+
import { Container } from '../../layouts/Container';
|
|
16
17
|
|
|
17
18
|
import {
|
|
18
19
|
AddressFormContainer,
|
|
@@ -398,13 +399,13 @@ const AddressFormUI = (props: AddressFormParams) => {
|
|
|
398
399
|
}, [])
|
|
399
400
|
|
|
400
401
|
return (
|
|
401
|
-
|
|
402
|
+
<Container>
|
|
402
403
|
<NavBar
|
|
403
404
|
title={t('WHERE_DO_WE_DELIVERY', 'Where do we delivery?')}
|
|
404
405
|
titleAlign={'center'}
|
|
405
406
|
onActionLeft={goToBack}
|
|
406
407
|
showCall={false}
|
|
407
|
-
style={{ paddingHorizontal:
|
|
408
|
+
style={{ paddingHorizontal: 0, marginHorizontal: -7 }}
|
|
408
409
|
/>
|
|
409
410
|
<TouchableWithoutFeedback onPress={Keyboard.dismiss}>
|
|
410
411
|
<AddressFormContainer
|
|
@@ -650,7 +651,7 @@ const AddressFormUI = (props: AddressFormParams) => {
|
|
|
650
651
|
<Spinner visible={saveMapLocation} />
|
|
651
652
|
</AddressFormContainer>
|
|
652
653
|
</TouchableWithoutFeedback>
|
|
653
|
-
|
|
654
|
+
</Container>
|
|
654
655
|
)
|
|
655
656
|
}
|
|
656
657
|
|
|
@@ -88,9 +88,9 @@ const ForgotPasswordUI = (props: any) => {
|
|
|
88
88
|
onActionLeft={() => navigation?.canGoBack() && navigation.goBack()}
|
|
89
89
|
showCall={false}
|
|
90
90
|
paddingTop={0}
|
|
91
|
-
|
|
91
|
+
btnStyle={{marginStart: -6, paddingEnd: 10}}
|
|
92
92
|
/>
|
|
93
|
-
<Container
|
|
93
|
+
<Container>
|
|
94
94
|
<FormSide>
|
|
95
95
|
<OText
|
|
96
96
|
color={theme.colors.textSecondary}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React, { useEffect, useRef, useState } from 'react';
|
|
2
2
|
import { useLanguage, useOrder, useApi, useSession, useUtils } from 'ordering-components/native';
|
|
3
3
|
import { useTheme } from 'styled-components/native';
|
|
4
|
-
import { StyleSheet, View, Dimensions, TextStyle, Animated, PanResponder, KeyboardAvoidingView, Platform } from 'react-native';
|
|
4
|
+
import { StyleSheet, View, Dimensions, TextStyle, Animated, PanResponder, KeyboardAvoidingView, Platform, BackHandler } from 'react-native';
|
|
5
5
|
import { OBottomPopup, OButton, OIcon, OText } from '../shared';
|
|
6
6
|
import { BottomPopup, LogoWrapper, Slogan } from './styles';
|
|
7
7
|
import { LanguageSelector } from '../LanguageSelector'
|
|
@@ -11,6 +11,7 @@ import { ScrollView } from 'react-native-gesture-handler';
|
|
|
11
11
|
import { LoginForm } from '../LoginForm';
|
|
12
12
|
import { SignupForm } from '../SignupForm';
|
|
13
13
|
import Modal from 'react-native-modal';
|
|
14
|
+
import { useFocusEffect } from '@react-navigation/core';
|
|
14
15
|
|
|
15
16
|
const windowHeight = Dimensions.get('window').height
|
|
16
17
|
|
|
@@ -151,6 +152,25 @@ export const Home = (props: any) => {
|
|
|
151
152
|
resetPositionAnim.start();
|
|
152
153
|
}, [])
|
|
153
154
|
|
|
155
|
+
useFocusEffect(
|
|
156
|
+
React.useCallback(() => {
|
|
157
|
+
const onBackPress = () => {
|
|
158
|
+
if (openLogin) {
|
|
159
|
+
setOpenLogin(false)
|
|
160
|
+
return true;
|
|
161
|
+
} else if (openSignUp) {
|
|
162
|
+
setOpenSignUp(false)
|
|
163
|
+
return true;
|
|
164
|
+
} else {
|
|
165
|
+
return false;
|
|
166
|
+
}
|
|
167
|
+
};
|
|
168
|
+
BackHandler.addEventListener('hardwareBackPress', onBackPress);
|
|
169
|
+
return () =>
|
|
170
|
+
BackHandler.removeEventListener('hardwareBackPress', onBackPress);
|
|
171
|
+
}, [openLogin, openSignUp])
|
|
172
|
+
);
|
|
173
|
+
|
|
154
174
|
return (
|
|
155
175
|
<>
|
|
156
176
|
<View style={styles.container}>
|
|
@@ -74,7 +74,7 @@ const BusinessMenu = (props:any): React.ReactElement => {
|
|
|
74
74
|
<Container nopadding nestedScrollEnabled>
|
|
75
75
|
<View style={{ paddingTop: 20 }}>
|
|
76
76
|
<NavBar
|
|
77
|
-
title={t('
|
|
77
|
+
title={t('MENU_V21', 'Menu')}
|
|
78
78
|
onActionLeft={goToBack}
|
|
79
79
|
includeOrderTypeSelector
|
|
80
80
|
rightComponent={cart && (
|
|
@@ -90,7 +90,7 @@ const CategoriesMenu = (props: any): React.ReactElement => {
|
|
|
90
90
|
<Container nopadding nestedScrollEnabled>
|
|
91
91
|
<View style={{ paddingTop: 20 }}>
|
|
92
92
|
<NavBar
|
|
93
|
-
title={t('
|
|
93
|
+
title={t('CATEGORY_X_ID', 'Category')}
|
|
94
94
|
onActionLeft={goToBack}
|
|
95
95
|
rightComponent={cart && (
|
|
96
96
|
<TouchableOpacity
|
|
@@ -110,13 +110,13 @@ const CustomerName = (props: Props): React.ReactElement => {
|
|
|
110
110
|
name="name"
|
|
111
111
|
rules={{
|
|
112
112
|
required: t(
|
|
113
|
-
'
|
|
113
|
+
'VALIDATION_ERROR_REQUIRED',
|
|
114
114
|
'The field Customer Name is required',
|
|
115
|
-
).replace('_attribute_', t('
|
|
115
|
+
).replace('_attribute_', t('REQUEST_COLLECTION_CUSTOMER_NAME', 'Customer Name')),
|
|
116
116
|
pattern: {
|
|
117
117
|
value: /^[a-zA-Z áéíóúüñçÁÉÍÓÚÜÑÇ]+$/i,
|
|
118
118
|
message: t(
|
|
119
|
-
'
|
|
119
|
+
'INVALID_ERROR',
|
|
120
120
|
'Invalid name',
|
|
121
121
|
).replace('_attribute_', t('NAME', 'Name')),
|
|
122
122
|
}
|
|
@@ -160,7 +160,7 @@ const PaymentOptionsUI = (props: any) => {
|
|
|
160
160
|
),
|
|
161
161
|
bgImage: theme.images.general.carddelivery,
|
|
162
162
|
icon: theme.images.general.pushPin,
|
|
163
|
-
callToActionText: t("
|
|
163
|
+
callToActionText: t("LETS_GO", "Let's go"),
|
|
164
164
|
onClick: () => onSelectPaymethod(supportedMethods[cardOnDeliveryIndex], false),
|
|
165
165
|
...supportedMethods[cardOnDeliveryIndex],
|
|
166
166
|
}
|
|
@@ -5,6 +5,8 @@ import {
|
|
|
5
5
|
TouchableOpacity,
|
|
6
6
|
Keyboard,
|
|
7
7
|
TouchableWithoutFeedback,
|
|
8
|
+
KeyboardAvoidingView,
|
|
9
|
+
Platform,
|
|
8
10
|
} from 'react-native';
|
|
9
11
|
import {
|
|
10
12
|
AddressForm as AddressFormController,
|
|
@@ -35,6 +37,7 @@ import {
|
|
|
35
37
|
FormInput,
|
|
36
38
|
} from './styles';
|
|
37
39
|
import { GPSButton } from '../GPSButton';
|
|
40
|
+
import { ScrollView } from 'react-native-gesture-handler';
|
|
38
41
|
|
|
39
42
|
const inputNames = [
|
|
40
43
|
{ name: 'address', code: 'Address' },
|
|
@@ -94,6 +97,7 @@ const AddressFormUI = (props: AddressFormParams) => {
|
|
|
94
97
|
marginBottom: 20,
|
|
95
98
|
height: 104,
|
|
96
99
|
maxHeight: 104,
|
|
100
|
+
minHeight: 104,
|
|
97
101
|
textAlignVertical: 'top',
|
|
98
102
|
alignItems: 'flex-start',
|
|
99
103
|
},
|
|
@@ -491,7 +495,7 @@ const AddressFormUI = (props: AddressFormParams) => {
|
|
|
491
495
|
}, [orderState.loading]);
|
|
492
496
|
|
|
493
497
|
return (
|
|
494
|
-
|
|
498
|
+
<ScrollView>
|
|
495
499
|
<NavBar
|
|
496
500
|
title={t('WHERE_DO_WE_DELIVERY', 'Where do we delivery?')}
|
|
497
501
|
titleAlign={'center'}
|
|
@@ -759,29 +763,27 @@ const AddressFormUI = (props: AddressFormParams) => {
|
|
|
759
763
|
)}
|
|
760
764
|
/>
|
|
761
765
|
</FormInput>
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
|
|
778
|
-
|
|
779
|
-
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
|
|
783
|
-
</IconsContainer>
|
|
784
|
-
)}
|
|
766
|
+
<IconsContainer>
|
|
767
|
+
{tagsName.map((tag) => (
|
|
768
|
+
<TouchableOpacity
|
|
769
|
+
key={tag.value}
|
|
770
|
+
onPress={() => handleAddressTag(tag.value)}>
|
|
771
|
+
<View
|
|
772
|
+
style={{
|
|
773
|
+
...styles.iconContainer,
|
|
774
|
+
}}>
|
|
775
|
+
<OIcon
|
|
776
|
+
src={tag.icon}
|
|
777
|
+
width={24}
|
|
778
|
+
color={
|
|
779
|
+
addressTag === tag.value ?
|
|
780
|
+
theme.colors.primary : theme.colors.disabled
|
|
781
|
+
}
|
|
782
|
+
/>
|
|
783
|
+
</View>
|
|
784
|
+
</TouchableOpacity>
|
|
785
|
+
))}
|
|
786
|
+
</IconsContainer>
|
|
785
787
|
</View>
|
|
786
788
|
|
|
787
789
|
<View>
|
|
@@ -841,7 +843,7 @@ const AddressFormUI = (props: AddressFormParams) => {
|
|
|
841
843
|
<Spinner visible={saveMapLocation} />
|
|
842
844
|
</AddressFormContainer>
|
|
843
845
|
</TouchableWithoutFeedback>
|
|
844
|
-
|
|
846
|
+
</ScrollView>
|
|
845
847
|
);
|
|
846
848
|
};
|
|
847
849
|
|
|
@@ -176,7 +176,7 @@ export const GoogleMap = (props: GoogleMapsParams) => {
|
|
|
176
176
|
return (
|
|
177
177
|
<>
|
|
178
178
|
<MapView
|
|
179
|
-
provider={
|
|
179
|
+
provider={PROVIDER_GOOGLE}
|
|
180
180
|
initialRegion={region}
|
|
181
181
|
style={styles.map}
|
|
182
182
|
onRegionChangeComplete={!readOnly ? (coordinates) => handleChangeRegion(coordinates) : () => { }}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React, { useState, useEffect } from 'react';
|
|
2
|
-
import { View, StyleSheet, useWindowDimensions } from 'react-native';
|
|
2
|
+
import { View, StyleSheet, useWindowDimensions, Keyboard } from 'react-native';
|
|
3
3
|
import { useLanguage, useSession } from 'ordering-components/native';
|
|
4
4
|
import {
|
|
5
5
|
StripeProvider,
|
|
@@ -35,6 +35,7 @@ const StripeElementsFormUI = (props: any) => {
|
|
|
35
35
|
const [createPmLoading, setCreatePmLoading] = useState(false);
|
|
36
36
|
const { height } = useWindowDimensions();
|
|
37
37
|
const { top, bottom } = useSafeAreaInsets();
|
|
38
|
+
const [isKeyboardShow, setIsKeyboardShow] = useState(false);
|
|
38
39
|
|
|
39
40
|
const billingDetails = {
|
|
40
41
|
name: `${user.name} ${user.lastname}`,
|
|
@@ -67,7 +68,7 @@ const StripeElementsFormUI = (props: any) => {
|
|
|
67
68
|
// : error.message
|
|
68
69
|
// );
|
|
69
70
|
// }
|
|
70
|
-
} catch (error) {
|
|
71
|
+
} catch (error: any) {
|
|
71
72
|
setErrors(error?.message || error?.toString());
|
|
72
73
|
}
|
|
73
74
|
}
|
|
@@ -95,7 +96,7 @@ const StripeElementsFormUI = (props: any) => {
|
|
|
95
96
|
: error.message
|
|
96
97
|
);
|
|
97
98
|
}
|
|
98
|
-
} catch (error) {
|
|
99
|
+
} catch (error: any) {
|
|
99
100
|
setErrors(error?.message || error?.toString());
|
|
100
101
|
}
|
|
101
102
|
};
|
|
@@ -111,8 +112,29 @@ const StripeElementsFormUI = (props: any) => {
|
|
|
111
112
|
}
|
|
112
113
|
}, [card])
|
|
113
114
|
|
|
115
|
+
useEffect(() => {
|
|
116
|
+
const keyboardDidShowListener = Keyboard.addListener(
|
|
117
|
+
'keyboardDidShow',
|
|
118
|
+
() => {
|
|
119
|
+
setIsKeyboardShow(true);
|
|
120
|
+
console.log('----- keyboard showing ----')
|
|
121
|
+
},
|
|
122
|
+
);
|
|
123
|
+
const keyboardDidHideListener = Keyboard.addListener(
|
|
124
|
+
'keyboardDidHide',
|
|
125
|
+
() => {
|
|
126
|
+
setIsKeyboardShow(false);
|
|
127
|
+
console.log('----- keyboard hidding ----')
|
|
128
|
+
},
|
|
129
|
+
);
|
|
130
|
+
return () => {
|
|
131
|
+
keyboardDidShowListener.remove();
|
|
132
|
+
keyboardDidHideListener.remove();
|
|
133
|
+
};
|
|
134
|
+
}, []);
|
|
135
|
+
|
|
114
136
|
return (
|
|
115
|
-
<View style={{ ...styles.container,
|
|
137
|
+
<View style={{ ...styles.container, height: height - top - bottom - 60 - (isKeyboardShow ? 250 : 0) }}>
|
|
116
138
|
{publicKey ? (
|
|
117
139
|
<View style={{ flex: 1 }}>
|
|
118
140
|
<StripeProvider publishableKey={publicKey}>
|
|
@@ -10,7 +10,7 @@ import { useTheme } from 'styled-components/native';
|
|
|
10
10
|
import { useForm } from 'react-hook-form';
|
|
11
11
|
import { launchImageLibrary } from 'react-native-image-picker';
|
|
12
12
|
import Spinner from 'react-native-loading-spinner-overlay';
|
|
13
|
-
import { StyleSheet, View } from 'react-native';
|
|
13
|
+
import { KeyboardAvoidingView, Platform, StyleSheet, View } from 'react-native';
|
|
14
14
|
import { ProfileParams } from '../../types';
|
|
15
15
|
import { UserFormDetailsUI } from '../UserFormDetails';
|
|
16
16
|
|
|
@@ -208,38 +208,39 @@ const ProfileUI = (props: ProfileParams) => {
|
|
|
208
208
|
}, [user?.country_phone_code]);
|
|
209
209
|
|
|
210
210
|
return (
|
|
211
|
-
<
|
|
212
|
-
<
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
<
|
|
221
|
-
<
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
211
|
+
<KeyboardAvoidingView behavior={Platform.OS == 'ios' ? 'padding' : 'height'} enabled style={{ flex: 1, flexDirection: 'column',justifyContent: 'center'}}>
|
|
212
|
+
<Container noPadding>
|
|
213
|
+
<NavBar
|
|
214
|
+
onActionLeft={() => navigation.goBack()}
|
|
215
|
+
btnStyle={{ paddingStart: 0 }}
|
|
216
|
+
title={t('ACCOUNT', 'Account')}
|
|
217
|
+
isVertical
|
|
218
|
+
style={styles.pagePadding}
|
|
219
|
+
/>
|
|
220
|
+
<CenterView style={styles.pagePadding}>
|
|
221
|
+
<View style={styles.photo}>
|
|
222
|
+
<OIcon
|
|
223
|
+
url={user?.photo}
|
|
224
|
+
src={!user?.photo && theme.images.general.user}
|
|
225
|
+
width={79}
|
|
226
|
+
height={79}
|
|
227
|
+
/>
|
|
228
|
+
</View>
|
|
229
|
+
<OIconButton
|
|
230
|
+
icon={theme.images.general.camera}
|
|
231
|
+
borderColor={theme.colors.clear}
|
|
232
|
+
iconStyle={{ width: 16, height: 16 }}
|
|
233
|
+
style={{ maxWidth: 40, position: 'absolute', bottom: -2, alignSelf: 'center' }}
|
|
234
|
+
onClick={() => handleImagePicker()}
|
|
226
235
|
/>
|
|
236
|
+
</CenterView>
|
|
237
|
+
<View style={{ height: 8, marginLeft: -40, marginRight: -40, backgroundColor: theme.colors.backgroundGray100, marginVertical: 32, zIndex: 10 }} />
|
|
238
|
+
<Spinner visible={formState?.loading} />
|
|
239
|
+
<View style={styles.pagePadding}>
|
|
240
|
+
<UserFormDetailsUI {...props} isEdit />
|
|
227
241
|
</View>
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
borderColor={theme.colors.clear}
|
|
231
|
-
iconStyle={{ width: 16, height: 16 }}
|
|
232
|
-
style={{ maxWidth: 40, position: 'absolute', bottom: -2, alignSelf: 'center' }}
|
|
233
|
-
onClick={() => handleImagePicker()}
|
|
234
|
-
/>
|
|
235
|
-
</CenterView>
|
|
236
|
-
<View style={{ height: 8, marginLeft: -40, marginRight: -40, backgroundColor: theme.colors.backgroundGray100, marginVertical: 32, zIndex: 10 }} />
|
|
237
|
-
<Spinner visible={formState?.loading} />
|
|
238
|
-
<View style={styles.pagePadding}>
|
|
239
|
-
<UserFormDetailsUI {...props} isEdit />
|
|
240
|
-
</View>
|
|
241
|
-
|
|
242
|
-
</Container>
|
|
242
|
+
</Container>
|
|
243
|
+
</KeyboardAvoidingView>
|
|
243
244
|
);
|
|
244
245
|
};
|
|
245
246
|
|