ordering-ui-react-native 0.22.21 → 0.22.22-release
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +6 -7
- package/src/DeliveryApp.tsx +43 -1
- package/src/components/BusinessesListing/index.tsx +1 -1
- package/src/components/Checkout/index.tsx +40 -39
- package/src/components/StripeMethodForm/index.tsx +4 -2
- package/src/components/VerifyPhone/styles.tsx +1 -2
- package/src/context/OfflineActions/index.tsx +236 -0
- package/src/types/index.tsx +2 -1
- package/themes/business/index.tsx +2 -0
- package/themes/business/src/components/AcceptOrRejectOrder/index.tsx +9 -6
- package/themes/business/src/components/AcceptOrRejectOrder/styles.tsx +1 -0
- package/themes/business/src/components/BusinessController/index.tsx +8 -3
- package/themes/business/src/components/BusinessProductList/index.tsx +3 -2
- package/themes/business/src/components/Chat/index.tsx +15 -3
- package/themes/business/src/components/DriverMap/index.tsx +49 -26
- package/themes/business/src/components/FloatingButton/index.tsx +3 -2
- package/themes/business/src/components/GoogleMap/index.tsx +15 -8
- package/themes/business/src/components/LanguageSelector/index.tsx +2 -3
- package/themes/business/src/components/LanguageSelector/lang_country.json +515 -70
- package/themes/business/src/components/LogoutButton/index.tsx +1 -1
- package/themes/business/src/components/MapView/index.tsx +36 -17
- package/themes/business/src/components/NewOrderNotification/index.tsx +38 -19
- package/themes/business/src/components/OrderDetails/Business.tsx +47 -27
- package/themes/business/src/components/OrderDetails/Delivery.tsx +134 -53
- package/themes/business/src/components/OrderDetails/OrderContentComponent.tsx +128 -41
- package/themes/business/src/components/OrderDetails/OrderHeaderComponent.tsx +45 -18
- package/themes/business/src/components/OrderDetails/styles.tsx +39 -3
- package/themes/business/src/components/OrderDetails/usePrinterCommands.tsx +17 -16
- package/themes/business/src/components/OrderDetailsLogistic/index.tsx +3 -2
- package/themes/business/src/components/OrderSummary/index.tsx +6 -4
- package/themes/business/src/components/OrdersListManager/index.tsx +13 -1
- package/themes/business/src/components/OrdersOption/index.tsx +217 -156
- package/themes/business/src/components/PhoneInputNumber/index.tsx +8 -5
- package/themes/business/src/components/PreviousMessages/index.tsx +26 -3
- package/themes/business/src/components/PreviousOrders/OrderItem.tsx +39 -16
- package/themes/business/src/components/PreviousOrders/index.tsx +74 -66
- package/themes/business/src/components/PrinterEdition/MessageAlert.tsx +33 -0
- package/themes/business/src/components/PrinterEdition/index.tsx +431 -0
- package/themes/business/src/components/PrinterEdition/printerList.tsx +23 -0
- package/themes/business/src/components/PrinterEdition/styles.tsx +61 -0
- package/themes/business/src/components/PrinterSettings/index.tsx +162 -174
- package/themes/business/src/components/PrinterSettings/styles.tsx +14 -1
- package/themes/business/src/components/ProductItemAccordion/index.tsx +3 -2
- package/themes/business/src/components/ReviewCustomer/index.tsx +2 -0
- package/themes/business/src/components/StoresList/index.tsx +2 -2
- package/themes/business/src/components/UserProfileForm/index.tsx +55 -22
- package/themes/business/src/components/UserProfileForm/styles.tsx +7 -0
- package/themes/business/src/components/WebsocketStatus/index.tsx +2 -2
- package/themes/business/src/components/shared/OTextarea.tsx +8 -9
- package/themes/business/src/config/currency.tsx +1010 -0
- package/themes/business/src/hooks/useLocation.tsx +16 -12
- package/themes/business/src/layouts/SafeAreaContainer.tsx +35 -19
- package/themes/business/src/types/index.tsx +16 -4
- package/themes/business/src/utils/index.tsx +33 -3
- package/themes/doordash/src/components/BusinessesListing/index.tsx +1 -1
- package/themes/doordash/src/components/LoginForm/index.tsx +1 -2
- package/themes/instacart/src/components/BusinessesListing/index.tsx +1 -1
- package/themes/kiosk/src/components/Checkout/index.tsx +6 -0
- package/themes/kiosk/src/components/NavBar/index.tsx +14 -14
- package/themes/kiosk/src/components/OptionCard/index.tsx +1 -1
- package/themes/kiosk/src/components/OrderTypeCardSelector/index.tsx +8 -10
- package/themes/kiosk/src/components/shared/OButton.tsx +5 -18
- package/themes/original/index.tsx +11 -0
- package/themes/original/src/components/AddressForm/index.tsx +32 -17
- package/themes/original/src/components/AddressList/index.tsx +8 -7
- package/themes/original/src/components/AppleLogin/index.tsx +4 -4
- package/themes/original/src/components/BusinessBasicInformation/index.tsx +5 -8
- package/themes/original/src/components/BusinessItemAccordion/index.tsx +13 -5
- package/themes/original/src/components/BusinessListingSearch/BusinessSearchFooter.tsx +103 -92
- package/themes/original/src/components/BusinessListingSearch/BusinessSearchHeader.tsx +8 -6
- package/themes/original/src/components/BusinessListingSearch/index.tsx +1 -2
- package/themes/original/src/components/BusinessPreorder/index.tsx +46 -28
- package/themes/original/src/components/BusinessProductsList/SubcategoriesComponent/index.tsx +73 -70
- package/themes/original/src/components/BusinessProductsList/index.tsx +6 -7
- package/themes/original/src/components/BusinessProductsList/styles.tsx +0 -3
- package/themes/original/src/components/BusinessProductsListing/index.tsx +10 -6
- package/themes/original/src/components/BusinessTypeFilter/index.tsx +9 -8
- package/themes/original/src/components/BusinessesListing/Layout/Appointment/index.tsx +2 -1
- package/themes/original/src/components/BusinessesListing/Layout/Original/styles.tsx +1 -1
- package/themes/original/src/components/BusinessesListing/index.tsx +0 -1
- package/themes/original/src/components/Cart/index.tsx +46 -14
- package/themes/original/src/components/CartContent/index.tsx +2 -4
- package/themes/original/src/components/Checkout/index.tsx +127 -77
- package/themes/original/src/components/CitiesControl/index.tsx +0 -3
- package/themes/original/src/components/CouponControl/index.tsx +1 -3
- package/themes/original/src/components/DriverTips/index.tsx +1 -3
- package/themes/original/src/components/Favorite/index.tsx +1 -5
- package/themes/original/src/components/FavoriteList/index.tsx +0 -1
- package/themes/original/src/components/ForgotPasswordForm/index.tsx +5 -7
- package/themes/original/src/components/GiftCard/GiftCardUI/index.tsx +15 -17
- package/themes/original/src/components/GiftCard/PurchaseGiftCard/index.tsx +3 -7
- package/themes/original/src/components/GiftCard/RedeemGiftCard/index.tsx +24 -32
- package/themes/original/src/components/GiftCard/SendGiftCard/index.tsx +7 -9
- package/themes/original/src/components/GiftCard/VerticalGiftCardOrdersLayout/index.tsx +11 -12
- package/themes/original/src/components/GoogleMap/index.tsx +39 -18
- package/themes/original/src/components/Help/index.tsx +2 -0
- package/themes/original/src/components/HighestRatedBusinesses/index.tsx +1 -1
- package/themes/original/src/components/Home/index.tsx +3 -11
- package/themes/original/src/components/LoginForm/Otp/index.tsx +0 -3
- package/themes/original/src/components/LoginForm/index.tsx +12 -9
- package/themes/original/src/components/MessageListing/index.tsx +2 -1
- package/themes/original/src/components/Messages/index.tsx +27 -19
- package/themes/original/src/components/MomentOption/TimeListItem.tsx +56 -0
- package/themes/original/src/components/MomentOption/index.tsx +80 -51
- package/themes/original/src/components/MomentSelector/index.tsx +5 -2
- package/themes/original/src/components/MultiCartsPaymethodsAndWallets/index.tsx +7 -3
- package/themes/original/src/components/MultiCheckout/index.tsx +55 -27
- package/themes/original/src/components/MultiOrdersDetails/index.tsx +1 -0
- package/themes/original/src/components/MyOrders/index.tsx +2 -2
- package/themes/original/src/components/NavBar/index.tsx +7 -4
- package/themes/original/src/components/NetworkError/index.tsx +0 -5
- package/themes/original/src/components/NotFoundSource/index.tsx +0 -3
- package/themes/original/src/components/OrderDetails/OrderEta.tsx +4 -3
- package/themes/original/src/components/OrderDetails/OrderHistory.tsx +16 -11
- package/themes/original/src/components/OrderDetails/index.tsx +44 -21
- package/themes/original/src/components/OrderDetails/styles.tsx +0 -1
- package/themes/original/src/components/OrderProgress/index.tsx +4 -3
- package/themes/original/src/components/OrderSummary/index.tsx +29 -10
- package/themes/original/src/components/OrderTypeSelector/index.tsx +7 -6
- package/themes/original/src/components/OrdersOption/index.tsx +3 -6
- package/themes/original/src/components/PaymentOptionStripe/index.tsx +0 -5
- package/themes/original/src/components/PaymentOptionWallet/index.tsx +56 -56
- package/themes/original/src/components/PaymentOptions/index.tsx +4 -3
- package/themes/original/src/components/PhoneInputNumber/index.tsx +92 -7
- package/themes/original/src/components/PlaceSpot/index.tsx +1 -3
- package/themes/original/src/components/PreviousOrders/index.tsx +1 -2
- package/themes/original/src/components/ProductForm/ActionButton.tsx +17 -20
- package/themes/original/src/components/ProductForm/index.tsx +107 -102
- package/themes/original/src/components/ProductItemAccordion/index.tsx +50 -43
- package/themes/original/src/components/ProductItemAccordion/styles.tsx +0 -3
- package/themes/original/src/components/ProductOptionSubOption/index.tsx +16 -8
- package/themes/original/src/components/ProfessionalProfile/index.tsx +4 -5
- package/themes/original/src/components/Promotions/index.tsx +6 -9
- package/themes/original/src/components/ReviewDriver/index.tsx +1 -1
- package/themes/original/src/components/ReviewOrder/index.tsx +2 -2
- package/themes/original/src/components/ReviewProducts/index.tsx +1 -1
- package/themes/original/src/components/ReviewTrigger/index.tsx +2 -2
- package/themes/original/src/components/ServiceForm/index.tsx +52 -54
- package/themes/original/src/components/Sessions/index.tsx +3 -3
- package/themes/original/src/components/SignupForm/index.tsx +102 -88
- package/themes/original/src/components/SingleOrderCard/index.tsx +6 -4
- package/themes/original/src/components/SingleProductCard/index.tsx +5 -5
- package/themes/original/src/components/SingleProductCard/styles.tsx +0 -3
- package/themes/original/src/components/StripeCardForm/index.tsx +0 -3
- package/themes/original/src/components/StripeCardsList/index.tsx +16 -3
- package/themes/original/src/components/StripeElementsForm/index.tsx +76 -62
- package/themes/original/src/components/StripeElementsForm/naked.tsx +48 -1
- package/themes/original/src/components/StripeRedirectForm/index.tsx +0 -3
- package/themes/original/src/components/TaxInformation/index.tsx +3 -2
- package/themes/original/src/components/UpsellingProducts/UpsellingContent.tsx +10 -7
- package/themes/original/src/components/UpsellingProducts/UpsellingLayout.tsx +8 -3
- package/themes/original/src/components/UserDetails/index.tsx +17 -16
- package/themes/original/src/components/UserFormDetails/index.tsx +164 -135
- package/themes/original/src/components/UserProfile/index.tsx +9 -1
- package/themes/original/src/components/UserVerification/index.tsx +15 -4
- package/themes/original/src/components/Wallets/index.tsx +6 -3
- package/themes/original/src/components/WebsocketStatus/index.tsx +1 -4
- package/themes/original/src/components/shared/OAlert.tsx +2 -1
- package/themes/original/src/components/shared/OButton.tsx +5 -4
- package/themes/original/src/components/shared/OInput.tsx +4 -8
- package/themes/original/src/components/shared/OModal.tsx +7 -2
- package/themes/original/src/types/index.tsx +10 -3
- package/themes/original/src/utils/index.tsx +30 -1
- package/themes/uber-eats/src/components/BusinessesListing/index.tsx +1 -1
|
@@ -57,9 +57,9 @@ const ServiceFormUI = (props: ServiceFormParams) => {
|
|
|
57
57
|
const [{ optimizeImage, parsePrice, parseDate }] = useUtils()
|
|
58
58
|
const { top } = useSafeAreaInsets()
|
|
59
59
|
const [{ configs }] = useConfig()
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
60
|
+
const [orderState] = useOrder()
|
|
61
|
+
const [{ auth }] = useSession()
|
|
62
|
+
const { product, loading, error } = productObject;
|
|
63
63
|
|
|
64
64
|
const [selectDate, setSelectedDate] = useState<any>(new Date())
|
|
65
65
|
const [timeList, setTimeList] = useState<any>([])
|
|
@@ -77,8 +77,8 @@ const ServiceFormUI = (props: ServiceFormParams) => {
|
|
|
77
77
|
const styles = StyleSheet.create({
|
|
78
78
|
photoStyle: {
|
|
79
79
|
width: 45,
|
|
80
|
-
|
|
81
|
-
|
|
80
|
+
height: 45,
|
|
81
|
+
borderRadius: 7.6
|
|
82
82
|
},
|
|
83
83
|
buttonStyle: {
|
|
84
84
|
borderRadius: 7.6,
|
|
@@ -144,7 +144,7 @@ const ServiceFormUI = (props: ServiceFormParams) => {
|
|
|
144
144
|
return (moment.utc(item?.start).local().valueOf() <= moment(selectedMoment).valueOf() &&
|
|
145
145
|
moment(selectedMoment).valueOf() < moment.utc(item?.end).local().valueOf()) ||
|
|
146
146
|
(moment.utc(item?.start).local().valueOf() < moment(selectedMoment).add(duration, 'minutes').valueOf() &&
|
|
147
|
-
|
|
147
|
+
moment(selectedMoment).add(duration, 'minutes').valueOf() < moment.utc(item?.end).local().valueOf())
|
|
148
148
|
})
|
|
149
149
|
return valid
|
|
150
150
|
}
|
|
@@ -166,9 +166,9 @@ const ServiceFormUI = (props: ServiceFormParams) => {
|
|
|
166
166
|
}
|
|
167
167
|
|
|
168
168
|
const handleUpdateGuest = () => {
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
169
|
+
const guestToken = uuid.v4()
|
|
170
|
+
if (guestToken) handleCreateGuestUser({ guest_token: guestToken })
|
|
171
|
+
}
|
|
172
172
|
|
|
173
173
|
const customDayHeaderStylesCallback = () => {
|
|
174
174
|
return {
|
|
@@ -193,11 +193,11 @@ const ServiceFormUI = (props: ServiceFormParams) => {
|
|
|
193
193
|
}
|
|
194
194
|
|
|
195
195
|
const handleRedirectLogin = () => {
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
196
|
+
navigation && navigation.navigate('Login', {
|
|
197
|
+
store_slug: props.businessSlug
|
|
198
|
+
});
|
|
199
199
|
onClose && onClose()
|
|
200
|
-
|
|
200
|
+
};
|
|
201
201
|
|
|
202
202
|
const getTimes = (curdate: any, menu: any) => {
|
|
203
203
|
validateSelectedDate(curdate, menu)
|
|
@@ -290,7 +290,7 @@ const ServiceFormUI = (props: ServiceFormParams) => {
|
|
|
290
290
|
setSelectedDate(moment.utc(productCart?.calendar_event?.start).local())
|
|
291
291
|
setTimeSelected(moment.utc(productCart?.calendar_event?.start).local().format('HH:mm'))
|
|
292
292
|
}, [productCart])
|
|
293
|
-
|
|
293
|
+
|
|
294
294
|
return (
|
|
295
295
|
<>
|
|
296
296
|
{loading && !error && (
|
|
@@ -450,7 +450,7 @@ const ServiceFormUI = (props: ServiceFormParams) => {
|
|
|
450
450
|
<CalendarWrapper>
|
|
451
451
|
{(timeList?.length > 0 && isEnabled) ? (
|
|
452
452
|
<SelectDropdown
|
|
453
|
-
ref={dropdownRef}
|
|
453
|
+
ref={dropdownRef}
|
|
454
454
|
defaultValueByIndex={timeList.findIndex((item: any) => item.value === timeSelected)}
|
|
455
455
|
data={timeList}
|
|
456
456
|
onSelect={(selectedItem, index) => {
|
|
@@ -462,7 +462,7 @@ const ServiceFormUI = (props: ServiceFormParams) => {
|
|
|
462
462
|
rowTextForSelection={(item, index) => {
|
|
463
463
|
return item.text
|
|
464
464
|
}}
|
|
465
|
-
buttonStyle={{borderRadius: 7.6, ...styles.selectOption}}
|
|
465
|
+
buttonStyle={{ borderRadius: 7.6, ...styles.selectOption }}
|
|
466
466
|
buttonTextStyle={{
|
|
467
467
|
color: theme.colors.disabled,
|
|
468
468
|
fontSize: 14,
|
|
@@ -485,7 +485,7 @@ const ServiceFormUI = (props: ServiceFormParams) => {
|
|
|
485
485
|
}}
|
|
486
486
|
renderCustomizedRowChild={(item, index) => {
|
|
487
487
|
return (
|
|
488
|
-
<Text style={[styles.dropDownRow, { color: isBusyTime(currentProfessional, getMomentTime(item.value)) ? theme.colors.lightGray : theme.colors.primary }
|
|
488
|
+
<Text style={[styles.dropDownRow, { color: isBusyTime(currentProfessional, getMomentTime(item.value)) ? theme.colors.lightGray : theme.colors.primary }]}>
|
|
489
489
|
{item.text}
|
|
490
490
|
</Text>
|
|
491
491
|
)
|
|
@@ -553,7 +553,6 @@ const ServiceFormUI = (props: ServiceFormParams) => {
|
|
|
553
553
|
auth &&
|
|
554
554
|
orderState.options?.address_id)) && (
|
|
555
555
|
<OButton
|
|
556
|
-
bgColor={theme.colors.primary}
|
|
557
556
|
onClick={() => handleSaveService()}
|
|
558
557
|
text={orderState.loading
|
|
559
558
|
? t('LOADING', 'Loading')
|
|
@@ -562,7 +561,7 @@ const ServiceFormUI = (props: ServiceFormParams) => {
|
|
|
562
561
|
: t('BOOK', 'Book'))}
|
|
563
562
|
style={styles.buttonStyle}
|
|
564
563
|
isDisabled={isSoldOut || maxProductQuantity <= 0 || !currentProfessional?.id || !dateSelected || isBusyTime(currentProfessional, dateSelected)}
|
|
565
|
-
textStyle={{ fontSize: 14
|
|
564
|
+
textStyle={{ fontSize: 14 }}
|
|
566
565
|
/>
|
|
567
566
|
)}
|
|
568
567
|
{auth &&
|
|
@@ -577,45 +576,44 @@ const ServiceFormUI = (props: ServiceFormParams) => {
|
|
|
577
576
|
) : (
|
|
578
577
|
<OButton onClick={() => addressRedirect()} />
|
|
579
578
|
))}
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
{
|
|
599
|
-
|
|
600
|
-
{
|
|
601
|
-
<
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
)}
|
|
579
|
+
{!auth && (
|
|
580
|
+
<OButton
|
|
581
|
+
isDisabled={isSoldOut || maxProductQuantity <= 0}
|
|
582
|
+
onClick={() => handleRedirectLogin()}
|
|
583
|
+
text={
|
|
584
|
+
isSoldOut || maxProductQuantity <= 0
|
|
585
|
+
? t('SOLD_OUT', 'Sold out')
|
|
586
|
+
: t('LOGIN_SIGNUP', 'Login / Sign Up')
|
|
587
|
+
}
|
|
588
|
+
imgRightSrc=""
|
|
589
|
+
textStyle={{ color: theme.colors.primary, fontSize: 14 }}
|
|
590
|
+
style={{
|
|
591
|
+
height: 44,
|
|
592
|
+
backgroundColor: theme.colors.white,
|
|
593
|
+
}}
|
|
594
|
+
/>
|
|
595
|
+
)}
|
|
596
|
+
{!auth && guestCheckoutEnabled && orderTypeEnabled && (
|
|
597
|
+
<TouchableOpacity style={{ marginTop: 10 }} onPress={handleUpdateGuest}>
|
|
598
|
+
{actionStatus?.loading ? (
|
|
599
|
+
<Placeholder Animation={Fade}>
|
|
600
|
+
<PlaceholderLine width={60} height={20} />
|
|
601
|
+
</Placeholder>
|
|
602
|
+
) : (
|
|
603
|
+
<OText color={theme.colors.primary} size={13}>{t('AS_GUEST_USER', 'As guest user')}</OText>
|
|
604
|
+
)}
|
|
605
|
+
</TouchableOpacity>
|
|
606
|
+
)}
|
|
609
607
|
</ButtonWrapper>
|
|
610
608
|
</Container>
|
|
611
609
|
)}
|
|
612
610
|
|
|
613
611
|
<OModal
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
612
|
+
open={isOpen}
|
|
613
|
+
onClose={() => setIsOpen(false)}
|
|
614
|
+
entireModal
|
|
615
|
+
>
|
|
616
|
+
<ScrollView contentContainerStyle={styles.professionalList}>
|
|
619
617
|
<View style={{ paddingVertical: 11 }}>
|
|
620
618
|
<OText
|
|
621
619
|
size={14}
|
|
@@ -671,7 +669,7 @@ const ServiceFormUI = (props: ServiceFormParams) => {
|
|
|
671
669
|
</TouchableOpacity>
|
|
672
670
|
))}
|
|
673
671
|
</ScrollView>
|
|
674
|
-
|
|
672
|
+
</OModal>
|
|
675
673
|
</>
|
|
676
674
|
)
|
|
677
675
|
}
|
|
@@ -111,14 +111,14 @@ export const SessionsUI = (props: SessionsParams) => {
|
|
|
111
111
|
<OButton
|
|
112
112
|
text={t('DELETE_ALL_SESSIONS', 'Delete all sessions')}
|
|
113
113
|
isDisabled={actionState.loading}
|
|
114
|
-
textStyle={{
|
|
114
|
+
textStyle={{ fontSize: 14 }}
|
|
115
115
|
onClick={() => onDeleteAllSessions(false, true)}
|
|
116
116
|
style={{ borderRadius: 7.6, marginTop: 30 }}
|
|
117
117
|
/>
|
|
118
118
|
<OButton
|
|
119
119
|
text={t('DELETE_ALL_SESSIONS_EXCEPT_CURRENT', 'Delete all sessions except current')}
|
|
120
120
|
isDisabled={actionState.loading}
|
|
121
|
-
textStyle={{
|
|
121
|
+
textStyle={{ fontSize: 14 }}
|
|
122
122
|
onClick={() => onDeleteAllSessions(false, false)}
|
|
123
123
|
style={{ borderRadius: 7.6, marginTop: 20 }}
|
|
124
124
|
/>
|
|
@@ -136,7 +136,7 @@ export const SessionsUI = (props: SessionsParams) => {
|
|
|
136
136
|
<OButton
|
|
137
137
|
text={t('ACTIVE_SESSIONS', 'Active sessions')}
|
|
138
138
|
isDisabled={actionState.loading}
|
|
139
|
-
textStyle={{
|
|
139
|
+
textStyle={{ fontSize: 14 }}
|
|
140
140
|
onClick={() => onDeleteAllSessions(true, false)}
|
|
141
141
|
style={{ borderRadius: 7.6, marginTop: 20 }}
|
|
142
142
|
/>
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React, { useEffect, useRef, useState } from 'react';
|
|
2
|
-
import { View, Pressable, StyleSheet, Linking, Platform, TouchableOpacity } from 'react-native';
|
|
2
|
+
import { View, Pressable, StyleSheet, Linking, Platform, TouchableOpacity, Modal } from 'react-native';
|
|
3
3
|
import { useForm, Controller } from 'react-hook-form';
|
|
4
4
|
import Spinner from 'react-native-loading-spinner-overlay';
|
|
5
5
|
import MaterialCommunityIcons from 'react-native-vector-icons/MaterialCommunityIcons';
|
|
@@ -32,11 +32,9 @@ import {
|
|
|
32
32
|
} from '../LoginForm/styles';
|
|
33
33
|
|
|
34
34
|
import NavBar from '../NavBar';
|
|
35
|
-
import { VerifyPhone } from '../VerifyPhone';
|
|
36
35
|
|
|
37
36
|
import Alert from '../../../../../src/providers/AlertProvider'
|
|
38
37
|
import { OText, OButton, OInput } from '../shared';
|
|
39
|
-
import { OModal } from '../../../../../src/components/shared';
|
|
40
38
|
import { SignupParams } from '../../types';
|
|
41
39
|
import { sortInputFields } from '../../utils';
|
|
42
40
|
import { GoogleLogin } from '../GoogleLogin';
|
|
@@ -85,7 +83,8 @@ const SignupFormUI = (props: SignupParams) => {
|
|
|
85
83
|
useSignUpFullDetails,
|
|
86
84
|
useSignUpOtpEmail,
|
|
87
85
|
useSignUpOtpCellphone,
|
|
88
|
-
isGuest
|
|
86
|
+
isGuest,
|
|
87
|
+
setCellphoneStartZero
|
|
89
88
|
} = props;
|
|
90
89
|
|
|
91
90
|
const theme = useTheme();
|
|
@@ -141,6 +140,8 @@ const SignupFormUI = (props: SignupParams) => {
|
|
|
141
140
|
const [recaptchaConfig, setRecaptchaConfig] = useState<any>({})
|
|
142
141
|
const [recaptchaVerified, setRecaptchaVerified] = useState(false)
|
|
143
142
|
const [tabLayouts, setTabLayouts] = useState<any>({})
|
|
143
|
+
const [isCheckingCode, setCheckingCode] = useState(false)
|
|
144
|
+
const [otpError, setOtpError] = useState(null)
|
|
144
145
|
|
|
145
146
|
const tabsRef = useRef<any>(null)
|
|
146
147
|
const nameRef = useRef<any>(null);
|
|
@@ -155,7 +156,7 @@ const SignupFormUI = (props: SignupParams) => {
|
|
|
155
156
|
const showInputPhoneNumber = (validationFields?.fields?.checkout?.cellphone?.enabled ?? false) || configs?.verification_phone_required?.value === '1'
|
|
156
157
|
const googleLoginEnabled = configs?.google_login_enabled?.value === '1' || !configs?.google_login_enabled?.enabled
|
|
157
158
|
const facebookLoginEnabled = configs?.facebook_login_enabled?.value === '1' || !configs?.facebook_login_enabled?.enabled
|
|
158
|
-
const appleLoginEnabled = configs?.apple_login_enabled?.value === '1' || !configs?.apple_login_enabled?.enabled
|
|
159
|
+
const appleLoginEnabled = Platform.OS === 'ios' && (configs?.apple_login_enabled?.value === '1' || !configs?.apple_login_enabled?.enabled)
|
|
159
160
|
|
|
160
161
|
const closeAlert = () => {
|
|
161
162
|
setAlertState({
|
|
@@ -366,6 +367,19 @@ const SignupFormUI = (props: SignupParams) => {
|
|
|
366
367
|
handleReCaptcha && handleReCaptcha({ code: token, version: recaptchaConfig?.version })
|
|
367
368
|
}
|
|
368
369
|
|
|
370
|
+
const handleChangePhoneNumber = (number : any, rawNumber: any) => {
|
|
371
|
+
setPhoneInputData({
|
|
372
|
+
...phoneInputData,
|
|
373
|
+
...number,
|
|
374
|
+
phone: {
|
|
375
|
+
...phoneInputData.phone,
|
|
376
|
+
...number.phone,
|
|
377
|
+
country_code: phoneInputData.phone.country_code
|
|
378
|
+
}
|
|
379
|
+
})
|
|
380
|
+
setCellphoneStartZero && setCellphoneStartZero(rawNumber?.number && rawNumber?.countryCallingCode ? rawNumber?.number : null)
|
|
381
|
+
}
|
|
382
|
+
|
|
369
383
|
useEffect(() => {
|
|
370
384
|
if (configs && Object.keys(configs).length > 0 && enableReCaptcha) {
|
|
371
385
|
if (configs?.security_recaptcha_type?.value === 'v3' &&
|
|
@@ -467,9 +481,16 @@ const SignupFormUI = (props: SignupParams) => {
|
|
|
467
481
|
|
|
468
482
|
useEffect(() => {
|
|
469
483
|
if (checkPhoneCodeState?.result?.error) {
|
|
470
|
-
|
|
484
|
+
const titleText = (
|
|
485
|
+
typeof checkPhoneCodeState?.result?.result === 'string'
|
|
486
|
+
? checkPhoneCodeState?.result?.result
|
|
487
|
+
: checkPhoneCodeState?.result?.result[0].toString()
|
|
488
|
+
) || t('ERROR', 'Error')
|
|
489
|
+
setCheckingCode(false)
|
|
490
|
+
setOtpError(titleText)
|
|
491
|
+
checkPhoneCodeState?.generate && setAlertState({
|
|
471
492
|
open: true,
|
|
472
|
-
title:
|
|
493
|
+
title: titleText,
|
|
473
494
|
content: []
|
|
474
495
|
})
|
|
475
496
|
}
|
|
@@ -583,80 +604,74 @@ const SignupFormUI = (props: SignupParams) => {
|
|
|
583
604
|
{sortInputFields({
|
|
584
605
|
values: validationFields?.fields?.checkout,
|
|
585
606
|
}).map(
|
|
586
|
-
(
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
(signUpTab === '
|
|
592
|
-
|
|
593
|
-
{
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
<Controller
|
|
602
|
-
control={control}
|
|
603
|
-
render={({ onChange, value }: any) => (
|
|
604
|
-
<OInput
|
|
605
|
-
placeholder={t(field.name?.replace(/\s/g, '_')?.toUpperCase(), field.name)}
|
|
606
|
-
style={style.inputStyle}
|
|
607
|
-
icon={
|
|
608
|
-
field.code === 'email'
|
|
609
|
-
? theme.images.general.email
|
|
610
|
-
: theme.images.general.user
|
|
611
|
-
}
|
|
612
|
-
value={value}
|
|
613
|
-
onChange={(val: any) =>
|
|
614
|
-
field.code !== 'email'
|
|
615
|
-
? (onChange(val))
|
|
616
|
-
: handleChangeInputEmail(val, onChange)
|
|
617
|
-
}
|
|
618
|
-
autoCapitalize={
|
|
619
|
-
field.code === 'email' ? 'none' : 'sentences'
|
|
620
|
-
}
|
|
621
|
-
autoCorrect={field.code === 'email' && false}
|
|
622
|
-
type={
|
|
623
|
-
field.code === 'email' ? 'email-address' : 'default'
|
|
624
|
-
}
|
|
625
|
-
autoCompleteType={
|
|
626
|
-
field.code === 'email' ? 'email' : 'off'
|
|
627
|
-
}
|
|
628
|
-
returnKeyType="next"
|
|
629
|
-
blurOnSubmit={false}
|
|
630
|
-
forwardRef={(ref: any) => handleRefs(ref, field.code)}
|
|
631
|
-
onSubmitEditing={() =>
|
|
632
|
-
field.code === 'email'
|
|
633
|
-
? phoneRef?.current?.focus?.()
|
|
634
|
-
: handleFocusRef(getNextFieldCode(i))
|
|
635
|
-
}
|
|
636
|
-
borderColor={errors?.[`${field.code}`] ? theme.colors.danger5 : theme.colors.border}
|
|
637
|
-
/>
|
|
607
|
+
(item: any, i: number) => {
|
|
608
|
+
const field = item?.validation_field || item
|
|
609
|
+
return (!notValidationFields.includes(field.code) &&
|
|
610
|
+
showField &&
|
|
611
|
+
showField(field.code) &&
|
|
612
|
+
(signUpTab === 'default' ||
|
|
613
|
+
(signUpTab === 'otpEmail' && field.code === 'email')) && (
|
|
614
|
+
<React.Fragment key={field.id}>
|
|
615
|
+
{errors?.[`${field.code}`] && (
|
|
616
|
+
<OText
|
|
617
|
+
size={14}
|
|
618
|
+
color={theme.colors.danger5}
|
|
619
|
+
weight={'normal'}>
|
|
620
|
+
{errors?.[`${field.code}`]?.message} {errors?.[`${field.code}`]?.type === 'required' && '*'}
|
|
621
|
+
</OText>
|
|
638
622
|
)}
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
623
|
+
<Controller
|
|
624
|
+
control={control}
|
|
625
|
+
render={({ onChange, value }: any) => (
|
|
626
|
+
<OInput
|
|
627
|
+
placeholder={t(field.name?.replace(/\s/g, '_')?.toUpperCase(), field.name)}
|
|
628
|
+
style={style.inputStyle}
|
|
629
|
+
icon={
|
|
630
|
+
field.code === 'email'
|
|
631
|
+
? theme.images.general.email
|
|
632
|
+
: theme.images.general.user
|
|
633
|
+
}
|
|
634
|
+
value={value}
|
|
635
|
+
onChange={(val: any) =>
|
|
636
|
+
field.code !== 'email'
|
|
637
|
+
? (onChange(val))
|
|
638
|
+
: handleChangeInputEmail(val, onChange)
|
|
639
|
+
}
|
|
640
|
+
autoCapitalize={
|
|
641
|
+
field.code === 'email' ? 'none' : 'sentences'
|
|
642
|
+
}
|
|
643
|
+
autoCorrect={field.code === 'email' && false}
|
|
644
|
+
type={
|
|
645
|
+
field.code === 'email' ? 'email-address' : 'default'
|
|
646
|
+
}
|
|
647
|
+
autoCompleteType={
|
|
648
|
+
field.code === 'email' ? 'email' : 'off'
|
|
649
|
+
}
|
|
650
|
+
returnKeyType="next"
|
|
651
|
+
blurOnSubmit={false}
|
|
652
|
+
forwardRef={(ref: any) => handleRefs(ref, field.code)}
|
|
653
|
+
onSubmitEditing={() =>
|
|
654
|
+
field.code === 'email'
|
|
655
|
+
? phoneRef?.current?.focus?.()
|
|
656
|
+
: handleFocusRef(getNextFieldCode(i))
|
|
657
|
+
}
|
|
658
|
+
borderColor={errors?.[`${field.code}`] ? theme.colors.danger5 : theme.colors.border}
|
|
659
|
+
/>
|
|
660
|
+
)}
|
|
661
|
+
name={field.code}
|
|
662
|
+
rules={getInputRules(field)}
|
|
663
|
+
defaultValue=""
|
|
664
|
+
/>
|
|
665
|
+
</React.Fragment>
|
|
666
|
+
))
|
|
667
|
+
}
|
|
645
668
|
)}
|
|
646
669
|
|
|
647
670
|
{(!!showInputPhoneNumber && (signUpTab === 'default' || signUpTab === 'otpCellphone')) && (
|
|
648
671
|
<View style={{ marginBottom: 25 }}>
|
|
649
672
|
<PhoneInputNumber
|
|
650
673
|
data={phoneInputData}
|
|
651
|
-
handleData={
|
|
652
|
-
...phoneInputData,
|
|
653
|
-
...val,
|
|
654
|
-
phone: {
|
|
655
|
-
...phoneInputData.phone,
|
|
656
|
-
...val.phone,
|
|
657
|
-
country_code: phoneInputData.phone.country_code
|
|
658
|
-
}
|
|
659
|
-
})}
|
|
674
|
+
handleData={handleChangePhoneNumber}
|
|
660
675
|
forwardRef={phoneRef}
|
|
661
676
|
changeCountry={(val: any) => setPhoneInputData({
|
|
662
677
|
...phoneInputData,
|
|
@@ -787,9 +802,9 @@ const SignupFormUI = (props: SignupParams) => {
|
|
|
787
802
|
<OButton
|
|
788
803
|
imgRightSrc={null}
|
|
789
804
|
text={t('TERMS_AND_CONDITIONS', 'Terms & Conditions')}
|
|
790
|
-
bgColor=
|
|
791
|
-
borderColor=
|
|
792
|
-
style={{ paddingLeft: 0, paddingRight: 0, height: 30, shadowColor:
|
|
805
|
+
bgColor={theme.colors.white}
|
|
806
|
+
borderColor={theme.colors.white}
|
|
807
|
+
style={{ paddingLeft: 0, paddingRight: 0, height: 30, shadowColor: theme.colors.white }}
|
|
793
808
|
textStyle={{ color: theme.colors.primary, marginLeft: 0, marginRight: 0 }}
|
|
794
809
|
onClick={() => handleOpenTermsUrl(configs?.terms_and_conditions_url?.value)}
|
|
795
810
|
/>
|
|
@@ -833,6 +848,7 @@ const SignupFormUI = (props: SignupParams) => {
|
|
|
833
848
|
/>
|
|
834
849
|
)
|
|
835
850
|
}
|
|
851
|
+
autoCapitalize='none'
|
|
836
852
|
value={value}
|
|
837
853
|
onChange={(val: any) => onChange(val)}
|
|
838
854
|
returnKeyType="done"
|
|
@@ -874,9 +890,7 @@ const SignupFormUI = (props: SignupParams) => {
|
|
|
874
890
|
<OButton
|
|
875
891
|
onClick={handleSubmit(onSubmit)}
|
|
876
892
|
text={t('GET_VERIFY_CODE', 'Get Verify Code')}
|
|
877
|
-
borderColor={theme.colors.primary}
|
|
878
893
|
imgRightSrc={null}
|
|
879
|
-
textStyle={{ color: 'white' }}
|
|
880
894
|
isLoading={isLoadingVerifyModal}
|
|
881
895
|
indicatorColor={theme.colors.white}
|
|
882
896
|
style={{ borderRadius: 7.6, marginTop: 6 }}
|
|
@@ -885,9 +899,6 @@ const SignupFormUI = (props: SignupParams) => {
|
|
|
885
899
|
<OButton
|
|
886
900
|
onClick={handleSubmit(onSubmit)}
|
|
887
901
|
text={signupButtonText}
|
|
888
|
-
bgColor={theme.colors.primary}
|
|
889
|
-
borderColor={theme.colors.primary}
|
|
890
|
-
textStyle={{ color: 'white' }}
|
|
891
902
|
imgRightSrc={null}
|
|
892
903
|
isDisabled={formState.loading || validationFields.loading}
|
|
893
904
|
style={{ borderRadius: 7.6, marginTop: 6, shadowOpacity: 0 }}
|
|
@@ -969,13 +980,16 @@ const SignupFormUI = (props: SignupParams) => {
|
|
|
969
980
|
)
|
|
970
981
|
)}
|
|
971
982
|
</FormSide>
|
|
972
|
-
<
|
|
973
|
-
|
|
974
|
-
|
|
975
|
-
|
|
976
|
-
title={t('ENTER_VERIFICATION_CODE', 'Enter verification code')}
|
|
983
|
+
<Modal
|
|
984
|
+
visible={willVerifyOtpState}
|
|
985
|
+
onDismiss={() => setWillVerifyOtpState && setWillVerifyOtpState(false)}
|
|
986
|
+
animationType='slide'
|
|
977
987
|
>
|
|
978
988
|
<Otp
|
|
989
|
+
isCheckingCode={isCheckingCode}
|
|
990
|
+
setCheckingCode={setCheckingCode}
|
|
991
|
+
otpError={otpError}
|
|
992
|
+
setOtpError={setOtpError}
|
|
979
993
|
pinCount={numOtpInputs || 6}
|
|
980
994
|
willVerifyOtpState={willVerifyOtpState || false}
|
|
981
995
|
setWillVerifyOtpState={() => setWillVerifyOtpState && setWillVerifyOtpState(false)}
|
|
@@ -983,7 +997,7 @@ const SignupFormUI = (props: SignupParams) => {
|
|
|
983
997
|
onSubmit={onSubmit}
|
|
984
998
|
setAlertState={setAlertState}
|
|
985
999
|
/>
|
|
986
|
-
</
|
|
1000
|
+
</Modal>
|
|
987
1001
|
<Spinner
|
|
988
1002
|
visible={formState.loading || validationFields.loading || isFBLoading}
|
|
989
1003
|
/>
|
|
@@ -3,7 +3,8 @@ import {
|
|
|
3
3
|
SingleOrderCard as SingleOrderCardController,
|
|
4
4
|
useUtils,
|
|
5
5
|
useOrder,
|
|
6
|
-
useLanguage
|
|
6
|
+
useLanguage,
|
|
7
|
+
useConfig
|
|
7
8
|
} from 'ordering-components/native';
|
|
8
9
|
import FastImage from 'react-native-fast-image'
|
|
9
10
|
import { StyleSheet, TouchableOpacity, View } from 'react-native';
|
|
@@ -45,6 +46,7 @@ const SingleOrderCardUI = (props: SingleOrderCardParams) => {
|
|
|
45
46
|
const [{ parsePrice, optimizeImage, parseDate }] = useUtils();
|
|
46
47
|
const [, t] = useLanguage();
|
|
47
48
|
const [{ carts }] = useOrder()
|
|
49
|
+
const [{ configs }] = useConfig()
|
|
48
50
|
const theme = useTheme();
|
|
49
51
|
const isFocused = useIsFocused();
|
|
50
52
|
|
|
@@ -54,6 +56,7 @@ const SingleOrderCardUI = (props: SingleOrderCardParams) => {
|
|
|
54
56
|
|
|
55
57
|
const allowedOrderStatus = [1, 2, 5, 6, 10, 11, 12, 15];
|
|
56
58
|
const isGiftCardOrder = !order?.business_id
|
|
59
|
+
const changeIdToExternalId = configs?.change_order_id?.value === '1'
|
|
57
60
|
|
|
58
61
|
const styles = StyleSheet.create({
|
|
59
62
|
container: {
|
|
@@ -82,7 +85,6 @@ const SingleOrderCardUI = (props: SingleOrderCardParams) => {
|
|
|
82
85
|
elevation: 3
|
|
83
86
|
},
|
|
84
87
|
buttonText: {
|
|
85
|
-
color: theme.colors.primary,
|
|
86
88
|
fontSize: 10,
|
|
87
89
|
marginLeft: 2,
|
|
88
90
|
marginRight: 2,
|
|
@@ -334,7 +336,7 @@ const SingleOrderCardUI = (props: SingleOrderCardParams) => {
|
|
|
334
336
|
lineHeight={15}
|
|
335
337
|
numberOfLines={1}
|
|
336
338
|
>
|
|
337
|
-
{order?.business?.length > 1 ? order?.business?.length : (t('ORDER_NO', 'Order No') + '.')}
|
|
339
|
+
{order?.business?.length > 1 ? order?.business?.length : !(changeIdToExternalId && order?.external_id) && (t('ORDER_NO', 'Order No') + '.')}
|
|
338
340
|
</OText>
|
|
339
341
|
<OText
|
|
340
342
|
size={10}
|
|
@@ -343,7 +345,7 @@ const SingleOrderCardUI = (props: SingleOrderCardParams) => {
|
|
|
343
345
|
lineHeight={15}
|
|
344
346
|
numberOfLines={1}
|
|
345
347
|
>
|
|
346
|
-
{order?.business?.length > 1 ? t('ORDERS', 'orders') + ' \u2022 ' : order.id + ` \u2022 `}
|
|
348
|
+
{order?.business?.length > 1 ? t('ORDERS', 'orders') + ' \u2022 ' : ((changeIdToExternalId && order?.external_id) || order.id) + ` \u2022 `}
|
|
347
349
|
</OText>
|
|
348
350
|
</>
|
|
349
351
|
)}
|
|
@@ -48,11 +48,13 @@ const SingleProductCardUI = React.memo((props: SingleProductCardParams) => {
|
|
|
48
48
|
const hideAddButton = theme?.business_view?.components?.products?.components?.add_to_cart_button?.hidden ?? true
|
|
49
49
|
const isChewLayout = theme?.header?.components?.layout?.type?.toLowerCase() === 'chew'
|
|
50
50
|
const hideProductDescription = theme?.business_view?.components?.products?.components?.product?.components?.description?.hidden
|
|
51
|
+
const hideProductDummyLogo = theme?.business_view?.components?.products?.components?.product?.components?.dummy?.hidden
|
|
51
52
|
const hideProductLogo = viewString
|
|
52
53
|
? theme?.[viewString]?.components?.cart?.components?.products?.image?.hidden
|
|
53
54
|
: theme?.business_view?.components?.products?.components?.product?.components?.image?.hidden
|
|
54
55
|
const textSize = isChewLayout ? 12 : 10
|
|
55
56
|
const logoPosition = theme?.business_view?.components?.products?.components?.product?.components?.image?.position
|
|
57
|
+
const hideFavoriteIcon = theme?.business_view?.components?.products?.components?.product?.components?.favorite?.hidden
|
|
56
58
|
|
|
57
59
|
const styles = StyleSheet.create({
|
|
58
60
|
container: {
|
|
@@ -197,7 +199,7 @@ const SingleProductCardUI = React.memo((props: SingleProductCardParams) => {
|
|
|
197
199
|
style={{ ...styles.line18, flex: 1 }}>
|
|
198
200
|
{product?.name}
|
|
199
201
|
</OText>
|
|
200
|
-
{!isPreviously && (
|
|
202
|
+
{!isPreviously && !hideFavoriteIcon && (
|
|
201
203
|
<LottieAnimation
|
|
202
204
|
type='favorite'
|
|
203
205
|
onClick={handleChangeFavorite}
|
|
@@ -283,7 +285,7 @@ const SingleProductCardUI = React.memo((props: SingleProductCardParams) => {
|
|
|
283
285
|
</OText>
|
|
284
286
|
</RibbonBox>
|
|
285
287
|
)}
|
|
286
|
-
{!hideProductLogo && (
|
|
288
|
+
{(!hideProductLogo && (product?.images || !hideProductDummyLogo)) && (
|
|
287
289
|
<FastImage
|
|
288
290
|
style={styles.productStyle}
|
|
289
291
|
source={product?.images ? {
|
|
@@ -313,9 +315,7 @@ const SingleProductCardUI = React.memo((props: SingleProductCardParams) => {
|
|
|
313
315
|
height: 40
|
|
314
316
|
|
|
315
317
|
}}
|
|
316
|
-
|
|
317
|
-
borderColor={theme?.colors.primary}
|
|
318
|
-
textStyle={{ color: theme.colors.primary }}
|
|
318
|
+
isDisabled={isSoldOut}
|
|
319
319
|
text={t('ADD', 'Add')}
|
|
320
320
|
/>
|
|
321
321
|
)}
|
|
@@ -49,15 +49,12 @@ export const RibbonBox = styled.View`
|
|
|
49
49
|
background-color: ${(props: any) => props.theme.colors.primary};
|
|
50
50
|
padding: 1px 8px;
|
|
51
51
|
max-width: 60px;
|
|
52
|
-
|
|
53
52
|
${(props: any) => props.bgColor && css`
|
|
54
53
|
background-color: ${props.bgColor};
|
|
55
54
|
`}
|
|
56
|
-
|
|
57
55
|
${(props: any) => props.isRoundRect && css`
|
|
58
56
|
border-radius: 7.6px;
|
|
59
57
|
`}
|
|
60
|
-
|
|
61
58
|
${(props: any) => props.isCapsule && css`
|
|
62
59
|
border-radius: 50px;
|
|
63
60
|
`}
|
|
@@ -65,9 +65,6 @@ const StripeCardFormUI = (props: any) => {
|
|
|
65
65
|
<OButton
|
|
66
66
|
text={loading ? t('LOADING', 'Loading...') : t('ADD', 'Add')}
|
|
67
67
|
isDisabled={!cardState?.valid || loading}
|
|
68
|
-
bgColor={theme.colors.primary}
|
|
69
|
-
borderColor={theme.colors.primary}
|
|
70
|
-
textStyle={{ color: 'white' }}
|
|
71
68
|
imgRightSrc={null}
|
|
72
69
|
onClick={handleSubmit}
|
|
73
70
|
/>
|