ordering-ui-react-native 0.17.73 → 0.17.74-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 +8 -7
- package/src/DeliveryApp.tsx +43 -1
- package/src/components/BusinessInformation/index.tsx +10 -9
- package/src/components/BusinessesListing/index.tsx +1 -1
- package/src/components/OrderCreating/index.tsx +1 -21
- package/src/components/PaymentOptionsWebView/index.tsx +29 -8
- package/src/components/PhoneInputNumber/index.tsx +6 -2
- package/src/components/StripeMethodForm/index.tsx +136 -102
- package/src/components/VerifyPhone/styles.tsx +1 -2
- package/src/components/shared/OToast.tsx +3 -2
- package/src/types/index.tsx +5 -0
- package/src/utils/index.tsx +5 -0
- package/themes/business/index.tsx +2 -0
- package/themes/business/src/components/AcceptOrRejectOrder/index.tsx +28 -25
- package/themes/business/src/components/BusinessController/index.tsx +0 -1
- package/themes/business/src/components/Chat/index.tsx +149 -118
- package/themes/business/src/components/DriverMap/index.tsx +17 -6
- package/themes/business/src/components/DriverSchedule/index.tsx +45 -8
- package/themes/business/src/components/GoogleMap/index.tsx +58 -57
- package/themes/business/src/components/LoginForm/Otp/index.tsx +31 -3
- package/themes/business/src/components/LoginForm/index.tsx +15 -22
- package/themes/business/src/components/MapView/index.tsx +10 -10
- package/themes/business/src/components/MessagesOption/index.tsx +20 -93
- package/themes/business/src/components/NewOrderNotification/index.tsx +37 -21
- package/themes/business/src/components/NotFoundSource/index.tsx +2 -2
- package/themes/business/src/components/OrderDetails/Business.tsx +1 -1
- package/themes/business/src/components/OrderDetails/Delivery.tsx +191 -6
- package/themes/business/src/components/OrderDetails/OrderContentComponent.tsx +103 -39
- package/themes/business/src/components/OrderDetails/OrderHeaderComponent.tsx +61 -60
- package/themes/business/src/components/OrderDetailsLogistic/index.tsx +195 -0
- package/themes/business/src/components/OrderDetailsLogistic/styles.tsx +5 -0
- package/themes/business/src/components/OrderMessage/index.tsx +19 -18
- package/themes/business/src/components/OrderSummary/index.tsx +114 -123
- package/themes/business/src/components/OrdersOption/index.tsx +17 -15
- package/themes/business/src/components/PreviousMessages/FooterMessageComponent.tsx +103 -0
- package/themes/business/src/components/PreviousMessages/index.tsx +97 -55
- package/themes/business/src/components/PreviousOrders/OrderItem.tsx +17 -12
- package/themes/business/src/components/PreviousOrders/OrderList.tsx +88 -0
- package/themes/business/src/components/PreviousOrders/OrdersGroupedItem.tsx +1 -1
- package/themes/business/src/components/PreviousOrders/index.tsx +139 -174
- package/themes/business/src/components/ProductItemAccordion/index.tsx +27 -3
- package/themes/business/src/components/ReviewCustomer/index.tsx +18 -13
- package/themes/business/src/components/StoresList/index.tsx +3 -4
- package/themes/business/src/components/UserProfileForm/index.tsx +14 -15
- package/themes/business/src/components/shared/OLink.tsx +11 -3
- package/themes/business/src/components/shared/OModal.tsx +16 -9
- package/themes/business/src/components/shared/OText.tsx +6 -1
- package/themes/business/src/types/index.tsx +25 -10
- package/themes/business/src/utils/index.tsx +29 -2
- 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/Intro/index.tsx +16 -1
- package/themes/kiosk/src/components/LoginForm/index.tsx +7 -9
- 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/PhoneInputNumber/index.tsx +2 -2
- package/themes/kiosk/src/components/shared/OButton.tsx +5 -18
- package/themes/original/index.tsx +1 -1
- package/themes/original/src/components/AddressDetails/index.tsx +19 -3
- package/themes/original/src/components/AddressForm/index.tsx +61 -39
- package/themes/original/src/components/AddressList/index.tsx +25 -24
- package/themes/original/src/components/AddressList/styles.tsx +4 -2
- package/themes/original/src/components/AnalyticsSegment/index.tsx +193 -10
- package/themes/original/src/components/AppleLogin/index.tsx +4 -4
- package/themes/original/src/components/AppleLogin/styles.tsx +3 -1
- package/themes/original/src/components/BusinessBasicInformation/index.tsx +153 -96
- package/themes/original/src/components/BusinessBasicInformation/styles.tsx +10 -12
- package/themes/original/src/components/BusinessController/index.tsx +80 -66
- package/themes/original/src/components/BusinessController/styles.tsx +12 -5
- package/themes/original/src/components/BusinessFeaturedController/index.tsx +21 -54
- package/themes/original/src/components/BusinessFeaturedController/styles.tsx +8 -0
- package/themes/original/src/components/BusinessInformation/index.tsx +139 -85
- package/themes/original/src/components/BusinessItemAccordion/index.tsx +15 -20
- package/themes/original/src/components/BusinessListingSearch/index.tsx +349 -339
- package/themes/original/src/components/BusinessListingSearch/styles.tsx +0 -18
- package/themes/original/src/components/BusinessPreorder/index.tsx +103 -19
- package/themes/original/src/components/BusinessProductsCategories/index.tsx +1 -2
- package/themes/original/src/components/BusinessProductsList/index.tsx +15 -7
- package/themes/original/src/components/BusinessProductsList/styles.tsx +8 -3
- package/themes/original/src/components/BusinessProductsListing/UpsellingRedirect.tsx +1 -1
- package/themes/original/src/components/BusinessProductsListing/index.tsx +684 -557
- package/themes/original/src/components/BusinessProductsListing/styles.tsx +2 -2
- package/themes/original/src/components/BusinessReviews/index.tsx +3 -1
- package/themes/original/src/components/BusinessesListing/Layout/Original/index.tsx +69 -38
- package/themes/original/src/components/BusinessesListing/Layout/Original/styles.tsx +0 -1
- package/themes/original/src/components/BusinessesListing/index.tsx +0 -1
- package/themes/original/src/components/Cart/index.tsx +76 -79
- package/themes/original/src/components/CartContent/index.tsx +117 -20
- package/themes/original/src/components/CartContent/styles.tsx +17 -7
- package/themes/original/src/components/Checkout/index.tsx +274 -54
- package/themes/original/src/components/CitiesControl/index.tsx +1 -1
- package/themes/original/src/components/CouponControl/index.tsx +10 -3
- package/themes/original/src/components/DriverTips/index.tsx +52 -34
- package/themes/original/src/components/FacebookLogin/styles.tsx +3 -1
- package/themes/original/src/components/Favorite/index.tsx +2 -6
- package/themes/original/src/components/FavoriteList/index.tsx +1 -35
- package/themes/original/src/components/FloatingButton/index.tsx +10 -13
- package/themes/original/src/components/GPSButton/index.tsx +6 -4
- package/themes/original/src/components/GiftCard/PurchaseGiftCard/index.tsx +7 -3
- package/themes/original/src/components/GiftCard/PurchaseGiftCard/styles.tsx +2 -0
- package/themes/original/src/components/GiftCard/RedeemGiftCard/index.tsx +19 -6
- package/themes/original/src/components/GoogleLogin/styles.tsx +1 -1
- package/themes/original/src/components/GoogleMap/index.tsx +60 -5
- package/themes/original/src/components/Help/index.tsx +2 -2
- package/themes/original/src/components/HelpAccountAndPayment/index.tsx +10 -31
- package/themes/original/src/components/HelpAccountAndPayment/styles.tsx +5 -3
- package/themes/original/src/components/HelpGuide/index.tsx +6 -6
- package/themes/original/src/components/HelpGuide/styles.tsx +6 -0
- package/themes/original/src/components/HelpOrder/index.tsx +6 -15
- package/themes/original/src/components/HelpOrder/styles.tsx +8 -1
- package/themes/original/src/components/Home/index.tsx +13 -4
- package/themes/original/src/components/LastOrder/index.tsx +1 -34
- package/themes/original/src/components/LoginForm/Otp/index.tsx +91 -25
- package/themes/original/src/components/LoginForm/index.tsx +64 -34
- package/themes/original/src/components/LottieAnimation/index.tsx +88 -63
- package/themes/original/src/components/MessageListing/index.tsx +16 -42
- package/themes/original/src/components/Messages/index.tsx +14 -7
- package/themes/original/src/components/MomentOption/index.tsx +193 -90
- package/themes/original/src/components/MomentSelector/index.tsx +1 -1
- package/themes/original/src/components/MultiCart/index.tsx +41 -54
- package/themes/original/src/components/MultiCartsPaymethodsAndWallets/index.tsx +162 -50
- package/themes/original/src/components/MultiCheckout/index.tsx +329 -100
- package/themes/original/src/components/MultiCheckout/styles.tsx +3 -1
- package/themes/original/src/components/MultiOrdersDetails/SingleOrderCard.tsx +37 -224
- package/themes/original/src/components/MultiOrdersDetails/index.tsx +54 -21
- package/themes/original/src/components/MultiOrdersDetails/styles.tsx +1 -1
- package/themes/original/src/components/MyOrders/index.tsx +40 -29
- package/themes/original/src/components/NavBar/index.tsx +20 -17
- package/themes/original/src/components/NotFoundSource/index.tsx +14 -10
- package/themes/original/src/components/Notifications/index.tsx +42 -52
- package/themes/original/src/components/Notifications/styles.tsx +6 -3
- package/themes/original/src/components/OrderDetails/OrderEta.tsx +76 -0
- package/themes/original/src/components/OrderDetails/OrderHistory.tsx +21 -5
- package/themes/original/src/components/OrderDetails/index.tsx +28 -233
- package/themes/original/src/components/OrderDetails/styles.tsx +0 -1
- package/themes/original/src/components/OrderItAgain/index.tsx +3 -1
- package/themes/original/src/components/OrderProgress/index.tsx +30 -56
- package/themes/original/src/components/OrderSummary/index.tsx +83 -57
- package/themes/original/src/components/OrderTypeSelector/index.tsx +2 -1
- package/themes/original/src/components/OrdersOption/PreviousProductsOrdered/index.tsx +14 -14
- package/themes/original/src/components/OrdersOption/index.tsx +67 -85
- package/themes/original/src/components/OrdersOption/styles.tsx +1 -1
- package/themes/original/src/components/PageBanner/index.tsx +98 -38
- package/themes/original/src/components/PageBanner/styles.tsx +0 -10
- package/themes/original/src/components/PaymentOptionCard/index.tsx +180 -0
- package/themes/original/src/components/PaymentOptionStripe/styles.tsx +1 -1
- package/themes/original/src/components/PaymentOptionWallet/index.tsx +56 -56
- package/themes/original/src/components/PaymentOptions/index.tsx +77 -34
- package/themes/original/src/components/PhoneInputNumber/index.tsx +18 -4
- package/themes/original/src/components/ProductForm/index.tsx +104 -29
- package/themes/original/src/components/ProductForm/styles.tsx +5 -5
- package/themes/original/src/components/ProductItemAccordion/index.tsx +8 -6
- package/themes/original/src/components/ProductOptionSubOption/index.tsx +20 -18
- package/themes/original/src/components/ProductOptionSubOption/styles.tsx +5 -9
- package/themes/original/src/components/ProfessionalFilter/SingleProfessionalCard/index.tsx +108 -0
- package/themes/original/src/components/ProfessionalFilter/index.tsx +20 -50
- package/themes/original/src/components/ProfessionalProfile/index.tsx +36 -7
- package/themes/original/src/components/Promotions/index.tsx +2 -2
- package/themes/original/src/components/Promotions/styles.tsx +3 -1
- package/themes/original/src/components/ReviewProducts/index.tsx +16 -7
- package/themes/original/src/components/ScheduleAccordion/index.tsx +3 -3
- package/themes/original/src/components/ServiceForm/index.tsx +63 -20
- package/themes/original/src/components/Sessions/index.tsx +11 -8
- package/themes/original/src/components/Sessions/styles.tsx +5 -0
- package/themes/original/src/components/SignupForm/index.tsx +43 -27
- package/themes/original/src/components/SingleOrderCard/index.tsx +102 -63
- package/themes/original/src/components/SingleOrderCard/styles.tsx +1 -1
- package/themes/original/src/components/SingleProductCard/index.tsx +72 -31
- package/themes/original/src/components/SingleProductCard/styles.tsx +20 -4
- package/themes/original/src/components/SingleProductReview/styles.tsx +1 -1
- package/themes/original/src/components/StripeCardsList/index.tsx +49 -5
- package/themes/original/src/components/StripeElementsForm/index.tsx +48 -34
- package/themes/original/src/components/StripeElementsForm/naked.tsx +12 -1
- package/themes/original/src/components/UpsellingProducts/index.tsx +238 -224
- package/themes/original/src/components/UpsellingProducts/styles.tsx +12 -1
- package/themes/original/src/components/UserDetails/index.tsx +3 -1
- package/themes/original/src/components/UserFormDetails/index.tsx +76 -7
- package/themes/original/src/components/UserFormDetails/styles.tsx +1 -1
- package/themes/original/src/components/UserProfile/index.tsx +88 -79
- package/themes/original/src/components/UserProfileForm/index.tsx +17 -21
- package/themes/original/src/components/UserProfileForm/styles.tsx +7 -0
- package/themes/original/src/components/UserVerification/index.tsx +55 -50
- package/themes/original/src/components/WalletTransactionItem/index.tsx +2 -2
- package/themes/original/src/components/WalletTransactions/index.tsx +3 -3
- package/themes/original/src/components/Wallets/index.tsx +56 -33
- package/themes/original/src/components/Wallets/styles.tsx +3 -4
- package/themes/original/src/components/shared/OButton.tsx +6 -2
- package/themes/original/src/components/shared/OInput.tsx +6 -1
- package/themes/original/src/components/shared/OModal.tsx +3 -3
- package/themes/original/src/types/index.tsx +38 -10
- package/themes/original/src/utils/index.tsx +273 -1
- package/themes/uber-eats/src/components/BusinessesListing/index.tsx +1 -1
- package/src/navigators/BottomNavigator.tsx +0 -117
- package/src/navigators/CheckoutNavigator.tsx +0 -66
- package/src/navigators/HomeNavigator.tsx +0 -202
- package/src/navigators/NavigationRef.tsx +0 -7
- package/src/navigators/RootNavigator.tsx +0 -269
- package/src/pages/Account.tsx +0 -34
- package/src/pages/AddressForm.tsx +0 -62
- package/src/pages/AddressList.tsx +0 -24
- package/src/pages/BusinessProductsList.tsx +0 -81
- package/src/pages/BusinessesListing.tsx +0 -43
- package/src/pages/CartList.tsx +0 -49
- package/src/pages/Checkout.tsx +0 -101
- package/src/pages/ForgotPassword.tsx +0 -24
- package/src/pages/Help.tsx +0 -23
- package/src/pages/HelpAccountAndPayment.tsx +0 -23
- package/src/pages/HelpGuide.tsx +0 -23
- package/src/pages/HelpOrder.tsx +0 -23
- package/src/pages/Home.tsx +0 -36
- package/src/pages/IntroductoryTutorial.tsx +0 -170
- package/src/pages/Login.tsx +0 -47
- package/src/pages/MomentOption.tsx +0 -30
- package/src/pages/MultiCheckout.tsx +0 -31
- package/src/pages/MultiOrdersDetails.tsx +0 -27
- package/src/pages/MyOrders.tsx +0 -40
- package/src/pages/NetworkError.tsx +0 -24
- package/src/pages/NotFound.tsx +0 -22
- package/src/pages/OrderDetails.tsx +0 -25
- package/src/pages/ProductDetails.tsx +0 -55
- package/src/pages/Profile.tsx +0 -36
- package/src/pages/ReviewDriver.tsx +0 -30
- package/src/pages/ReviewOrder.tsx +0 -32
- package/src/pages/ReviewProducts.tsx +0 -30
- package/src/pages/Sessions.tsx +0 -22
- package/src/pages/Signup.tsx +0 -53
- package/src/pages/SpinnerLoader.tsx +0 -10
- package/src/pages/Splash.tsx +0 -21
|
@@ -18,8 +18,11 @@ import {
|
|
|
18
18
|
useOrder,
|
|
19
19
|
useUtils,
|
|
20
20
|
ToastType,
|
|
21
|
-
useToast
|
|
21
|
+
useToast,
|
|
22
|
+
useConfig,
|
|
23
|
+
useEvent
|
|
22
24
|
} from 'ordering-components/native';
|
|
25
|
+
import uuid from 'react-native-uuid';
|
|
23
26
|
import { useTheme } from 'styled-components/native';
|
|
24
27
|
import { ProductIngredient } from '../ProductIngredient';
|
|
25
28
|
import { ProductOption } from '../ProductOption';
|
|
@@ -27,6 +30,7 @@ import Swiper from 'react-native-swiper'
|
|
|
27
30
|
import FastImage from 'react-native-fast-image';
|
|
28
31
|
import IconAntDesign from 'react-native-vector-icons/AntDesign';
|
|
29
32
|
import YoutubePlayer from "react-native-youtube-iframe"
|
|
33
|
+
import ReactNativeHapticFeedback from "react-native-haptic-feedback";
|
|
30
34
|
|
|
31
35
|
import {
|
|
32
36
|
WrapHeader,
|
|
@@ -50,6 +54,8 @@ import { ScrollView } from 'react-native-gesture-handler';
|
|
|
50
54
|
import { ProductOptionSubOption } from '../ProductOptionSubOption';
|
|
51
55
|
import { NotFoundSource } from '../NotFoundSource';
|
|
52
56
|
import { Placeholder, PlaceholderLine, Fade } from 'rn-placeholder';
|
|
57
|
+
import NavBar from '../NavBar';
|
|
58
|
+
import { orderTypeList, vibrateApp } from '../../utils';
|
|
53
59
|
const windowWidth = Dimensions.get('window').width;
|
|
54
60
|
|
|
55
61
|
export const ProductOptionsUI = (props: any) => {
|
|
@@ -69,11 +75,16 @@ export const ProductOptionsUI = (props: any) => {
|
|
|
69
75
|
handleChangeSuboptionState,
|
|
70
76
|
handleChangeCommentState,
|
|
71
77
|
productObject,
|
|
72
|
-
productAddedToCartLength
|
|
78
|
+
productAddedToCartLength,
|
|
79
|
+
actionStatus,
|
|
80
|
+
handleCreateGuestUser
|
|
73
81
|
} = props;
|
|
74
82
|
|
|
75
83
|
const theme = useTheme();
|
|
76
84
|
const [, { showToast }] = useToast()
|
|
85
|
+
const [events] = useEvent()
|
|
86
|
+
|
|
87
|
+
const isChewLayout = theme?.header?.components?.layout?.type?.toLowerCase() === 'chew'
|
|
77
88
|
|
|
78
89
|
const styles = StyleSheet.create({
|
|
79
90
|
mainContainer: {
|
|
@@ -163,6 +174,10 @@ export const ProductOptionsUI = (props: any) => {
|
|
|
163
174
|
justifyContent: 'space-between',
|
|
164
175
|
width: '100%',
|
|
165
176
|
marginTop: 10
|
|
177
|
+
},
|
|
178
|
+
wrapperNavbar: {
|
|
179
|
+
paddingHorizontal: 30,
|
|
180
|
+
paddingTop: 0,
|
|
166
181
|
}
|
|
167
182
|
});
|
|
168
183
|
|
|
@@ -170,6 +185,7 @@ export const ProductOptionsUI = (props: any) => {
|
|
|
170
185
|
const [, t] = useLanguage();
|
|
171
186
|
const [orderState] = useOrder();
|
|
172
187
|
const [{ auth }] = useSession();
|
|
188
|
+
const [{ configs }] = useConfig()
|
|
173
189
|
const { product, loading, error } = productObject;
|
|
174
190
|
const [gallery, setGallery] = useState([])
|
|
175
191
|
const [thumbsSwiper, setThumbsSwiper] = useState(0)
|
|
@@ -189,6 +205,19 @@ export const ProductOptionsUI = (props: any) => {
|
|
|
189
205
|
const [summaryRefHeight, setSummaryRefHeight] = useState(0)
|
|
190
206
|
const [isScrollAvailable, setIsScrollAvailable] = useState(null)
|
|
191
207
|
const [editionsLayoutY, setEditionsLayoutY] = useState(null)
|
|
208
|
+
const [viewedProduct, setViewedProduct] = useState<any>(null)
|
|
209
|
+
const [showTitle, setShowTitle] = useState(false)
|
|
210
|
+
|
|
211
|
+
const guestCheckoutEnabled = configs?.guest_checkout_enabled?.value === '1'
|
|
212
|
+
const orderTypeEnabled = !orderTypeList[orderState?.options?.type - 1] || configs?.allowed_order_types_guest_checkout?.value?.includes(orderTypeList[orderState?.options?.type - 1])
|
|
213
|
+
|
|
214
|
+
const vibrateApp = (impact?: string) => {
|
|
215
|
+
const options = {
|
|
216
|
+
enableVibrateFallback: true,
|
|
217
|
+
ignoreAndroidSystemSettings: false
|
|
218
|
+
};
|
|
219
|
+
ReactNativeHapticFeedback.trigger(impact || "impactLight", options);
|
|
220
|
+
}
|
|
192
221
|
|
|
193
222
|
const isError = (id: number) => {
|
|
194
223
|
let bgColor = theme.colors.white;
|
|
@@ -205,11 +234,12 @@ export const ProductOptionsUI = (props: any) => {
|
|
|
205
234
|
};
|
|
206
235
|
|
|
207
236
|
const handleSaveProduct = () => {
|
|
237
|
+
vibrateApp()
|
|
208
238
|
if (!productCart.quantity) {
|
|
209
239
|
showToast(ToastType.Error, t('VALIDATION_ERROR_REQUIRED', 'The quantity field is required').replace('_attribute_', t('PRODUCT_POTIONS_QUANTITY', 'Quantity')))
|
|
210
240
|
return
|
|
211
241
|
}
|
|
212
|
-
const isErrors = Object.values(errors)
|
|
242
|
+
const isErrors = Object.values(errors)?.length > 0;
|
|
213
243
|
if (!isErrors) {
|
|
214
244
|
handleSave && handleSave();
|
|
215
245
|
return;
|
|
@@ -228,7 +258,7 @@ export const ProductOptionsUI = (props: any) => {
|
|
|
228
258
|
};
|
|
229
259
|
|
|
230
260
|
const handleChangeMainIndex = (index: number) => {
|
|
231
|
-
if (index < 0 || index > gallery
|
|
261
|
+
if (index < 0 || index > gallery?.length - 1) {
|
|
232
262
|
setThumbsSwiper(0)
|
|
233
263
|
return
|
|
234
264
|
}
|
|
@@ -271,7 +301,7 @@ export const ProductOptionsUI = (props: any) => {
|
|
|
271
301
|
}
|
|
272
302
|
|
|
273
303
|
const scrollDown = (id: any) => {
|
|
274
|
-
const isErrors = Object.values(errors)
|
|
304
|
+
const isErrors = Object.values(errors)?.length > 0
|
|
275
305
|
if (!isErrors) {
|
|
276
306
|
return
|
|
277
307
|
}
|
|
@@ -285,6 +315,11 @@ export const ProductOptionsUI = (props: any) => {
|
|
|
285
315
|
}
|
|
286
316
|
}
|
|
287
317
|
|
|
318
|
+
const handleUpdateGuest = () => {
|
|
319
|
+
const guestToken = uuid.v4()
|
|
320
|
+
if (guestToken) handleCreateGuestUser({ guest_token: guestToken })
|
|
321
|
+
}
|
|
322
|
+
|
|
288
323
|
const handleOnLayout = (event: any, optionId: any) => {
|
|
289
324
|
const _optionLayout = { ...optionLayout }
|
|
290
325
|
const optionKey = 'id:' + optionId
|
|
@@ -295,7 +330,7 @@ export const ProductOptionsUI = (props: any) => {
|
|
|
295
330
|
const saveErrors =
|
|
296
331
|
orderState.loading ||
|
|
297
332
|
maxProductQuantity === 0 ||
|
|
298
|
-
Object.keys(errors)
|
|
333
|
+
Object.keys(errors)?.length > 0;
|
|
299
334
|
|
|
300
335
|
|
|
301
336
|
const ExtraOptions = ({ eID, options }: any) => (
|
|
@@ -337,7 +372,7 @@ export const ProductOptionsUI = (props: any) => {
|
|
|
337
372
|
);
|
|
338
373
|
|
|
339
374
|
const handleScroll = ({ nativeEvent: { contentOffset, layoutMeasurement } }: any) => {
|
|
340
|
-
|
|
375
|
+
setShowTitle(contentOffset.y > 30)
|
|
341
376
|
const _topOption = Object.keys(optionLayout).find(((option: any) => Math.abs(contentOffset?.y - layoutMeasurement?.height - optionLayout[option]?.y) < 20))
|
|
342
377
|
if (_topOption) {
|
|
343
378
|
const _topOptionId = Number(_topOption.replace('id:', ''))
|
|
@@ -362,14 +397,14 @@ export const ProductOptionsUI = (props: any) => {
|
|
|
362
397
|
? product.images
|
|
363
398
|
: theme?.images?.dummies?.product)
|
|
364
399
|
|
|
365
|
-
if (product?.gallery && product?.gallery
|
|
400
|
+
if (product?.gallery && product?.gallery?.length > 0) {
|
|
366
401
|
for (const img of product?.gallery) {
|
|
367
402
|
if (img?.file) {
|
|
368
403
|
imageList.push(img?.file)
|
|
369
404
|
}
|
|
370
405
|
if (img?.video) {
|
|
371
406
|
const keys = img?.video.split('/')
|
|
372
|
-
let _videoId = keys[keys
|
|
407
|
+
let _videoId = keys[keys?.length - 1]
|
|
373
408
|
|
|
374
409
|
if (_videoId.includes('watch')) {
|
|
375
410
|
const __url = _videoId.split('=')[1]
|
|
@@ -384,7 +419,7 @@ export const ProductOptionsUI = (props: any) => {
|
|
|
384
419
|
} else if (_videoId.search(/\?/i) >= 0) {
|
|
385
420
|
_videoId = _videoId.split('?')[0]
|
|
386
421
|
}
|
|
387
|
-
if ((_videoId
|
|
422
|
+
if ((_videoId?.length === 11)) {
|
|
388
423
|
videoList.push(_videoId)
|
|
389
424
|
}
|
|
390
425
|
}
|
|
@@ -458,14 +493,27 @@ export const ProductOptionsUI = (props: any) => {
|
|
|
458
493
|
: t('LOGIN_SIGNUP', 'Login / Sign Up')
|
|
459
494
|
}
|
|
460
495
|
imgRightSrc=""
|
|
461
|
-
textStyle={{ color: theme.colors.primary, fontSize:
|
|
496
|
+
textStyle={{ color: theme.colors.primary, fontSize: 13, textAlign: 'center' }}
|
|
462
497
|
style={{
|
|
463
|
-
height:
|
|
498
|
+
height: 42,
|
|
464
499
|
borderColor: theme.colors.primary,
|
|
465
500
|
backgroundColor: theme.colors.white,
|
|
501
|
+
paddingLeft: 0,
|
|
502
|
+
paddingRight: 0
|
|
466
503
|
}}
|
|
467
504
|
/>
|
|
468
505
|
)}
|
|
506
|
+
{!auth && guestCheckoutEnabled && orderTypeEnabled && (
|
|
507
|
+
<TouchableOpacity style={{ marginTop: 10 }} onPress={handleUpdateGuest}>
|
|
508
|
+
{actionStatus?.loading ? (
|
|
509
|
+
<Placeholder Animation={Fade}>
|
|
510
|
+
<PlaceholderLine width={60} height={20} />
|
|
511
|
+
</Placeholder>
|
|
512
|
+
) : (
|
|
513
|
+
<OText color={theme.colors.primary} size={13} style={{ textAlign: 'center' }}>{t('WITH_GUEST_USER', 'With Guest user')}</OText>
|
|
514
|
+
)}
|
|
515
|
+
</TouchableOpacity>
|
|
516
|
+
)}
|
|
469
517
|
</View>
|
|
470
518
|
)
|
|
471
519
|
}
|
|
@@ -479,14 +527,37 @@ export const ProductOptionsUI = (props: any) => {
|
|
|
479
527
|
}
|
|
480
528
|
}, [])
|
|
481
529
|
|
|
530
|
+
useEffect(() => {
|
|
531
|
+
if (!product?.id || product?.id === viewedProduct?.id) return
|
|
532
|
+
setViewedProduct(product)
|
|
533
|
+
events.emit('product_viewed', product)
|
|
534
|
+
}, [product?.id, viewedProduct])
|
|
482
535
|
|
|
483
536
|
return (
|
|
484
537
|
<SafeAreaView style={{ flex: 1 }}>
|
|
485
|
-
<
|
|
486
|
-
<
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
538
|
+
<View style={styles.wrapperNavbar}>
|
|
539
|
+
<TopHeader>
|
|
540
|
+
<>
|
|
541
|
+
<TopActions onPress={() => handleGoBack()}>
|
|
542
|
+
<IconAntDesign
|
|
543
|
+
name='arrowleft'
|
|
544
|
+
size={26}
|
|
545
|
+
/>
|
|
546
|
+
</TopActions>
|
|
547
|
+
{showTitle && (
|
|
548
|
+
<OText
|
|
549
|
+
size={16}
|
|
550
|
+
style={{ flex: 1, textAlign: 'center' }}
|
|
551
|
+
weight={Platform.OS === 'ios' ? '600' : 'bold'}
|
|
552
|
+
numberOfLines={2}
|
|
553
|
+
ellipsizeMode='tail'
|
|
554
|
+
>
|
|
555
|
+
{product?.name}
|
|
556
|
+
</OText>
|
|
557
|
+
)}
|
|
558
|
+
</>
|
|
559
|
+
</TopHeader>
|
|
560
|
+
</View>
|
|
490
561
|
{!error && (
|
|
491
562
|
<ScrollView
|
|
492
563
|
ref={scrollViewRef}
|
|
@@ -535,14 +606,14 @@ export const ProductOptionsUI = (props: any) => {
|
|
|
535
606
|
</View>
|
|
536
607
|
}
|
|
537
608
|
>
|
|
538
|
-
{gallery && gallery
|
|
609
|
+
{gallery && gallery?.length > 0 && gallery.map((img, i) => (
|
|
539
610
|
<View
|
|
540
611
|
style={styles.slide1}
|
|
541
612
|
key={i}
|
|
542
613
|
>
|
|
543
614
|
{(String(img).includes('http') || typeof img === 'number') ? (
|
|
544
615
|
<FastImage
|
|
545
|
-
style={{ height: '100%', opacity: isSoldOut ? 0.5 : 1, aspectRatio:
|
|
616
|
+
style={{ height: '100%', opacity: isSoldOut ? 0.5 : 1, aspectRatio: 16 / 9 }}
|
|
546
617
|
source={typeof img !== 'number' ? {
|
|
547
618
|
uri: optimizeImage(img, 'h_1024,c_limit'),
|
|
548
619
|
priority: FastImage.priority.normal,
|
|
@@ -570,7 +641,7 @@ export const ProductOptionsUI = (props: any) => {
|
|
|
570
641
|
paddingVertical: 15
|
|
571
642
|
}}
|
|
572
643
|
>
|
|
573
|
-
{gallery
|
|
644
|
+
{gallery?.length > 1 && gallery.map((img, index) => (
|
|
574
645
|
<TouchableOpacity
|
|
575
646
|
key={index}
|
|
576
647
|
onPress={() => handleClickThumb(index)}
|
|
@@ -618,7 +689,10 @@ export const ProductOptionsUI = (props: any) => {
|
|
|
618
689
|
</>
|
|
619
690
|
)}
|
|
620
691
|
</WrapHeader>
|
|
621
|
-
<ProductSummary
|
|
692
|
+
<ProductSummary
|
|
693
|
+
ph={isChewLayout ? 20 : 30}
|
|
694
|
+
onLayout={(event: any) => setSummaryRefHeight(event.nativeEvent.layout?.height)}
|
|
695
|
+
>
|
|
622
696
|
<ProductTitle>
|
|
623
697
|
{loading && !product ? (
|
|
624
698
|
<Placeholder Animation={Fade}>
|
|
@@ -718,11 +792,11 @@ export const ProductOptionsUI = (props: any) => {
|
|
|
718
792
|
marginBottom: 20,
|
|
719
793
|
borderBottomWidth: 1,
|
|
720
794
|
borderBottomColor: theme.colors.border,
|
|
721
|
-
marginHorizontal:
|
|
795
|
+
marginHorizontal: 20,
|
|
722
796
|
backgroundColor: theme.colors.backgroundPage,
|
|
723
797
|
}}
|
|
724
798
|
>
|
|
725
|
-
{product?.ingredients
|
|
799
|
+
{product?.ingredients?.length > 0 && (
|
|
726
800
|
<TouchableOpacity
|
|
727
801
|
key={`eopt_key_01`}
|
|
728
802
|
onPress={() => {
|
|
@@ -747,7 +821,7 @@ export const ProductOptionsUI = (props: any) => {
|
|
|
747
821
|
</OText>
|
|
748
822
|
</TouchableOpacity>
|
|
749
823
|
)}
|
|
750
|
-
{product?.extras
|
|
824
|
+
{product?.extras?.map((extra: any) =>
|
|
751
825
|
<ExtraOptions key={extra.id} options={extra.options} />
|
|
752
826
|
)}
|
|
753
827
|
</ExtraOptionWrap>
|
|
@@ -792,12 +866,13 @@ export const ProductOptionsUI = (props: any) => {
|
|
|
792
866
|
</>
|
|
793
867
|
) : (
|
|
794
868
|
<ProductEditions
|
|
869
|
+
style={{ paddingHorizontal: isChewLayout ? 20 : 30 }}
|
|
795
870
|
onLayout={(event: any) => {
|
|
796
871
|
setEditionsLayoutY(event.nativeEvent.layout?.y)
|
|
797
872
|
}}
|
|
798
873
|
>
|
|
799
874
|
<>
|
|
800
|
-
{product?.ingredients
|
|
875
|
+
{product?.ingredients?.length > 0 && (
|
|
801
876
|
<View style={styles.optionContainer} onLayout={(event: any) => handleOnLayout(event, 0)}>
|
|
802
877
|
<SectionTitle>
|
|
803
878
|
<OText size={16}>
|
|
@@ -819,8 +894,8 @@ export const ProductOptionsUI = (props: any) => {
|
|
|
819
894
|
</WrapperIngredients>
|
|
820
895
|
</View>
|
|
821
896
|
)}
|
|
822
|
-
{product?.extras
|
|
823
|
-
extra.options
|
|
897
|
+
{product?.extras?.sort((a: any, b: any) => a.rank - b.rank).map((extra: any) =>
|
|
898
|
+
extra.options?.sort((a: any, b: any) => a.rank - b.rank).map((option: any) => {
|
|
824
899
|
const currentState =
|
|
825
900
|
productCart.options[`id:${option.id}`] || {};
|
|
826
901
|
return (
|
|
@@ -836,7 +911,7 @@ export const ProductOptionsUI = (props: any) => {
|
|
|
836
911
|
backgroundColor: isError(option.id),
|
|
837
912
|
borderRadius: 7.6
|
|
838
913
|
}}>
|
|
839
|
-
{option
|
|
914
|
+
{option?.suboptions?.sort((a: any, b: any) => a.rank - b.rank).map(
|
|
840
915
|
(suboption: any) => {
|
|
841
916
|
const currentState =
|
|
842
917
|
productCart.options[
|
|
@@ -901,7 +976,7 @@ export const ProductOptionsUI = (props: any) => {
|
|
|
901
976
|
)}
|
|
902
977
|
</ProductEditions>
|
|
903
978
|
)}
|
|
904
|
-
{!!error && error
|
|
979
|
+
{!!error && error?.length > 0 && (
|
|
905
980
|
<NotFoundSource content={error[0]?.message || error[0]} />
|
|
906
981
|
)}
|
|
907
982
|
</ScrollView>
|
|
@@ -8,8 +8,8 @@ export const WrapHeader = styled.View`
|
|
|
8
8
|
export const TopActions = styled.TouchableOpacity`
|
|
9
9
|
height: 60px;
|
|
10
10
|
justify-content: center;
|
|
11
|
-
|
|
12
|
-
|
|
11
|
+
min-width: 30px;
|
|
12
|
+
padding-right: 15px;
|
|
13
13
|
`;
|
|
14
14
|
|
|
15
15
|
export const TopHeader = styled.View`
|
|
@@ -47,7 +47,7 @@ export const ProductTitle = styled.View`
|
|
|
47
47
|
export const ProductDescription = styled.View``
|
|
48
48
|
|
|
49
49
|
export const ProductEditions = styled.View`
|
|
50
|
-
padding: 0
|
|
50
|
+
padding-vertical: 0;
|
|
51
51
|
`
|
|
52
52
|
|
|
53
53
|
export const SectionTitle = styled.View`
|
|
@@ -70,7 +70,7 @@ export const ProductActions = styled.View`
|
|
|
70
70
|
position: absolute;
|
|
71
71
|
bottom: 0px;
|
|
72
72
|
padding-top: ${(props: any) => props.ios ? '20px' : '0'};
|
|
73
|
-
padding-horizontal:
|
|
73
|
+
padding-horizontal: 30px;
|
|
74
74
|
padding-vertical: 20px;
|
|
75
75
|
width: 100%;
|
|
76
76
|
flex-direction: ${(props: any) => props.isColumn ? 'column' : 'row'};
|
|
@@ -94,7 +94,7 @@ export const WeightUnitItem = styled.View`
|
|
|
94
94
|
`}
|
|
95
95
|
`
|
|
96
96
|
export const ProductSummary = styled.View`
|
|
97
|
-
padding: 26px
|
|
97
|
+
padding: 26px ${(props: any) => props.ph}px 0;
|
|
98
98
|
position: relative;
|
|
99
99
|
background-color: white;
|
|
100
100
|
z-index: 100;
|
|
@@ -77,6 +77,7 @@ export const ProductItemAccordion = (props: ProductItemAccordionParams) => {
|
|
|
77
77
|
const [isServiceOpen, setIsServiceOpen] = useState(false)
|
|
78
78
|
// const [setHeight, setHeightState] = useState({ height: new Animated.Value(0) })
|
|
79
79
|
// const [setRotate, setRotateState] = useState({ angle: new Animated.Value(0) })
|
|
80
|
+
const [productQuantity, setProductQuantity] = useState(product.quantity.toString())
|
|
80
81
|
|
|
81
82
|
const productInfo = () => {
|
|
82
83
|
if (isCartProduct) {
|
|
@@ -107,19 +108,20 @@ export const ProductItemAccordion = (props: ProductItemAccordionParams) => {
|
|
|
107
108
|
/* const toggleAccordion = () => {
|
|
108
109
|
if ((!product?.valid_menu && isCartProduct)) return
|
|
109
110
|
if (isActive) {
|
|
110
|
-
|
|
111
|
+
Animated.timing(setHeight.height, {
|
|
111
112
|
toValue: 100,
|
|
112
113
|
duration: 500,
|
|
113
114
|
easing: Easing.linear,
|
|
114
115
|
useNativeDriver: false,
|
|
115
|
-
|
|
116
|
+
}).start()
|
|
116
117
|
} else {
|
|
117
|
-
|
|
118
|
+
setHeightState({height: new Animated.Value(0)})
|
|
118
119
|
}
|
|
119
120
|
}*/
|
|
120
121
|
|
|
121
122
|
const handleChangeQuantity = (value: string) => {
|
|
122
123
|
if (!orderState.loading) {
|
|
124
|
+
setProductQuantity(value)
|
|
123
125
|
if (parseInt(value) === 0) {
|
|
124
126
|
onDeleteProduct && onDeleteProduct(product)
|
|
125
127
|
} else {
|
|
@@ -134,7 +136,7 @@ export const ProductItemAccordion = (props: ProductItemAccordionParams) => {
|
|
|
134
136
|
}
|
|
135
137
|
|
|
136
138
|
/*useEffect(() => {
|
|
137
|
-
|
|
139
|
+
toggleAccordion()
|
|
138
140
|
}, [isActive])*/
|
|
139
141
|
|
|
140
142
|
const productOptions = getProductMax && [...Array(getProductMax(product) + 1),].map((_: any, opt: number) => {
|
|
@@ -209,7 +211,7 @@ export const ProductItemAccordion = (props: ProductItemAccordionParams) => {
|
|
|
209
211
|
<RNPickerSelect
|
|
210
212
|
items={productOptions}
|
|
211
213
|
onValueChange={handleChangeQuantity}
|
|
212
|
-
value={
|
|
214
|
+
value={productQuantity}
|
|
213
215
|
style={pickerStyle}
|
|
214
216
|
useNativeAndroidPickerStyle={false}
|
|
215
217
|
placeholder={{}}
|
|
@@ -287,7 +289,7 @@ export const ProductItemAccordion = (props: ProductItemAccordionParams) => {
|
|
|
287
289
|
)}
|
|
288
290
|
{productInfo().options.length > 0 && (
|
|
289
291
|
<ProductOptionsList>
|
|
290
|
-
{productInfo().options.map((option: any, i: number) => (
|
|
292
|
+
{productInfo().options.sort((a: any, b: any) => a.rank - b.rank).map((option: any, i: number) => (
|
|
291
293
|
<ProductOption key={option.id + i}>
|
|
292
294
|
<OText size={10} color={theme.colors.textSecondary}>{option.name}</OText>
|
|
293
295
|
{option.suboptions.map((suboption: any) => (
|
|
@@ -32,7 +32,7 @@ export const ProductOptionSubOptionUI = (props: any) => {
|
|
|
32
32
|
setIsScrollAvailable
|
|
33
33
|
} = props
|
|
34
34
|
|
|
35
|
-
const disableIncrement = option?.limit_suboptions_by_max ? balance === option?.max : state.quantity === suboption?.max || (!state.selected && balance === option?.max)
|
|
35
|
+
const disableIncrement = option?.limit_suboptions_by_max ? balance === option?.max || state.quantity === suboption?.max : state.quantity === suboption?.max || (!state.selected && balance === option?.max)
|
|
36
36
|
const price = option?.with_half_option && suboption?.half_price && state.position !== 'whole' ? suboption?.half_price : suboption?.price
|
|
37
37
|
|
|
38
38
|
const theme = useTheme();
|
|
@@ -41,8 +41,7 @@ export const ProductOptionSubOptionUI = (props: any) => {
|
|
|
41
41
|
const [showMessage, setShowMessage] = useState(false)
|
|
42
42
|
const [isDirty, setIsDirty] = useState(false)
|
|
43
43
|
|
|
44
|
-
const
|
|
45
|
-
const iconsSize = isChewLayout ? 20 : 16
|
|
44
|
+
const iconsSize = 20
|
|
46
45
|
|
|
47
46
|
const handleSuboptionClick = () => {
|
|
48
47
|
toggleSelect()
|
|
@@ -68,7 +67,7 @@ export const ProductOptionSubOptionUI = (props: any) => {
|
|
|
68
67
|
|
|
69
68
|
return (
|
|
70
69
|
<View>
|
|
71
|
-
<Container>
|
|
70
|
+
<Container onPress={!(option?.with_half_option || option?.allow_suboption_quantity) ? () => handleSuboptionClick() : null}>
|
|
72
71
|
<IconControl disabled={disabled} onPress={() => handleSuboptionClick()}>
|
|
73
72
|
{((option?.min === 0 && option?.max === 1) || option?.max > 1) ? (
|
|
74
73
|
state?.selected ? (
|
|
@@ -83,12 +82,12 @@ export const ProductOptionSubOptionUI = (props: any) => {
|
|
|
83
82
|
<OIcon src={theme.images.general.radio_nor} color={theme.colors.disabled} width={16} />
|
|
84
83
|
)
|
|
85
84
|
)}
|
|
86
|
-
<OText size={12} lineHeight={18} color={theme.colors.textSecondary} mLeft={
|
|
85
|
+
<OText size={12} lineHeight={18} color={theme.colors.textSecondary} mLeft={5} style={{ flex: 1 }}>
|
|
87
86
|
{suboption?.name}
|
|
88
87
|
</OText>
|
|
89
88
|
</IconControl>
|
|
90
|
-
|
|
91
|
-
|
|
89
|
+
{option?.allow_suboption_quantity && state?.selected && (
|
|
90
|
+
<QuantityControl>
|
|
92
91
|
<>
|
|
93
92
|
<Checkbox disabled={disabled || state.quantity === 0} onPress={decrement}>
|
|
94
93
|
<IconAntDesign
|
|
@@ -97,7 +96,7 @@ export const ProductOptionSubOptionUI = (props: any) => {
|
|
|
97
96
|
color={state.quantity === 0 || disabled ? theme.colors.disabled : theme.colors.primary}
|
|
98
97
|
/>
|
|
99
98
|
</Checkbox>
|
|
100
|
-
<OText size={12}
|
|
99
|
+
<OText size={12}>
|
|
101
100
|
{state.quantity}
|
|
102
101
|
</OText>
|
|
103
102
|
<Checkbox disabled={disabled || disableIncrement} onPress={increment}>
|
|
@@ -108,16 +107,17 @@ export const ProductOptionSubOptionUI = (props: any) => {
|
|
|
108
107
|
/>
|
|
109
108
|
</Checkbox>
|
|
110
109
|
</>
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
110
|
+
</QuantityControl>
|
|
111
|
+
)}
|
|
112
|
+
{option?.with_half_option && state?.selected && (
|
|
113
|
+
<PositionControl>
|
|
115
114
|
<>
|
|
116
115
|
<Circle disabled={disabled} onPress={() => changePosition('left')}>
|
|
117
116
|
<OIcon
|
|
118
117
|
src={theme.images.general.half_l}
|
|
119
118
|
color={state.selected && state.position === 'left' ? theme.colors.primary : '#cbcbcb'}
|
|
120
|
-
width={
|
|
119
|
+
width={20}
|
|
120
|
+
height={20}
|
|
121
121
|
style={styles.inverse}
|
|
122
122
|
/>
|
|
123
123
|
</Circle>
|
|
@@ -125,21 +125,23 @@ export const ProductOptionSubOptionUI = (props: any) => {
|
|
|
125
125
|
<OIcon
|
|
126
126
|
src={theme.images.general.half_f}
|
|
127
127
|
color={state.selected && state.position === 'whole' ? theme.colors.primary : '#cbcbcb'}
|
|
128
|
-
width={
|
|
128
|
+
width={20}
|
|
129
|
+
height={20}
|
|
129
130
|
/>
|
|
130
131
|
</Circle>
|
|
131
132
|
<Circle disabled={disabled} onPress={() => changePosition('right')}>
|
|
132
133
|
<OIcon
|
|
133
134
|
src={theme.images.general.half_r}
|
|
134
135
|
color={state.selected && state.position === 'right' ? theme.colors.primary : '#cbcbcb'}
|
|
135
|
-
width={
|
|
136
|
+
width={20}
|
|
137
|
+
height={20}
|
|
136
138
|
/>
|
|
137
139
|
</Circle>
|
|
138
140
|
</>
|
|
139
|
-
|
|
140
|
-
|
|
141
|
+
</PositionControl>
|
|
142
|
+
)}
|
|
141
143
|
{price > 0 && (
|
|
142
|
-
<OText size={12} lineHeight={18} color={theme.colors.textSecondary}>
|
|
144
|
+
<OText size={12} lineHeight={18} color={theme.colors.textSecondary} style={{width: 70, maxWidth: 70}}>
|
|
143
145
|
+ {parsePrice(price)}
|
|
144
146
|
</OText>
|
|
145
147
|
)}
|
|
@@ -4,35 +4,31 @@ export const Container = styled.TouchableOpacity`
|
|
|
4
4
|
flex-direction: row;
|
|
5
5
|
align-items: center;
|
|
6
6
|
justify-content: space-between;
|
|
7
|
-
padding: 10px;
|
|
8
7
|
width: 100%;
|
|
9
8
|
`
|
|
10
9
|
|
|
11
10
|
export const IconControl = styled.TouchableOpacity`
|
|
12
11
|
flex-direction: row;
|
|
13
|
-
|
|
12
|
+
padding: 10px 0 10px 10px;
|
|
13
|
+
width: 35%;
|
|
14
14
|
align-items: center;
|
|
15
15
|
`
|
|
16
16
|
|
|
17
17
|
export const QuantityControl = styled.View`
|
|
18
18
|
flex-direction: row;
|
|
19
19
|
align-items: center;
|
|
20
|
-
justify-content:
|
|
21
|
-
|
|
22
|
-
flex: 1;
|
|
23
|
-
width: 60px;
|
|
20
|
+
justify-content: space-between;
|
|
21
|
+
width: 62px;
|
|
24
22
|
`
|
|
25
23
|
|
|
26
24
|
export const PositionControl = styled.View`
|
|
27
25
|
flex-direction: row;
|
|
28
26
|
align-items: center;
|
|
29
|
-
margin-right: 5px;
|
|
30
|
-
flex: 1;
|
|
31
27
|
`
|
|
32
28
|
|
|
33
29
|
export const Checkbox = styled.TouchableOpacity`
|
|
34
30
|
`
|
|
35
31
|
|
|
36
32
|
export const Circle = styled.TouchableOpacity`
|
|
37
|
-
margin: 0
|
|
33
|
+
margin: 0 1.5px;
|
|
38
34
|
`
|