@lookiero/checkout 12.25.0 → 12.27.0-beta.0
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/dist/public/public/assets/adaptive-icon.png +0 -0
- package/dist/public/public/assets/favicon.png +0 -0
- package/dist/public/public/assets/icon.png +0 -0
- package/dist/public/public/assets/splash.png +0 -0
- package/dist/public/public/images/not-found.png +0 -0
- package/dist/src/ExpoRoot.js +1 -0
- package/dist/src/infrastructure/ui/views/checkout/Checkout.js +2 -2
- package/dist/src/infrastructure/ui/views/summary/Summary.js +3 -3
- package/dist/src/infrastructure/ui/views/summary/components/collapsiblePricing/CollapsiblePricing.d.ts +3 -0
- package/dist/src/infrastructure/ui/views/summary/components/collapsiblePricing/CollapsiblePricing.js +2 -2
- package/dist/src/infrastructure/ui/views/summary/components/pricing/Pricing.d.ts +3 -0
- package/dist/src/infrastructure/ui/views/summary/components/pricing/Pricing.js +3 -2
- package/dist/src/projection/customer/customer.d.ts +1 -0
- package/dist/src/version.d.ts +2 -2
- package/dist/src/version.js +2 -2
- package/package.json +5 -5
- package/src/ExpoRoot.tsx +1 -0
- package/src/infrastructure/ui/views/checkout/Checkout.tsx +7 -2
- package/src/infrastructure/ui/views/summary/Summary.tsx +5 -1
- package/src/infrastructure/ui/views/summary/components/collapsiblePricing/CollapsiblePricing.tsx +11 -1
- package/src/infrastructure/ui/views/summary/components/pricing/Pricing.tsx +13 -8
- package/src/projection/customer/customer.ts +1 -0
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/dist/src/ExpoRoot.js
CHANGED
|
@@ -26,7 +26,7 @@ import { style as checkoutStyle } from "./Checkout.style";
|
|
|
26
26
|
import { DeliveryBanner } from "./components/deliveryBanner/DeliveryBanner";
|
|
27
27
|
import { PaymentInstrument } from "./components/paymentInstrument/PaymentInstrument";
|
|
28
28
|
const Checkout = ({ layout: Layout, order, subscription, getAuthToken, useRedirect, onCheckoutFlowSuccess, }) => {
|
|
29
|
-
const { customer: { customerId, country, segment }, basePath, tradename, } = useStaticInfo();
|
|
29
|
+
const { customer: { customerId, country, segment, migrated }, basePath, tradename, } = useStaticInfo();
|
|
30
30
|
const screenSize = useScreenSize();
|
|
31
31
|
const isDektopScreen = screenSize === "L";
|
|
32
32
|
const style = useMemo(() => checkoutStyle(), []);
|
|
@@ -100,7 +100,7 @@ const Checkout = ({ layout: Layout, order, subscription, getAuthToken, useRedire
|
|
|
100
100
|
country !== Country.NL && (React.createElement(View, { style: style.paymentSelector },
|
|
101
101
|
React.createElement(PaymentInstrument, { useRedirect: useRedirect }))))),
|
|
102
102
|
React.createElement(Box, { size: { L: "1/3" }, style: [style.resume, isDektopScreen && style.desktopResume] }, pricing ? (React.createElement(View, { style: [style.princingWrapper, !isDektopScreen && style.princingWrapperSmall] },
|
|
103
|
-
React.createElement(Pricing, { pricing: pricing, totalCheckoutItemsKept: checkoutItemsKept?.length || 0 }),
|
|
103
|
+
React.createElement(Pricing, { migrated: migrated, pricing: pricing, totalCheckoutItemsKept: checkoutItemsKept?.length || 0, tradename: tradename }),
|
|
104
104
|
isDektopScreen && React.createElement(PaymentButton, null))) : null))),
|
|
105
105
|
pricing && !isDektopScreen ? (React.createElement(Sticky, { style: style.sticky, onLayout: Platform.OS !== "web" ? handleOnPricingLayout : undefined },
|
|
106
106
|
React.createElement(Body, null,
|
|
@@ -21,7 +21,7 @@ import { Routes } from "../../routing/routes";
|
|
|
21
21
|
import { style as summaryStyle } from "./Summary.style";
|
|
22
22
|
import { CollapsiblePricing } from "./components/collapsiblePricing/CollapsiblePricing";
|
|
23
23
|
const Summary = ({ layout: Layout, children }) => {
|
|
24
|
-
const { customer: { customerId, country, segment }, basePath, tradename, } = useStaticInfo();
|
|
24
|
+
const { customer: { customerId, country, segment, migrated }, basePath, tradename, } = useStaticInfo();
|
|
25
25
|
const screenSize = useScreenSize();
|
|
26
26
|
const isDesktopScreen = screenSize === "L";
|
|
27
27
|
const style = useMemo(() => summaryStyle(), []);
|
|
@@ -97,9 +97,9 @@ const Summary = ({ layout: Layout, children }) => {
|
|
|
97
97
|
children)),
|
|
98
98
|
pricing && isDesktopScreen ? (React.createElement(Box, { size: { L: "1/3" }, style: [style.resume, isDesktopScreen ? style.desktopResume : style.mobileResume] },
|
|
99
99
|
React.createElement(View, { style: style.princingWrapper },
|
|
100
|
-
React.createElement(CollapsiblePricing, { collapsed: false, collapsible: false, pricing: pricing, submitButtonText: submitButtonText, totalCheckoutItemsKept: totalCheckoutItemsKept, onSubmit: handleOnSubmit })))) : null)),
|
|
100
|
+
React.createElement(CollapsiblePricing, { collapsed: false, collapsible: false, migrated: migrated, pricing: pricing, submitButtonText: submitButtonText, totalCheckoutItemsKept: totalCheckoutItemsKept, tradename: tradename, onSubmit: handleOnSubmit })))) : null)),
|
|
101
101
|
pricing && !isDesktopScreen ? (React.createElement(Sticky, { style: style.sticky, onLayout: Platform.OS !== "web" ? handleOnPricingLayout : undefined },
|
|
102
102
|
React.createElement(Body, null,
|
|
103
|
-
React.createElement(CollapsiblePricing, { collapsed: pricingCollapsed, pricing: pricing, submitButtonText: submitButtonText, totalCheckoutItemsKept: totalCheckoutItemsKept, onPress: handleOnPressPricing, onSubmit: handleOnSubmit })))) : null));
|
|
103
|
+
React.createElement(CollapsiblePricing, { collapsed: pricingCollapsed, migrated: migrated, pricing: pricing, submitButtonText: submitButtonText, totalCheckoutItemsKept: totalCheckoutItemsKept, tradename: tradename, onPress: handleOnPressPricing, onSubmit: handleOnSubmit })))) : null));
|
|
104
104
|
};
|
|
105
105
|
export { Summary };
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import { FC } from "react";
|
|
2
|
+
import { Tradename } from "@lookiero/sty-sp-tradename";
|
|
2
3
|
import { PricingProjection } from "../../../../../../projection/pricing/pricing";
|
|
3
4
|
interface CollapsiblePricingProps {
|
|
5
|
+
readonly tradename: Tradename;
|
|
6
|
+
readonly migrated: boolean;
|
|
4
7
|
readonly pricing: PricingProjection;
|
|
5
8
|
readonly totalCheckoutItemsKept: number;
|
|
6
9
|
readonly collapsible?: boolean;
|
package/dist/src/infrastructure/ui/views/summary/components/collapsiblePricing/CollapsiblePricing.js
CHANGED
|
@@ -8,7 +8,7 @@ import { Price } from "../../../../components/atoms/price/Price";
|
|
|
8
8
|
import { DOMAIN, I18nMessages } from "../../../../i18n/i18n";
|
|
9
9
|
import { Pricing } from "../pricing/Pricing";
|
|
10
10
|
import { style as collapsiblePricingStyle } from "./CollapsiblePricing.style";
|
|
11
|
-
const CollapsiblePricing = ({ pricing, totalCheckoutItemsKept, collapsible = true, collapsed = false, submitButtonText, onPress = () => void 0, onSubmit, }) => {
|
|
11
|
+
const CollapsiblePricing = ({ migrated, tradename, pricing, totalCheckoutItemsKept, collapsible = true, collapsed = false, submitButtonText, onPress = () => void 0, onSubmit, }) => {
|
|
12
12
|
const { pendingToPay } = pricing;
|
|
13
13
|
const totalText = useI18nMessage({ domain: DOMAIN, id: I18nMessages.SUMMARY_TOTAL });
|
|
14
14
|
const totalCheckoutItemsKeptText = useI18nMessage({
|
|
@@ -34,7 +34,7 @@ const CollapsiblePricing = ({ pricing, totalCheckoutItemsKept, collapsible = tru
|
|
|
34
34
|
React.createElement(Price, { price: pendingToPay, variant: "detail" })),
|
|
35
35
|
React.createElement(View, { style: style.collapsedContent },
|
|
36
36
|
React.createElement(Button, { testID: "submit-checkout-collpased-button", small: true, onPress: onSubmit }, submitButtonText)))) : (React.createElement(Animated.View, { key: "not-collapsed", style: notCollapsedAnimatedStyle },
|
|
37
|
-
React.createElement(Pricing, { pricing: pricing, totalCheckoutItemsKept: totalCheckoutItemsKept }),
|
|
37
|
+
React.createElement(Pricing, { migrated: migrated, pricing: pricing, totalCheckoutItemsKept: totalCheckoutItemsKept, tradename: tradename }),
|
|
38
38
|
React.createElement(Button, { testID: "submit-checkout-button", onPress: onSubmit }, submitButtonText)))));
|
|
39
39
|
};
|
|
40
40
|
export { CollapsiblePricing };
|
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
import { FC } from "react";
|
|
2
|
+
import { Tradename } from "@lookiero/sty-sp-tradename";
|
|
2
3
|
import { PricingProjection } from "../../../../../../projection/pricing/pricing";
|
|
3
4
|
interface PricingProps {
|
|
4
5
|
readonly pricing: PricingProjection;
|
|
5
6
|
readonly totalCheckoutItemsKept: number;
|
|
7
|
+
readonly tradename: Tradename;
|
|
8
|
+
readonly migrated: boolean;
|
|
6
9
|
}
|
|
7
10
|
declare const Pricing: FC<PricingProps>;
|
|
8
11
|
export { Pricing };
|
|
@@ -2,6 +2,7 @@ import React, { useMemo } from "react";
|
|
|
2
2
|
import { View } from "react-native";
|
|
3
3
|
import { Text } from "@lookiero/aurora";
|
|
4
4
|
import { useI18nMessage } from "@lookiero/i18n-react";
|
|
5
|
+
import { Tradename } from "@lookiero/sty-sp-tradename";
|
|
5
6
|
import { Price } from "../../../../components/atoms/price/Price";
|
|
6
7
|
import { DOMAIN, I18nMessages } from "../../../../i18n/i18n";
|
|
7
8
|
import { style as pricingStyle } from "./Pricing.style";
|
|
@@ -11,7 +12,7 @@ const Row = ({ action = false, text, level = 3, children }) => {
|
|
|
11
12
|
React.createElement(Text, { action: action, level: level }, text),
|
|
12
13
|
children));
|
|
13
14
|
};
|
|
14
|
-
const Pricing = ({ pricing, totalCheckoutItemsKept }) => {
|
|
15
|
+
const Pricing = ({ pricing, totalCheckoutItemsKept, tradename, migrated }) => {
|
|
15
16
|
const { pendingToPay, subtotal, balanceDiscount, discount, discountPercentage = 0, service } = pricing;
|
|
16
17
|
const style = useMemo(() => pricingStyle(), []);
|
|
17
18
|
const totalText = useI18nMessage({ domain: DOMAIN, id: I18nMessages.SUMMARY_TOTAL });
|
|
@@ -36,7 +37,7 @@ const Pricing = ({ pricing, totalCheckoutItemsKept }) => {
|
|
|
36
37
|
React.createElement(Price, { price: discount, variant: "subtotal" }))),
|
|
37
38
|
balanceDiscount && balanceDiscount.amount !== 0 && (React.createElement(Row, { text: creditText },
|
|
38
39
|
React.createElement(Price, { price: balanceDiscount, variant: "subtotal" }))),
|
|
39
|
-
React.createElement(Row, { text: feeText }, service.paidWithPromocode ? (React.createElement(Text, { level: 3 }, freeText)) : (React.createElement(Price, { price: service.finalPrice, variant: "subtotal" }))),
|
|
40
|
+
(tradename === Tradename.LOOKIERO || (tradename === Tradename.OUTFITTERY && !migrated)) && (React.createElement(Row, { text: feeText }, service.paidWithPromocode ? (React.createElement(Text, { level: 3 }, freeText)) : (React.createElement(Price, { price: service.finalPrice, variant: "subtotal" })))),
|
|
40
41
|
React.createElement(View, { style: style.divider }),
|
|
41
42
|
React.createElement(Row, { level: 2, text: totalText, action: true },
|
|
42
43
|
React.createElement(Price, { price: pendingToPay, variant: "total" }))));
|
package/dist/src/version.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const VERSION = "12.
|
|
2
|
-
export declare const RELEASE = "checkout@12.
|
|
1
|
+
export declare const VERSION = "12.27.0-beta.0";
|
|
2
|
+
export declare const RELEASE = "checkout@12.27.0-beta.0";
|
package/dist/src/version.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export const VERSION = "12.
|
|
2
|
-
export const RELEASE = "checkout@12.
|
|
1
|
+
export const VERSION = "12.27.0-beta.0";
|
|
2
|
+
export const RELEASE = "checkout@12.27.0-beta.0";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lookiero/checkout",
|
|
3
|
-
"version": "12.
|
|
3
|
+
"version": "12.27.0-beta.0",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
5
|
"types": "dist/index.d.ts",
|
|
6
6
|
"sideEffects": "false",
|
|
@@ -21,18 +21,18 @@
|
|
|
21
21
|
"dependencies": {
|
|
22
22
|
"@lookiero/messaging": "^8.1.1",
|
|
23
23
|
"@lookiero/messaging-react": "^8.1.1",
|
|
24
|
-
"@lookiero/sty-psp-ab-testing": "^0.
|
|
24
|
+
"@lookiero/sty-psp-ab-testing": "^0.4",
|
|
25
25
|
"@lookiero/sty-psp-expo-config": "^1.1",
|
|
26
26
|
"@lookiero/sty-psp-http": "^2.1",
|
|
27
27
|
"@lookiero/sty-psp-i18n": "^1.5",
|
|
28
28
|
"@lookiero/sty-psp-locale": "^2.1",
|
|
29
|
-
"@lookiero/sty-psp-logging": "^2.
|
|
30
|
-
"@lookiero/sty-psp-notifications": "^2.
|
|
29
|
+
"@lookiero/sty-psp-logging": "^2.1",
|
|
30
|
+
"@lookiero/sty-psp-notifications": "^2.12",
|
|
31
31
|
"@lookiero/sty-psp-react-native": "^1.0",
|
|
32
32
|
"@lookiero/sty-psp-segment": "^0.1",
|
|
33
33
|
"@lookiero/sty-psp-storage": "^0.2",
|
|
34
34
|
"@lookiero/sty-psp-tracking": "^2.3",
|
|
35
|
-
"@lookiero/sty-psp-ui-settings": "^1.
|
|
35
|
+
"@lookiero/sty-psp-ui-settings": "^1.3",
|
|
36
36
|
"@lookiero/sty-psp-ui": "^3.2",
|
|
37
37
|
"@lookiero/sty-psp-units": "^0.1",
|
|
38
38
|
"@lookiero/sty-psp-uuid": "^0.2",
|
package/src/ExpoRoot.tsx
CHANGED
|
@@ -46,7 +46,7 @@ const Checkout: FC<CheckoutProps> = ({
|
|
|
46
46
|
onCheckoutFlowSuccess,
|
|
47
47
|
}) => {
|
|
48
48
|
const {
|
|
49
|
-
customer: { customerId, country, segment },
|
|
49
|
+
customer: { customerId, country, segment, migrated },
|
|
50
50
|
basePath,
|
|
51
51
|
tradename,
|
|
52
52
|
} = useStaticInfo();
|
|
@@ -198,7 +198,12 @@ const Checkout: FC<CheckoutProps> = ({
|
|
|
198
198
|
<Box size={{ L: "1/3" }} style={[style.resume, isDektopScreen && style.desktopResume]}>
|
|
199
199
|
{pricing ? (
|
|
200
200
|
<View style={[style.princingWrapper, !isDektopScreen && style.princingWrapperSmall]}>
|
|
201
|
-
<Pricing
|
|
201
|
+
<Pricing
|
|
202
|
+
migrated={migrated}
|
|
203
|
+
pricing={pricing}
|
|
204
|
+
totalCheckoutItemsKept={checkoutItemsKept?.length || 0}
|
|
205
|
+
tradename={tradename}
|
|
206
|
+
/>
|
|
202
207
|
|
|
203
208
|
{isDektopScreen && <PaymentButton />}
|
|
204
209
|
</View>
|
|
@@ -28,7 +28,7 @@ interface SummaryProps {
|
|
|
28
28
|
|
|
29
29
|
const Summary: FC<SummaryProps> = ({ layout: Layout, children }) => {
|
|
30
30
|
const {
|
|
31
|
-
customer: { customerId, country, segment },
|
|
31
|
+
customer: { customerId, country, segment, migrated },
|
|
32
32
|
basePath,
|
|
33
33
|
tradename,
|
|
34
34
|
} = useStaticInfo();
|
|
@@ -152,9 +152,11 @@ const Summary: FC<SummaryProps> = ({ layout: Layout, children }) => {
|
|
|
152
152
|
<CollapsiblePricing
|
|
153
153
|
collapsed={false}
|
|
154
154
|
collapsible={false}
|
|
155
|
+
migrated={migrated}
|
|
155
156
|
pricing={pricing}
|
|
156
157
|
submitButtonText={submitButtonText}
|
|
157
158
|
totalCheckoutItemsKept={totalCheckoutItemsKept}
|
|
159
|
+
tradename={tradename}
|
|
158
160
|
onSubmit={handleOnSubmit}
|
|
159
161
|
/>
|
|
160
162
|
</View>
|
|
@@ -168,9 +170,11 @@ const Summary: FC<SummaryProps> = ({ layout: Layout, children }) => {
|
|
|
168
170
|
<Body>
|
|
169
171
|
<CollapsiblePricing
|
|
170
172
|
collapsed={pricingCollapsed}
|
|
173
|
+
migrated={migrated}
|
|
171
174
|
pricing={pricing}
|
|
172
175
|
submitButtonText={submitButtonText}
|
|
173
176
|
totalCheckoutItemsKept={totalCheckoutItemsKept}
|
|
177
|
+
tradename={tradename}
|
|
174
178
|
onPress={handleOnPressPricing}
|
|
175
179
|
onSubmit={handleOnSubmit}
|
|
176
180
|
/>
|
package/src/infrastructure/ui/views/summary/components/collapsiblePricing/CollapsiblePricing.tsx
CHANGED
|
@@ -4,6 +4,7 @@ import Animated, { useAnimatedStyle, useSharedValue, withTiming } from "react-na
|
|
|
4
4
|
import { Button, Text } from "@lookiero/aurora";
|
|
5
5
|
import { useI18nMessage } from "@lookiero/i18n-react";
|
|
6
6
|
import { Icon } from "@lookiero/sty-psp-ui";
|
|
7
|
+
import { Tradename } from "@lookiero/sty-sp-tradename";
|
|
7
8
|
import { PricingProjection } from "../../../../../../projection/pricing/pricing";
|
|
8
9
|
import { Price } from "../../../../components/atoms/price/Price";
|
|
9
10
|
import { DOMAIN, I18nMessages } from "../../../../i18n/i18n";
|
|
@@ -11,6 +12,8 @@ import { Pricing } from "../pricing/Pricing";
|
|
|
11
12
|
import { style as collapsiblePricingStyle } from "./CollapsiblePricing.style";
|
|
12
13
|
|
|
13
14
|
interface CollapsiblePricingProps {
|
|
15
|
+
readonly tradename: Tradename;
|
|
16
|
+
readonly migrated: boolean;
|
|
14
17
|
readonly pricing: PricingProjection;
|
|
15
18
|
readonly totalCheckoutItemsKept: number;
|
|
16
19
|
readonly collapsible?: boolean;
|
|
@@ -20,6 +23,8 @@ interface CollapsiblePricingProps {
|
|
|
20
23
|
readonly onSubmit: () => void;
|
|
21
24
|
}
|
|
22
25
|
const CollapsiblePricing: FC<CollapsiblePricingProps> = ({
|
|
26
|
+
migrated,
|
|
27
|
+
tradename,
|
|
23
28
|
pricing,
|
|
24
29
|
totalCheckoutItemsKept,
|
|
25
30
|
collapsible = true,
|
|
@@ -81,7 +86,12 @@ const CollapsiblePricing: FC<CollapsiblePricingProps> = ({
|
|
|
81
86
|
</Animated.View>
|
|
82
87
|
) : (
|
|
83
88
|
<Animated.View key="not-collapsed" style={notCollapsedAnimatedStyle}>
|
|
84
|
-
<Pricing
|
|
89
|
+
<Pricing
|
|
90
|
+
migrated={migrated}
|
|
91
|
+
pricing={pricing}
|
|
92
|
+
totalCheckoutItemsKept={totalCheckoutItemsKept}
|
|
93
|
+
tradename={tradename}
|
|
94
|
+
/>
|
|
85
95
|
|
|
86
96
|
<Button testID="submit-checkout-button" onPress={onSubmit}>
|
|
87
97
|
{submitButtonText}
|
|
@@ -2,6 +2,7 @@ import React, { FC, ReactNode, useMemo } from "react";
|
|
|
2
2
|
import { View } from "react-native";
|
|
3
3
|
import { Text } from "@lookiero/aurora";
|
|
4
4
|
import { useI18nMessage } from "@lookiero/i18n-react";
|
|
5
|
+
import { Tradename } from "@lookiero/sty-sp-tradename";
|
|
5
6
|
import { PricingProjection } from "../../../../../../projection/pricing/pricing";
|
|
6
7
|
import { Price } from "../../../../components/atoms/price/Price";
|
|
7
8
|
import { DOMAIN, I18nMessages } from "../../../../i18n/i18n";
|
|
@@ -28,9 +29,11 @@ const Row: FC<RowProps> = ({ action = false, text, level = 3, children }) => {
|
|
|
28
29
|
interface PricingProps {
|
|
29
30
|
readonly pricing: PricingProjection;
|
|
30
31
|
readonly totalCheckoutItemsKept: number;
|
|
32
|
+
readonly tradename: Tradename;
|
|
33
|
+
readonly migrated: boolean;
|
|
31
34
|
}
|
|
32
35
|
|
|
33
|
-
const Pricing: FC<PricingProps> = ({ pricing, totalCheckoutItemsKept }) => {
|
|
36
|
+
const Pricing: FC<PricingProps> = ({ pricing, totalCheckoutItemsKept, tradename, migrated }) => {
|
|
34
37
|
const { pendingToPay, subtotal, balanceDiscount, discount, discountPercentage = 0, service } = pricing;
|
|
35
38
|
|
|
36
39
|
const style = useMemo(() => pricingStyle(), []);
|
|
@@ -69,13 +72,15 @@ const Pricing: FC<PricingProps> = ({ pricing, totalCheckoutItemsKept }) => {
|
|
|
69
72
|
</Row>
|
|
70
73
|
)}
|
|
71
74
|
|
|
72
|
-
|
|
73
|
-
{
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
75
|
+
{(tradename === Tradename.LOOKIERO || (tradename === Tradename.OUTFITTERY && !migrated)) && (
|
|
76
|
+
<Row text={feeText}>
|
|
77
|
+
{service.paidWithPromocode ? (
|
|
78
|
+
<Text level={3}>{freeText}</Text>
|
|
79
|
+
) : (
|
|
80
|
+
<Price price={service.finalPrice} variant="subtotal" />
|
|
81
|
+
)}
|
|
82
|
+
</Row>
|
|
83
|
+
)}
|
|
79
84
|
|
|
80
85
|
<View style={style.divider} />
|
|
81
86
|
|