@lookiero/checkout 0.2.40 → 0.2.41
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/domain/checkoutItem/command/returnCheckoutItem.d.ts +15 -0
- package/dist/domain/checkoutItem/command/returnCheckoutItem.js +7 -0
- package/dist/domain/checkoutItem/model/checkoutItem.d.ts +5 -1
- package/dist/domain/checkoutItem/model/checkoutItem.js +11 -1
- package/dist/domain/checkoutItem/model/checkoutItemReturned.d.ts +13 -0
- package/dist/domain/checkoutItem/model/checkoutItemReturned.js +4 -0
- package/dist/domain/checkoutItem/model/feedbacks.d.ts +3 -0
- package/dist/domain/checkoutItem/model/feedbacks.js +1 -0
- package/dist/infrastructure/delivery/baseBootstrap.js +3 -1
- package/dist/infrastructure/delivery/mock/dataSourceCheckoutItems.js +2 -1
- package/dist/infrastructure/domain/checkoutBooking/model/httpCheckoutBookingsBook.js +1 -1
- package/dist/infrastructure/domain/checkoutItem/model/httpCheckoutItems.js +6 -1
- package/dist/infrastructure/domain/checkoutItem/model/httpCheckoutItemsReturn.d.ts +5 -0
- package/dist/infrastructure/domain/checkoutItem/model/httpCheckoutItemsReturn.js +13 -0
- package/dist/infrastructure/domain/checkoutItem/react/useReturnCheckoutItem.d.ts +17 -0
- package/dist/infrastructure/domain/checkoutItem/react/useReturnCheckoutItem.js +13 -0
- package/dist/infrastructure/projection/checkout/react/useViewFirstAvailableCheckoutByCustomerId.js +5 -0
- package/dist/infrastructure/ui/shared/components/molecules/inputField/InputField.style.js +2 -2
- package/dist/infrastructure/ui/views/item/Item.js +4 -4
- package/dist/infrastructure/ui/views/item/components/banner/CustomerDecissionBanner.d.ts +3 -2
- package/dist/infrastructure/ui/views/item/components/returnQuestionsForm/ReturnQuestionsForm.d.ts +1 -1
- package/dist/infrastructure/ui/views/item/components/returnQuestionsForm/ReturnQuestionsForm.js +3 -2
- package/dist/projection/checkoutItem/checkoutItem.d.ts +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Command } from "@lookiero/messaging";
|
|
2
|
+
import { Feedbacks } from "../model/feedbacks";
|
|
3
|
+
declare const RETURN_CHECKOUT_ITEM = "return_checkout_item";
|
|
4
|
+
interface ReturnCheckoutItemPayload {
|
|
5
|
+
readonly aggregateId: string;
|
|
6
|
+
readonly feedbacks: Feedbacks;
|
|
7
|
+
}
|
|
8
|
+
interface ReturnCheckoutItem extends Command<typeof RETURN_CHECKOUT_ITEM>, ReturnCheckoutItemPayload {
|
|
9
|
+
}
|
|
10
|
+
interface ReturnCheckoutItemFunction {
|
|
11
|
+
(payload: ReturnCheckoutItemPayload): ReturnCheckoutItem;
|
|
12
|
+
}
|
|
13
|
+
declare const returnCheckoutItem: ReturnCheckoutItemFunction;
|
|
14
|
+
export type { ReturnCheckoutItem };
|
|
15
|
+
export { RETURN_CHECKOUT_ITEM, returnCheckoutItem };
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { command } from "@lookiero/messaging";
|
|
2
|
+
const RETURN_CHECKOUT_ITEM = "return_checkout_item";
|
|
3
|
+
const returnCheckoutItem = ({ aggregateId, ...payload }) => ({
|
|
4
|
+
...command({ aggregateId, name: RETURN_CHECKOUT_ITEM }),
|
|
5
|
+
...payload,
|
|
6
|
+
});
|
|
7
|
+
export { RETURN_CHECKOUT_ITEM, returnCheckoutItem };
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { AggregateRoot, CommandHandlerFunction } from "@lookiero/messaging";
|
|
2
2
|
import { KeepCheckoutItem } from "../command/keepCheckoutItem";
|
|
3
|
+
import { ReturnCheckoutItem } from "../command/returnCheckoutItem";
|
|
4
|
+
import { Feedbacks } from "./feedbacks";
|
|
3
5
|
import { Price } from "./price";
|
|
4
6
|
declare enum CheckoutItemStatus {
|
|
5
7
|
INITIAL = "INITIAL",
|
|
@@ -11,7 +13,9 @@ declare enum CheckoutItemStatus {
|
|
|
11
13
|
interface CheckoutItem extends AggregateRoot {
|
|
12
14
|
readonly status: CheckoutItemStatus;
|
|
13
15
|
readonly price: Price;
|
|
16
|
+
readonly feedbacks: Feedbacks;
|
|
14
17
|
}
|
|
15
18
|
declare const keepCheckoutItemHandler: CommandHandlerFunction<KeepCheckoutItem, CheckoutItem>;
|
|
19
|
+
declare const returnCheckoutItemHandler: CommandHandlerFunction<ReturnCheckoutItem, CheckoutItem>;
|
|
16
20
|
export type { CheckoutItem };
|
|
17
|
-
export { CheckoutItemStatus, keepCheckoutItemHandler };
|
|
21
|
+
export { CheckoutItemStatus, keepCheckoutItemHandler, returnCheckoutItemHandler };
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import invariant from "tiny-invariant";
|
|
2
2
|
import { checkoutItemKept } from "./checkoutItemKept";
|
|
3
|
+
import { checkoutItemReturned } from "./checkoutItemReturned";
|
|
3
4
|
var CheckoutItemStatus;
|
|
4
5
|
(function (CheckoutItemStatus) {
|
|
5
6
|
CheckoutItemStatus["INITIAL"] = "INITIAL";
|
|
@@ -17,4 +18,13 @@ const keepCheckoutItemHandler = () => async ({ aggregateRoot, command }) => {
|
|
|
17
18
|
domainEvents: [checkoutItemKept({ aggregateId })],
|
|
18
19
|
};
|
|
19
20
|
};
|
|
20
|
-
|
|
21
|
+
const returnCheckoutItemHandler = () => async ({ aggregateRoot, command }) => {
|
|
22
|
+
const { aggregateId } = command;
|
|
23
|
+
invariant(aggregateRoot.status !== CheckoutItemStatus.RETURNED, "CheckoutItem is already returned");
|
|
24
|
+
return {
|
|
25
|
+
...aggregateRoot,
|
|
26
|
+
status: CheckoutItemStatus.RETURNED,
|
|
27
|
+
domainEvents: [checkoutItemReturned({ aggregateId })],
|
|
28
|
+
};
|
|
29
|
+
};
|
|
30
|
+
export { CheckoutItemStatus, keepCheckoutItemHandler, returnCheckoutItemHandler };
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { DomainEvent } from "@lookiero/messaging";
|
|
2
|
+
declare const CHECKOUT_ITEM_RETURNED = "checkout_item_returned";
|
|
3
|
+
interface CheckoutItemReturnedPayload {
|
|
4
|
+
readonly aggregateId: string;
|
|
5
|
+
}
|
|
6
|
+
interface CheckoutItemReturned extends DomainEvent<typeof CHECKOUT_ITEM_RETURNED>, CheckoutItemReturnedPayload {
|
|
7
|
+
}
|
|
8
|
+
interface CheckoutItemReturnedFunction {
|
|
9
|
+
(payload: CheckoutItemReturnedPayload): CheckoutItemReturned;
|
|
10
|
+
}
|
|
11
|
+
declare const checkoutItemReturned: CheckoutItemReturnedFunction;
|
|
12
|
+
export type { CheckoutItemReturned };
|
|
13
|
+
export { CHECKOUT_ITEM_RETURNED, checkoutItemReturned };
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { domainEvent } from "@lookiero/messaging";
|
|
2
|
+
const CHECKOUT_ITEM_RETURNED = "checkout_item_returned";
|
|
3
|
+
const checkoutItemReturned = ({ aggregateId }) => domainEvent({ aggregateId, name: CHECKOUT_ITEM_RETURNED });
|
|
4
|
+
export { CHECKOUT_ITEM_RETURNED, checkoutItemReturned };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -4,7 +4,8 @@ import { startCheckoutHandler } from "../../domain/checkout/model/checkout";
|
|
|
4
4
|
import { BOOK_CHECKOUT_BOOKING_FOR_CHECKOUT_ITEM } from "../../domain/checkoutBooking/command/bookCheckoutBookingForCheckoutItem";
|
|
5
5
|
import { bookCheckoutBookingForCheckoutItemHandler, } from "../../domain/checkoutBooking/model/checkoutBooking";
|
|
6
6
|
import { KEEP_CHECKOUT_ITEM } from "../../domain/checkoutItem/command/keepCheckoutItem";
|
|
7
|
-
import {
|
|
7
|
+
import { RETURN_CHECKOUT_ITEM } from "../../domain/checkoutItem/command/returnCheckoutItem";
|
|
8
|
+
import { keepCheckoutItemHandler, returnCheckoutItemHandler, } from "../../domain/checkoutItem/model/checkoutItem";
|
|
8
9
|
import { UPDATE_UI_SETTING } from "../../domain/uiSetting/command/updateUiSetting";
|
|
9
10
|
import { updateUiSettingHandler } from "../../domain/uiSetting/model/uiSetting";
|
|
10
11
|
import { viewBookedSizeChangeProductsVariantsForCheckoutItemHandler, VIEW_BOOKED_SIZE_CHANGE_PRODUCT_VARIANTS_FOR_CHECKOUT_ITEM, } from "../../projection/bookedSizeChangeProductsVariants/viewBookedSizeChangeProductVariantsForCheckoutItem";
|
|
@@ -39,6 +40,7 @@ const baseBootstrap = ({ checkoutByIdView, firstAvailableCheckoutByCustomerIdVie
|
|
|
39
40
|
view: returnQuestionsByCheckoutItemIdView,
|
|
40
41
|
})
|
|
41
42
|
.command(KEEP_CHECKOUT_ITEM, keepCheckoutItemHandler)(getCheckoutItem, saveCheckoutItem, ...checkoutItemsDependencies)
|
|
43
|
+
.command(RETURN_CHECKOUT_ITEM, returnCheckoutItemHandler)(getCheckoutItem, saveCheckoutItem, ...checkoutItemsDependencies)
|
|
42
44
|
.query(VIEW_BOOKED_SIZE_CHANGE_PRODUCT_VARIANTS_FOR_CHECKOUT_ITEM, viewBookedSizeChangeProductsVariantsForCheckoutItemHandler, {
|
|
43
45
|
view: bookedSizeChangeProductsVariantsForCheckoutItemView,
|
|
44
46
|
})
|
|
@@ -10,10 +10,11 @@ const toCheckoutItemProjection = (checkoutItem) => ({
|
|
|
10
10
|
const toCheckoutItemDomain = (checkoutItem) => {
|
|
11
11
|
invariant(checkoutItem, "No checkoutItem found!");
|
|
12
12
|
return {
|
|
13
|
+
aggregateId: checkoutItem.id,
|
|
13
14
|
id: checkoutItem.id,
|
|
14
15
|
status: checkoutItem.status,
|
|
15
|
-
aggregateId: checkoutItem.id,
|
|
16
16
|
price: checkoutItem.price,
|
|
17
|
+
feedbacks: checkoutItem.feedback,
|
|
17
18
|
domainEvents: [],
|
|
18
19
|
};
|
|
19
20
|
};
|
|
@@ -7,7 +7,7 @@ const httpCheckoutBookingsBook = ({ httpPost }) => async ({ aggregateId, checkou
|
|
|
7
7
|
}
|
|
8
8
|
const { checkoutItemId } = checkoutBookingBooked;
|
|
9
9
|
httpPost({
|
|
10
|
-
endpoint: "/book-size-
|
|
10
|
+
endpoint: "/book-size-change-product-variants-for-checkout-item",
|
|
11
11
|
body: {
|
|
12
12
|
checkoutId,
|
|
13
13
|
checkoutItemId,
|
|
@@ -1,18 +1,23 @@
|
|
|
1
1
|
import invariant from "tiny-invariant";
|
|
2
2
|
import { viewCheckoutItemById, } from "../../../../projection/checkoutItem/viewCheckoutItemById";
|
|
3
3
|
import { httpCheckoutItemsKeep } from "./httpCheckoutItemsKeep";
|
|
4
|
+
import { httpCheckoutItemsReturn } from "./httpCheckoutItemsReturn";
|
|
4
5
|
const toDomain = (checkoutItem) => {
|
|
5
6
|
invariant(checkoutItem, "No checkoutItem found!");
|
|
6
7
|
return {
|
|
7
8
|
id: checkoutItem.id,
|
|
8
9
|
status: checkoutItem.status,
|
|
9
10
|
price: checkoutItem.price,
|
|
11
|
+
feedbacks: checkoutItem.feedback,
|
|
10
12
|
aggregateId: checkoutItem.id,
|
|
11
13
|
domainEvents: [],
|
|
12
14
|
};
|
|
13
15
|
};
|
|
14
16
|
const getCheckoutItem = ({ queryBus }) => async (aggregateId) => toDomain(await queryBus(viewCheckoutItemById({ checkoutItemId: aggregateId })));
|
|
15
17
|
const saveCheckoutItem = ({ httpPost }) => async (aggregateRoot) => {
|
|
16
|
-
await
|
|
18
|
+
await Promise.all([
|
|
19
|
+
httpCheckoutItemsKeep({ httpPost })(aggregateRoot),
|
|
20
|
+
httpCheckoutItemsReturn({ httpPost })(aggregateRoot),
|
|
21
|
+
]);
|
|
17
22
|
};
|
|
18
23
|
export { getCheckoutItem, saveCheckoutItem };
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { CHECKOUT_ITEM_RETURNED, } from "../../../../domain/checkoutItem/model/checkoutItemReturned";
|
|
2
|
+
const isCheckoutItemReturned = (event) => event.name === CHECKOUT_ITEM_RETURNED;
|
|
3
|
+
const httpCheckoutItemsReturn = ({ httpPost }) => async ({ aggregateId, feedbacks, domainEvents }) => {
|
|
4
|
+
const checkoutItemReturned = domainEvents.find(isCheckoutItemReturned);
|
|
5
|
+
if (!checkoutItemReturned) {
|
|
6
|
+
return;
|
|
7
|
+
}
|
|
8
|
+
httpPost({
|
|
9
|
+
endpoint: "/return-checkout-item",
|
|
10
|
+
body: { checkoutItemId: aggregateId, feedbacks },
|
|
11
|
+
});
|
|
12
|
+
};
|
|
13
|
+
export { httpCheckoutItemsReturn };
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { CommandStatus } from "@lookiero/messaging-react";
|
|
2
|
+
import { Feedbacks } from "../../../../domain/checkoutItem/model/feedbacks";
|
|
3
|
+
interface ReturnCheckoutItemFunctionArgs {
|
|
4
|
+
readonly feedbacks: Feedbacks;
|
|
5
|
+
}
|
|
6
|
+
interface ReturnCheckoutItemFunction {
|
|
7
|
+
(args: ReturnCheckoutItemFunctionArgs): Promise<void>;
|
|
8
|
+
}
|
|
9
|
+
interface UseReturnCheckoutItemFunctionArgs {
|
|
10
|
+
readonly checkoutItemId: string;
|
|
11
|
+
}
|
|
12
|
+
declare type UseReturnCheckoutItemResult = [returnCheckoutItem: ReturnCheckoutItemFunction, status: CommandStatus];
|
|
13
|
+
interface UseReturnCheckoutItemFunction {
|
|
14
|
+
(args: UseReturnCheckoutItemFunctionArgs): UseReturnCheckoutItemResult;
|
|
15
|
+
}
|
|
16
|
+
declare const useReturnCheckoutItem: UseReturnCheckoutItemFunction;
|
|
17
|
+
export { useReturnCheckoutItem };
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { useCommand } from "@lookiero/messaging-react";
|
|
2
|
+
import { useCallback } from "react";
|
|
3
|
+
import { returnCheckoutItem as returnCheckoutItemCommand } from "../../../../domain/checkoutItem/command/returnCheckoutItem";
|
|
4
|
+
import { MESSAGING_CONTEXT_ID } from "../../../delivery/baseBootstrap";
|
|
5
|
+
const useReturnCheckoutItem = ({ checkoutItemId }) => {
|
|
6
|
+
const [commandBus, status] = useCommand({ contextId: MESSAGING_CONTEXT_ID });
|
|
7
|
+
const returnCheckoutItem = useCallback(async ({ feedbacks }) => await commandBus(returnCheckoutItemCommand({
|
|
8
|
+
aggregateId: checkoutItemId,
|
|
9
|
+
feedbacks,
|
|
10
|
+
})), [checkoutItemId, commandBus]);
|
|
11
|
+
return [returnCheckoutItem, status];
|
|
12
|
+
};
|
|
13
|
+
export { useReturnCheckoutItem };
|
package/dist/infrastructure/projection/checkout/react/useViewFirstAvailableCheckoutByCustomerId.js
CHANGED
|
@@ -1,9 +1,14 @@
|
|
|
1
1
|
import { useQuery } from "@lookiero/messaging-react";
|
|
2
|
+
import { CHECKOUT_ITEM_KEPT } from "../../../../domain/checkoutItem/model/checkoutItemKept";
|
|
3
|
+
import { CHECKOUT_ITEM_RETURNED, } from "../../../../domain/checkoutItem/model/checkoutItemReturned";
|
|
2
4
|
import { viewFirstAvailableCheckoutByCustomerId } from "../../../../projection/checkout/viewFirstAvailableCheckoutByCustomerId";
|
|
3
5
|
import { MESSAGING_CONTEXT_ID } from "../../../delivery/baseBootstrap";
|
|
6
|
+
const isCheckoutItemKept = (event) => event.name === CHECKOUT_ITEM_KEPT;
|
|
7
|
+
const isCheckoutItemReturned = (event) => event.name === CHECKOUT_ITEM_RETURNED;
|
|
4
8
|
const useViewFirstAvailableCheckoutByCustomerId = ({ customerId }) => useQuery({
|
|
5
9
|
query: viewFirstAvailableCheckoutByCustomerId({ customerId }),
|
|
6
10
|
contextId: MESSAGING_CONTEXT_ID,
|
|
11
|
+
invalidation: isCheckoutItemKept || isCheckoutItemReturned,
|
|
7
12
|
options: { staleTime: Infinity, retry: false, refetchOnWindowFocus: false },
|
|
8
13
|
});
|
|
9
14
|
export { useViewFirstAvailableCheckoutByCustomerId };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { StyleSheet } from "react-native";
|
|
2
2
|
import { theme } from "../../../../theme/theme";
|
|
3
|
-
const { spaceXS, spaceM, spaceL } = theme();
|
|
3
|
+
const { spaceXS, spaceS, spaceM, spaceL } = theme();
|
|
4
4
|
const style = StyleSheet.create({
|
|
5
5
|
error: {
|
|
6
6
|
marginLeft: spaceL,
|
|
@@ -12,7 +12,7 @@ const style = StyleSheet.create({
|
|
|
12
12
|
},
|
|
13
13
|
icon: {
|
|
14
14
|
position: "absolute",
|
|
15
|
-
right:
|
|
15
|
+
right: spaceS,
|
|
16
16
|
top: spaceM,
|
|
17
17
|
zIndex: 4,
|
|
18
18
|
},
|
|
@@ -23,6 +23,7 @@ const Item = ({ customerId }) => {
|
|
|
23
23
|
const { id } = useParams();
|
|
24
24
|
const [checkout, checkoutStatus] = useViewFirstAvailableCheckoutByCustomerId({ customerId });
|
|
25
25
|
const checkoutItem = checkout?.items.find((checkoutItem) => checkoutItem.id === id);
|
|
26
|
+
const [customerDecissionMade, setCustomerDecissionMade] = useState(() => checkoutItem.status === CheckoutItemStatus.INITIAL || checkoutItem.status === CheckoutItemStatus.EXPIRED);
|
|
26
27
|
const [bookedSizeChangeProductsVariants, bookedSizeChangeProductsVariantsStatus] = useViewBookedSizeChangeProductsVariantsForCheckoutItem({
|
|
27
28
|
checkoutItemId: checkoutItem.id,
|
|
28
29
|
});
|
|
@@ -43,11 +44,11 @@ const Item = ({ customerId }) => {
|
|
|
43
44
|
const [returnQuestionsVisible, setReturnQuestionsVisible] = useState(false);
|
|
44
45
|
const handleOnShowReturnQuestions = useCallback(() => setReturnQuestionsVisible(true), []);
|
|
45
46
|
const handleOnHideReturnQuestions = useCallback(() => setReturnQuestionsVisible(false), []);
|
|
46
|
-
const handleOnEditFeedback = useCallback(() =>
|
|
47
|
+
const handleOnEditFeedback = useCallback(() => handleOnShowReturnQuestions(), [handleOnShowReturnQuestions]);
|
|
47
48
|
const handleOnSubmit = useCallback(() => handleOnHideReturnQuestions(), [handleOnHideReturnQuestions]);
|
|
48
49
|
const handleOnReplace = useCallback(() => void 0, []);
|
|
49
50
|
const handleOnReturn = useCallback(() => handleOnShowReturnQuestions(), [handleOnShowReturnQuestions]);
|
|
50
|
-
const handleOnBannerPress = useCallback(() =>
|
|
51
|
+
const handleOnBannerPress = useCallback(() => setCustomerDecissionMade(!customerDecissionMade), [customerDecissionMade]);
|
|
51
52
|
const dependenciesLoadedStatuses = [QueryStatus.ERROR, QueryStatus.SUCCESS];
|
|
52
53
|
const dependenciesLoaded = dependenciesLoadedStatuses.includes(returnQuestionsStatus) &&
|
|
53
54
|
dependenciesLoadedStatuses.includes(checkoutStatus) &&
|
|
@@ -56,7 +57,6 @@ const Item = ({ customerId }) => {
|
|
|
56
57
|
return React.createElement(Spinner, null);
|
|
57
58
|
const { price } = checkoutItem;
|
|
58
59
|
const { media, brand, name, size, color } = checkoutItem.productVariant;
|
|
59
|
-
const customerDecissionMade = checkoutItem.status === CheckoutItemStatus.INITIAL || checkoutItem.status === CheckoutItemStatus.EXPIRED;
|
|
60
60
|
const sizes = bookedSizeChangeProductsVariants?.productVariants
|
|
61
61
|
.map((productVariant) => productVariant.size)
|
|
62
62
|
.concat(checkoutItem.productVariant.size) || [];
|
|
@@ -69,7 +69,7 @@ const Item = ({ customerId }) => {
|
|
|
69
69
|
React.createElement(ProductVariantSlider, { producVariantMedia: media })),
|
|
70
70
|
React.createElement(ProductVariantDescription, { brand: brand, color: color, name: name, price: price, size: size }),
|
|
71
71
|
checkoutItem.feedback && (React.createElement(View, { style: style.feedbackContainer },
|
|
72
|
-
React.createElement(ReturnQuestionsFeedback, { feedback: checkoutItem.feedback, returnQuestions: returnQuestions || [], onEditFeedback: handleOnEditFeedback })))))),
|
|
72
|
+
React.createElement(ReturnQuestionsFeedback, { feedback: checkoutItem.feedback || {}, returnQuestions: returnQuestions || [], onEditFeedback: handleOnEditFeedback })))))),
|
|
73
73
|
customerDecissionMade && (React.createElement(ItemActions, { size: checkoutItem.productVariant.size, sizes: sizes, onKeep: keepCheckoutItem, onLayout: handleOnStickyLayout, onReplace: handleOnReplace, onReturn: handleOnReturn })),
|
|
74
74
|
React.createElement(ReturnQuestionsForm, { checkoutItemPrice: checkoutItem.price, feedback: checkoutItem.feedback || {}, productVariant: checkoutItem.productVariant, returnQuestions: returnQuestions || [], visible: returnQuestionsVisible, onClose: handleOnHideReturnQuestions, onSubmit: handleOnSubmit })));
|
|
75
75
|
};
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { FC } from "react";
|
|
2
2
|
import { CheckoutItemStatus } from "../../../../../../domain/checkoutItem/model/checkoutItem";
|
|
3
|
-
declare type
|
|
3
|
+
declare type CustomerDecissionBannerStatus = Exclude<CheckoutItemStatus, CheckoutItemStatus.INITIAL | CheckoutItemStatus.EXPIRED>;
|
|
4
4
|
interface CustomerDecissionBannerProps {
|
|
5
|
-
readonly checkoutItemStatus:
|
|
5
|
+
readonly checkoutItemStatus: CustomerDecissionBannerStatus;
|
|
6
6
|
readonly onPress: () => void;
|
|
7
7
|
}
|
|
8
8
|
declare const CustomerDecissionBanner: FC<CustomerDecissionBannerProps>;
|
|
9
|
+
export type { CustomerDecissionBannerStatus };
|
|
9
10
|
export { CustomerDecissionBanner };
|
package/dist/infrastructure/ui/views/item/components/returnQuestionsForm/ReturnQuestionsForm.d.ts
CHANGED
|
@@ -8,7 +8,7 @@ interface ReturnQuestionsFormProps {
|
|
|
8
8
|
readonly returnQuestions: ReturnQuestionProjection[];
|
|
9
9
|
readonly checkoutItemPrice: PriceProjection;
|
|
10
10
|
readonly productVariant: CheckoutItemProductVariantProjection;
|
|
11
|
-
readonly onSubmit: () => void;
|
|
11
|
+
readonly onSubmit: (feedback: FeedbackProjection) => void;
|
|
12
12
|
readonly onClose: () => void;
|
|
13
13
|
}
|
|
14
14
|
declare const ReturnQuestionsForm: FC<ReturnQuestionsFormProps>;
|
package/dist/infrastructure/ui/views/item/components/returnQuestionsForm/ReturnQuestionsForm.js
CHANGED
|
@@ -2,7 +2,7 @@ import { PortalHost } from "@gorhom/portal";
|
|
|
2
2
|
import { Button } from "@lookiero/aurora-next/build/components/atoms/Button/Button";
|
|
3
3
|
import { Text } from "@lookiero/aurora-next/build/components/primitives/Text/Text";
|
|
4
4
|
import { useI18nMessage } from "@lookiero/i18n-react";
|
|
5
|
-
import React from "react";
|
|
5
|
+
import React, { useCallback } from "react";
|
|
6
6
|
import { View } from "react-native";
|
|
7
7
|
import { ReturnQuestionType, } from "../../../../../../projection/returnQuestion/returnQuestion";
|
|
8
8
|
import { ReturnQuestions } from "../../../../components/organisms/returnQuestions/ReturnQuestions";
|
|
@@ -33,10 +33,11 @@ const ReturnQuestionsForm = ({ feedback, returnQuestions, checkoutItemPrice, pro
|
|
|
33
33
|
prefix: RETURN_QUESTIONS_PREFIX,
|
|
34
34
|
});
|
|
35
35
|
const { media, brand, name, size, color } = productVariant;
|
|
36
|
+
const handleOnSubmit = useCallback(() => onSubmit(feedback), [feedback, onSubmit]);
|
|
36
37
|
return (React.createElement(ReturnQuestionFeedbackProvider, { feedback: feedback },
|
|
37
38
|
React.createElement(ReturnQuestionItemProvider, { returnQuestionItems: returnQuestionItems },
|
|
38
39
|
React.createElement(PortalHost, { name: RETURN_QUESTION_FORM_PORTAL_HOST_NAME }),
|
|
39
|
-
React.createElement(Modal, { footer: React.createElement(Button, { onPress:
|
|
40
|
+
React.createElement(Modal, { footer: React.createElement(Button, { onPress: handleOnSubmit }, submitButtonText), portalHostName: RETURN_QUESTION_FORM_PORTAL_HOST_NAME, visible: visible, scroll: true, showCloseButton: true, onClose: onClose },
|
|
40
41
|
React.createElement(View, { style: style.returnQuestionsContainer },
|
|
41
42
|
React.createElement(Text, { level: 2, style: style.title }, titleText),
|
|
42
43
|
React.createElement(ProductVariant, { brand: brand, color: color, media: media, name: name, price: checkoutItemPrice, size: size }),
|
|
@@ -47,7 +47,7 @@ interface CheckoutItemProjection {
|
|
|
47
47
|
readonly price: PriceProjection;
|
|
48
48
|
readonly replacedFor?: string;
|
|
49
49
|
readonly productVariant: CheckoutItemProductVariantProjection;
|
|
50
|
-
readonly feedback: FeedbackProjection
|
|
50
|
+
readonly feedback: FeedbackProjection;
|
|
51
51
|
}
|
|
52
52
|
export type { CheckoutItemProjection, CheckoutItemProductVariantProjection, ColorProjection, MediaProjection, PriceProjection, };
|
|
53
53
|
export { Currency, MediaPerspective };
|