@riosst100/pwa-marketplace 2.7.7 → 2.7.9
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/i18n/en_US.json +4 -2
- package/i18n/id_ID.json +2 -0
- package/package.json +1 -1
- package/src/components/FavoriteSeller/AddToListButton/addToListButton.js +4 -2
- package/src/components/LinkToOtherStores/index.js +3 -3
- package/src/components/Seller/StoreLocationCard.js +29 -0
- package/src/components/SellerDetail/sellerDetail.js +53 -68
- package/src/components/SellerInformation/sellerInformation.js +28 -22
- package/src/components/SellerMegaMenu/sellerMegaMenu.js +27 -22
- package/src/components/SellerProducts/productContent.js +7 -6
- package/src/components/SellerReview/sellerReview.js +161 -123
- package/src/components/commons/Rating/index.js +34 -0
- package/src/overwrites/venia-ui/lib/components/AccountMenu/accountMenu.js +1 -1
- package/src/overwrites/venia-ui/lib/components/Breadcrumbs/breadcrumbs.module.css +2 -2
- package/src/overwrites/venia-ui/lib/components/CartPage/PriceSummary/priceSummary.module.css +6 -0
- package/src/overwrites/venia-ui/lib/components/CartPage/ProductListing/product.js +1 -1
- package/src/overwrites/venia-ui/lib/components/CartPage/ProductListingBySeller/productListingBySeller.js +12 -4
- package/src/overwrites/venia-ui/lib/components/CartPage/ProductListingBySeller/productListingBySeller.module.css +18 -0
- package/src/overwrites/venia-ui/lib/components/Header/header.js +4 -4
- package/src/overwrites/venia-ui/lib/components/Header/header.module.css +173 -0
- package/src/overwrites/venia-ui/lib/components/Main/main.module.css +1 -1
- package/src/overwrites/venia-ui/lib/components/MegaMenu/submenu.module.css +1 -1
- package/src/overwrites/venia-ui/lib/components/ProductFullDetail/CustomAttributes/customAttributes.js +1 -1
- package/src/overwrites/venia-ui/lib/components/ProductFullDetail/productFullDetail.js +117 -70
- package/src/overwrites/venia-ui/lib/components/ProductFullDetail/productFullDetail.module.css +37 -0
- package/src/overwrites/venia-ui/lib/components/ProductImageCarousel/carousel.module.css +2 -1
- package/src/talons/FavoriteSeller/AddToListButton/useAddToFavoriteListButton.js +4 -1
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
.root {
|
|
2
|
+
composes: auto-cols-fr from global;
|
|
3
|
+
composes: bg-header from global;
|
|
4
|
+
composes: border-b from global;
|
|
5
|
+
composes: border-subtle from global;
|
|
6
|
+
composes: grid from global;
|
|
7
|
+
composes: h-auto from global;
|
|
8
|
+
composes: justify-center from global;
|
|
9
|
+
composes: px-4 from global;
|
|
10
|
+
composes: top-0 from global;
|
|
11
|
+
composes: sticky from global;
|
|
12
|
+
composes: w-full from global;
|
|
13
|
+
composes: z-header from global;
|
|
14
|
+
|
|
15
|
+
composes: lg_px-8 from global;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
.switchers {
|
|
19
|
+
composes: auto-cols-max from global;
|
|
20
|
+
composes: grid from global;
|
|
21
|
+
composes: grid-flow-col from global;
|
|
22
|
+
composes: justify-end from global;
|
|
23
|
+
/* composes: max-w-site from global; */
|
|
24
|
+
composes: mx-auto from global;
|
|
25
|
+
composes: relative from global;
|
|
26
|
+
composes: w-full from global;
|
|
27
|
+
composes: z-menu from global;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
.switchersContainer {
|
|
31
|
+
composes: bg-gray-100 from global;
|
|
32
|
+
composes: hidden from global;
|
|
33
|
+
composes: px-8 from global;
|
|
34
|
+
composes: w-full from global;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/* Large screen styles */
|
|
38
|
+
.switchersContainer {
|
|
39
|
+
composes: sm_block from global;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
.open {
|
|
43
|
+
composes: root;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
.closed {
|
|
47
|
+
composes: root;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
.toolbar {
|
|
51
|
+
composes: border-0 from global;
|
|
52
|
+
composes: content-center from global;
|
|
53
|
+
composes: gap-x-4 from global;
|
|
54
|
+
composes: grid from global;
|
|
55
|
+
composes: grid-cols-3 from global;
|
|
56
|
+
composes: grid-rows-header from global;
|
|
57
|
+
composes: h-14 from global;
|
|
58
|
+
composes: items-center from global;
|
|
59
|
+
composes: justify-self-center from global;
|
|
60
|
+
composes: max-w-site from global;
|
|
61
|
+
composes: w-full from global;
|
|
62
|
+
composes: z-header from global;
|
|
63
|
+
|
|
64
|
+
composes: lg_h-20 from global;
|
|
65
|
+
composes: lg_gap-x-8 from global;
|
|
66
|
+
composes: lg_grid-cols-12 from global;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
.logo {
|
|
70
|
+
height: var(--height);
|
|
71
|
+
width: var(--width);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
.primaryActions {
|
|
75
|
+
composes: col-start-1 from global;
|
|
76
|
+
composes: grid from global;
|
|
77
|
+
composes: grid-flow-col from global;
|
|
78
|
+
composes: justify-self-start from global;
|
|
79
|
+
composes: row-start-1 from global;
|
|
80
|
+
composes: self-center from global;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
.logoContainer {
|
|
84
|
+
composes: col-start-2 from global;
|
|
85
|
+
composes: justify-self-center from global;
|
|
86
|
+
|
|
87
|
+
composes: lg_col-end-3 from global;
|
|
88
|
+
composes: lg_col-start-1 from global;
|
|
89
|
+
composes: lg_justify-self-start from global;
|
|
90
|
+
composes: lg_mr-8 from global;
|
|
91
|
+
composes: lg_row-start-1 from global;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
.secondaryActions {
|
|
95
|
+
composes: col-start-3 from global;
|
|
96
|
+
composes: grid from global;
|
|
97
|
+
composes: grid-flow-col from global;
|
|
98
|
+
composes: items-center from global;
|
|
99
|
+
composes: justify-items-end from global;
|
|
100
|
+
composes: justify-self-end from global;
|
|
101
|
+
composes: w-max from global;
|
|
102
|
+
|
|
103
|
+
composes: lg_col-end-13 from global;
|
|
104
|
+
composes: lg_col-start-10 from global;
|
|
105
|
+
composes: lg_gap-x-4 from global;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
.searchFallback {
|
|
109
|
+
composes: flex from global;
|
|
110
|
+
composes: justify-center from global;
|
|
111
|
+
composes: mb-2 from global;
|
|
112
|
+
composes: px-4 from global;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
.input {
|
|
116
|
+
composes: input from '../TextInput/textInput.module.css';
|
|
117
|
+
|
|
118
|
+
@apply max-w-sm;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
.loader,
|
|
122
|
+
.loaderBefore,
|
|
123
|
+
.loaderAfter {
|
|
124
|
+
--dot-size: 2em;
|
|
125
|
+
--dot-font-size: 6px;
|
|
126
|
+
--dot-shadow-offset: calc(-1 * var(--dot-size) + var(--dot-font-size));
|
|
127
|
+
|
|
128
|
+
composes: rounded-full from global;
|
|
129
|
+
width: var(--dot-size);
|
|
130
|
+
height: var(--dot-size);
|
|
131
|
+
animation: pulse 1.8s infinite ease-in-out;
|
|
132
|
+
animation-fill-mode: both;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
.loader {
|
|
136
|
+
composes: mb-0 from global;
|
|
137
|
+
composes: mx-auto from global;
|
|
138
|
+
composes: relative from global;
|
|
139
|
+
composes: text-subtle from global;
|
|
140
|
+
font-size: var(--dot-font-size);
|
|
141
|
+
margin-top: var(--dot-shadow-offset);
|
|
142
|
+
transform: translateZ(0);
|
|
143
|
+
animation-delay: -0.16s;
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
.loaderBefore,
|
|
147
|
+
.loaderAfter {
|
|
148
|
+
composes: content-empty from global;
|
|
149
|
+
composes: absolute from global;
|
|
150
|
+
composes: top-0 from global;
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
.loaderBefore {
|
|
154
|
+
composes: left-[-3.5em] from global;
|
|
155
|
+
composes: text-gray-100 from global;
|
|
156
|
+
animation-delay: -0.32s;
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
.loaderAfter {
|
|
160
|
+
composes: left-[3.5em] from global;
|
|
161
|
+
composes: text-gray-600 from global;
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
@keyframes pulse {
|
|
165
|
+
0%,
|
|
166
|
+
80%,
|
|
167
|
+
100% {
|
|
168
|
+
box-shadow: 0 var(--dot-size) 0 -1.3em;
|
|
169
|
+
}
|
|
170
|
+
40% {
|
|
171
|
+
box-shadow: 0 var(--dot-size) 0 0;
|
|
172
|
+
}
|
|
173
|
+
}
|
|
@@ -24,7 +24,7 @@ const CustomAttributes = props => {
|
|
|
24
24
|
const attributeContent = (
|
|
25
25
|
<li
|
|
26
26
|
key={currentAttribute.attribute_metadata.uid}
|
|
27
|
-
className={cn(classes.listItem, '!text-[14px] py-
|
|
27
|
+
className={cn(classes.listItem, '!text-[14px] py-2')}
|
|
28
28
|
>
|
|
29
29
|
<AttributeType
|
|
30
30
|
showLabels={showLabels}
|
|
@@ -3,6 +3,7 @@ import { FormattedMessage, useIntl } from 'react-intl';
|
|
|
3
3
|
import { arrayOf, bool, number, shape, string } from 'prop-types';
|
|
4
4
|
import { Form } from 'informed';
|
|
5
5
|
import { Info } from 'react-feather';
|
|
6
|
+
import { useToasts } from '@magento/peregrine/lib';
|
|
6
7
|
|
|
7
8
|
import Price from '@magento/venia-ui/lib/components/Price';
|
|
8
9
|
import { useProductFullDetail } from '@magento/peregrine/lib/talons/ProductFullDetail/useProductFullDetail';
|
|
@@ -22,7 +23,7 @@ import cn from 'classnames';
|
|
|
22
23
|
import Tabs from '@riosst100/pwa-marketplace/src/components/commons/Tabs';
|
|
23
24
|
import ProductReviews from './components/productReview';
|
|
24
25
|
import RichText from '@magento/venia-ui/lib/components/RichText';
|
|
25
|
-
import { Star1, Verify, Sms, Message, Shop } from 'iconsax-react';
|
|
26
|
+
import { Star1, Verify, Sms, Message, Shop, ArrowUp2 } from 'iconsax-react';
|
|
26
27
|
import { Link } from "react-router-dom";
|
|
27
28
|
import Divider from '@riosst100/pwa-marketplace/src/components/Divider';
|
|
28
29
|
|
|
@@ -86,7 +87,7 @@ const ProductFullDetail = props => {
|
|
|
86
87
|
const {
|
|
87
88
|
breadcrumbCategoryId,
|
|
88
89
|
errorMessage,
|
|
89
|
-
handleAddToCart,
|
|
90
|
+
handleAddToCart: originalHandleAddToCart,
|
|
90
91
|
handleSelectionChange,
|
|
91
92
|
isOutOfStock,
|
|
92
93
|
isEverythingOutOfStock,
|
|
@@ -100,7 +101,9 @@ const ProductFullDetail = props => {
|
|
|
100
101
|
wishlistButtonProps,
|
|
101
102
|
sellerDetails
|
|
102
103
|
} = talonProps;
|
|
103
|
-
|
|
104
|
+
|
|
105
|
+
const [, { addToast }] = useToasts();
|
|
106
|
+
|
|
104
107
|
const { formatMessage } = useIntl();
|
|
105
108
|
|
|
106
109
|
const classes = useStyle(defaultClasses, props.classes);
|
|
@@ -216,12 +219,11 @@ const ProductFullDetail = props => {
|
|
|
216
219
|
);
|
|
217
220
|
// Error message for screen reader
|
|
218
221
|
const cartActionContent = isSupportedProductType ? (
|
|
219
|
-
<section className={cn(classes.actButton, 'flex gap-x-[20px] px-[
|
|
222
|
+
<section className={cn(classes.actButton, 'justify-between flex gap-x-[20px] px-[15px] py-0')}>
|
|
220
223
|
<RFQ
|
|
221
224
|
disabled={isAddToCartDisabled}
|
|
222
|
-
classes={{ rfqButton: classes.rfqButton }}
|
|
225
|
+
classes={{ rfqButton: cn(classes.rfqButton, "w-full") }}
|
|
223
226
|
/>
|
|
224
|
-
|
|
225
227
|
<Button
|
|
226
228
|
data-cy="ProductFullDetail-addToCartButton"
|
|
227
229
|
disabled={isAddToCartDisabled}
|
|
@@ -237,7 +239,7 @@ const ProductFullDetail = props => {
|
|
|
237
239
|
}
|
|
238
240
|
classes={{
|
|
239
241
|
rootClass: '!px-0 !py-3',
|
|
240
|
-
content: 'normal-case font-medium text-[14px]'
|
|
242
|
+
content: 'w-full normal-case font-medium text-[14px]'
|
|
241
243
|
}}
|
|
242
244
|
priority="high"
|
|
243
245
|
type="submit"
|
|
@@ -291,9 +293,9 @@ const ProductFullDetail = props => {
|
|
|
291
293
|
</div>
|
|
292
294
|
);
|
|
293
295
|
|
|
294
|
-
const ProductMoreInfo = (
|
|
296
|
+
const ProductMoreInfo = () => (
|
|
295
297
|
<>
|
|
296
|
-
<div className={cn(contentContainerClass,
|
|
298
|
+
<div className={cn(contentContainerClass, classes.contentContainerTabOverride)}>
|
|
297
299
|
<CustomAttributes
|
|
298
300
|
customAttributes={customAttributesDetails.list}
|
|
299
301
|
classes={{ list: classes.customAttributesList }}
|
|
@@ -385,11 +387,14 @@ const ProductFullDetail = props => {
|
|
|
385
387
|
return attr.entered_attribute_value?.value || "";
|
|
386
388
|
};
|
|
387
389
|
|
|
388
|
-
|
|
389
390
|
const setNameValue = getAttributeValue(customAttributesDetails, "card_set", true);
|
|
390
|
-
const
|
|
391
|
-
|
|
392
|
-
const
|
|
391
|
+
const cardNameValue = getAttributeValue(customAttributesDetails, "card_name", true);
|
|
392
|
+
const cardNumberValue = getAttributeValue(customAttributesDetails, "card_number", true);
|
|
393
|
+
const rarityValue = getAttributeValue(customAttributesDetails, "card_rarity", true);
|
|
394
|
+
const featureValue = getAttributeValue(customAttributesDetails, "card_feature", true);
|
|
395
|
+
const conditionValue = getAttributeValue(customAttributesDetails, "card_condition", true);
|
|
396
|
+
const foilValue = getAttributeValue(customAttributesDetails, "card_foil", true);
|
|
397
|
+
const ExpandableSection = ({ children, maxHeight = 480 }) => {
|
|
393
398
|
const [expanded, setExpanded] = useState(false);
|
|
394
399
|
const [showButton, setShowButton] = useState(false);
|
|
395
400
|
const contentRef = useRef(null);
|
|
@@ -417,50 +422,54 @@ const ProductFullDetail = props => {
|
|
|
417
422
|
const isDesktop = typeof window !== "undefined" && window.innerWidth >= 769;
|
|
418
423
|
|
|
419
424
|
return (
|
|
420
|
-
|
|
421
|
-
<div
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
{isDesktop && !expanded && showButton && (
|
|
436
|
-
<div className="absolute bottom-0 left-0 w-full h-16 bg-gradient-to-t to-transparent pointer-events-none" />
|
|
437
|
-
)}
|
|
425
|
+
<>
|
|
426
|
+
<div className="relative">
|
|
427
|
+
<div
|
|
428
|
+
ref={contentRef}
|
|
429
|
+
style={{
|
|
430
|
+
maxHeight:
|
|
431
|
+
isDesktop && showButton && !expanded
|
|
432
|
+
? `${maxHeight}px`
|
|
433
|
+
: "none",
|
|
434
|
+
overflow: "hidden",
|
|
435
|
+
transition: "max-height 0.3s ease"
|
|
436
|
+
}}
|
|
437
|
+
>
|
|
438
|
+
{children}
|
|
439
|
+
</div>
|
|
438
440
|
|
|
441
|
+
{isDesktop && !expanded && showButton && (
|
|
442
|
+
<div className={cn("absolute bottom-0 left-0 w-full h-16 bg-gradient-to-t to-transparent pointer-events-none", classes.productDetailsMaxContent)}/>
|
|
443
|
+
)}
|
|
444
|
+
</div>
|
|
439
445
|
{isDesktop && showButton && (
|
|
440
446
|
<button
|
|
441
447
|
type="button"
|
|
442
448
|
onClick={() => setExpanded(!expanded)}
|
|
443
|
-
className="mt-
|
|
449
|
+
className="mt-0 text-[14px] text-blue-600 font-medium underline focus:outline-none"
|
|
444
450
|
>
|
|
445
|
-
{expanded ? "Show Less" : "Read More"}
|
|
451
|
+
{expanded ? "Show Less" : "Read More"} <ArrowUp2 size="14" style={{
|
|
452
|
+
"display": "inline-block",
|
|
453
|
+
"marginLeft": "5px"
|
|
454
|
+
}} className={cn(expanded ? 'rotate-0 ' : 'rotate-180', 'transition-all stroke-current')} variant="Outline" />
|
|
446
455
|
</button>
|
|
447
456
|
)}
|
|
448
|
-
|
|
457
|
+
</>
|
|
449
458
|
);
|
|
450
459
|
};
|
|
451
460
|
|
|
452
461
|
const dataTabs =
|
|
453
462
|
[
|
|
463
|
+
{
|
|
464
|
+
id: 'product-more-info',
|
|
465
|
+
title: 'Product Information',
|
|
466
|
+
content: <ProductMoreInfo />
|
|
467
|
+
},
|
|
454
468
|
{
|
|
455
469
|
id: 'product-detail',
|
|
456
|
-
title: 'Description',
|
|
470
|
+
title: 'Product Description',
|
|
457
471
|
content: <ProductDescription />
|
|
458
472
|
},
|
|
459
|
-
// {
|
|
460
|
-
// id: 'product-more-info',
|
|
461
|
-
// title: 'Details',
|
|
462
|
-
// content: <ProductMoreInfo />
|
|
463
|
-
// },
|
|
464
473
|
{
|
|
465
474
|
id: 'product-tnc',
|
|
466
475
|
title: 'Term & Conditions',
|
|
@@ -527,6 +536,39 @@ const ProductFullDetail = props => {
|
|
|
527
536
|
</div>
|
|
528
537
|
) : null;
|
|
529
538
|
|
|
539
|
+
const handleAddToCart = async (...args) => {
|
|
540
|
+
try {
|
|
541
|
+
await originalHandleAddToCart(...args);
|
|
542
|
+
addToast({
|
|
543
|
+
type: 'success',
|
|
544
|
+
message: formatMessage({
|
|
545
|
+
id: 'productFullDetail.addToCartSuccess',
|
|
546
|
+
defaultMessage: 'Product successfully added to cart!'
|
|
547
|
+
})
|
|
548
|
+
});
|
|
549
|
+
} catch (e) {
|
|
550
|
+
addToast({
|
|
551
|
+
type: 'error',
|
|
552
|
+
message: formatMessage({
|
|
553
|
+
id: 'productFullDetail.addToCartError',
|
|
554
|
+
defaultMessage: 'Failed to add product to cart.'
|
|
555
|
+
})
|
|
556
|
+
});
|
|
557
|
+
}
|
|
558
|
+
};
|
|
559
|
+
|
|
560
|
+
useEffect(() => {
|
|
561
|
+
const toastRoot = document.getElementById('toast-root');
|
|
562
|
+
if (toastRoot) {
|
|
563
|
+
toastRoot.classList.add('toast-center-bottom');
|
|
564
|
+
}
|
|
565
|
+
return () => {
|
|
566
|
+
if (toastRoot) {
|
|
567
|
+
toastRoot.classList.remove('toast-center-bottom');
|
|
568
|
+
}
|
|
569
|
+
};
|
|
570
|
+
}, []);
|
|
571
|
+
|
|
530
572
|
return (
|
|
531
573
|
<Fragment>
|
|
532
574
|
{breadcrumbs}
|
|
@@ -551,32 +593,42 @@ const ProductFullDetail = props => {
|
|
|
551
593
|
aria-live="polite"
|
|
552
594
|
className={cn(
|
|
553
595
|
classes.productName,
|
|
554
|
-
'!font-medium leading-[
|
|
596
|
+
'!font-medium leading-[1] mb-1.5 line-clamp-2 !text-[1.5rem]'
|
|
555
597
|
)}
|
|
556
598
|
data-cy="ProductFullDetail-productName"
|
|
557
599
|
>
|
|
558
600
|
{productDetails.name}
|
|
559
601
|
</h1>
|
|
560
|
-
{setNameValue && (
|
|
561
|
-
<div className="text-gray-400 text-sm mb-2">{setNameValue}</div>
|
|
562
|
-
)}
|
|
563
602
|
</div>
|
|
564
|
-
<section className="bottom_right-container block sm_flex md_flex lg_flex xl_flex 2xl_flex gap-[7px]">
|
|
565
|
-
<section className='right_left-container'>
|
|
566
|
-
<ExpandableSection
|
|
567
|
-
<div
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
603
|
+
<section className="bottom_right-container justify-center gap-x-6 block sm_flex md_flex lg_flex xl_flex 2xl_flex gap-[7px]">
|
|
604
|
+
<section className='right_left-container w-full'>
|
|
605
|
+
<ExpandableSection>
|
|
606
|
+
<div className="text-sm leading-6 leading-[2.5rem]">
|
|
607
|
+
{setNameValue && (
|
|
608
|
+
<p><strong>Set Name:</strong> {setNameValue}</p>
|
|
609
|
+
)}
|
|
610
|
+
{cardNameValue && (
|
|
611
|
+
<p><strong>Card Name:</strong> {cardNameValue}</p>
|
|
612
|
+
)}
|
|
613
|
+
{cardNumberValue && (
|
|
614
|
+
<p><strong>Card Number:</strong> {cardNumberValue}</p>
|
|
615
|
+
)}
|
|
616
|
+
{rarityValue && (
|
|
617
|
+
<p><strong>Rarity:</strong> {rarityValue}</p>
|
|
618
|
+
)}
|
|
619
|
+
{featureValue && (
|
|
620
|
+
<p><strong>Feature:</strong> {featureValue}</p>
|
|
621
|
+
)}
|
|
622
|
+
{conditionValue && (
|
|
623
|
+
<p><strong>Condition:</strong> {conditionValue}</p>
|
|
624
|
+
)}
|
|
625
|
+
{foilValue && (
|
|
626
|
+
<p><strong>Foil/Non Foil:</strong> {foilValue}</p>
|
|
571
627
|
)}
|
|
572
|
-
>
|
|
573
|
-
<p className="font-bold text-[15px] mb-3">Product Details</p>
|
|
574
|
-
{shortDescription}
|
|
575
|
-
<ProductMoreInfo className="!mt-0 lg:!mt-0 !p-0" />
|
|
576
628
|
</div>
|
|
577
629
|
</ExpandableSection>
|
|
578
630
|
</section>
|
|
579
|
-
<section className='right_right-container'>
|
|
631
|
+
<section className='right_right-container w-full'>
|
|
580
632
|
<div className={cn('product_purchase-section', 'border border-[lightgray] rounded-[10px] mb-[15px]')}>
|
|
581
633
|
<div
|
|
582
634
|
className={cn(
|
|
@@ -584,13 +636,8 @@ const ProductFullDetail = props => {
|
|
|
584
636
|
'flex justify-between flex-wrap gap-y-5'
|
|
585
637
|
)}
|
|
586
638
|
>
|
|
587
|
-
<div className='flex flex-col gap-y-
|
|
588
|
-
<div className='flex flex-col gap-y-
|
|
589
|
-
{conditionValue && (
|
|
590
|
-
<div className="text-gray-600 text-sm mb-1">
|
|
591
|
-
{conditionValue}
|
|
592
|
-
</div>
|
|
593
|
-
)}
|
|
639
|
+
<div className='flex flex-col gap-y-2 pl-[1rem] pt-[1rem]'>
|
|
640
|
+
<div className='flex flex-col gap-y-1'>
|
|
594
641
|
<p
|
|
595
642
|
data-cy="ProductFullDetail-productPrice"
|
|
596
643
|
className={cn(
|
|
@@ -613,7 +660,7 @@ const ProductFullDetail = props => {
|
|
|
613
660
|
<div className='flex flex-col xs_items-center md_items-start gap-[6px] relative'>
|
|
614
661
|
<div className="gap-x-[10px] gap-y-1 flex xs_flex-col md_flex-row xs_items-center md_items-start relative">
|
|
615
662
|
<Link to={"/seller/"+sellerDetails.url_key} class="flex items-center justify-center gap-[5px] py-1 relative bg-white">
|
|
616
|
-
<div class="flex items-center justify-center gap-[
|
|
663
|
+
<div class="flex items-center justify-center gap-[5px] relative">
|
|
617
664
|
<p>Sold by</p>
|
|
618
665
|
<div class="relative xs_hidden lg_flex w-fit font-medium text-[#f76b1c] text-[14px] tracking-[0] leading-[20px] whitespace-nowrap">
|
|
619
666
|
{sellerDetails ? sellerDetails.name : ''}
|
|
@@ -633,7 +680,7 @@ const ProductFullDetail = props => {
|
|
|
633
680
|
{ options &&
|
|
634
681
|
<section className={classes.options}>{options}</section>
|
|
635
682
|
}
|
|
636
|
-
<section className={cn(classes.quantity, '
|
|
683
|
+
<section className={cn(classes.quantity, 'pb-[20px] pt-[10px] !border-none')}>
|
|
637
684
|
<div className='product_group-actions flex gap-x-[18px] gap-y-4 pl-[1rem] items-center mt-2 lg_mt-0 mb-6 lg_mb-0'>
|
|
638
685
|
<QuantityStepper
|
|
639
686
|
min={1}
|
|
@@ -657,9 +704,12 @@ const ProductFullDetail = props => {
|
|
|
657
704
|
</div>
|
|
658
705
|
</section>
|
|
659
706
|
</div>
|
|
707
|
+
<div className={cn('product_otherlink-section', 'border border-[lightgray] rounded-[10px] mb-[15px]')}>
|
|
708
|
+
<LinkToOtherStores productDetails={productDetails} />
|
|
709
|
+
</div>
|
|
660
710
|
<section>
|
|
661
711
|
<div
|
|
662
|
-
className="text-center pt-3 pb-3 cursor-pointer border border-[lightgray] rounded-[10px]
|
|
712
|
+
className="text-center pt-3 pb-3 cursor-pointer border border-[lightgray] rounded-[10px]"
|
|
663
713
|
onClick={() => {
|
|
664
714
|
const section = document.getElementById("cross-seller-section");
|
|
665
715
|
if (section) {
|
|
@@ -667,7 +717,7 @@ const ProductFullDetail = props => {
|
|
|
667
717
|
}
|
|
668
718
|
}}
|
|
669
719
|
>
|
|
670
|
-
<span className="font-bold underline">
|
|
720
|
+
<span className="font-bold underline text-[14px]">
|
|
671
721
|
View {totalListings} Other Listings
|
|
672
722
|
</span>
|
|
673
723
|
<p className="text-sm text-gray-600">
|
|
@@ -675,9 +725,6 @@ const ProductFullDetail = props => {
|
|
|
675
725
|
</p>
|
|
676
726
|
</div>
|
|
677
727
|
</section>
|
|
678
|
-
<div className={cn('product_otherlink-section', 'border border-[lightgray] rounded-[10px]')}>
|
|
679
|
-
<LinkToOtherStores productDetails={productDetails} />
|
|
680
|
-
</div>
|
|
681
728
|
</section>
|
|
682
729
|
</section>
|
|
683
730
|
</section>
|
package/src/overwrites/venia-ui/lib/components/ProductFullDetail/productFullDetail.module.css
CHANGED
|
@@ -4,6 +4,15 @@
|
|
|
4
4
|
composes: lg_items-start from global;
|
|
5
5
|
composes: gap-x-10 from global;
|
|
6
6
|
}
|
|
7
|
+
.productDetailsMaxContent{
|
|
8
|
+
background: linear-gradient(0deg,#fff 20px,#fff0);
|
|
9
|
+
position: absolute;
|
|
10
|
+
bottom: 0;
|
|
11
|
+
left: 0;
|
|
12
|
+
width: 100%;
|
|
13
|
+
height: 30%;
|
|
14
|
+
content: "";
|
|
15
|
+
}
|
|
7
16
|
.rfqButton {
|
|
8
17
|
padding: 10px 0px;
|
|
9
18
|
}
|
|
@@ -12,6 +21,9 @@
|
|
|
12
21
|
}
|
|
13
22
|
.customAttributesList {
|
|
14
23
|
padding-left: 0 !important;
|
|
24
|
+
column-count: 2;
|
|
25
|
+
column-gap: 2rem;
|
|
26
|
+
list-style: none;
|
|
15
27
|
}
|
|
16
28
|
.contentContainerTabOverride {
|
|
17
29
|
max-width: none !important;
|
|
@@ -48,6 +60,12 @@
|
|
|
48
60
|
grid-area: title; */
|
|
49
61
|
}
|
|
50
62
|
|
|
63
|
+
.productDetailTabs {
|
|
64
|
+
border-bottom: 1px solid #d3d3d3;
|
|
65
|
+
padding-bottom: 10px;
|
|
66
|
+
margin-bottom: 15px;
|
|
67
|
+
}
|
|
68
|
+
|
|
51
69
|
.productName {
|
|
52
70
|
composes: font-medium from global;
|
|
53
71
|
composes: text-colorDefault from global;
|
|
@@ -236,4 +254,23 @@
|
|
|
236
254
|
.leftContainer {
|
|
237
255
|
composes: max-w-[100%] from global;
|
|
238
256
|
}
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
/* productFullDetail.module.css */
|
|
260
|
+
:global(#toast-root).toast-center-bottom {
|
|
261
|
+
position: fixed !important;
|
|
262
|
+
left: 50% !important;
|
|
263
|
+
bottom: 2rem !important;
|
|
264
|
+
right: auto !important;
|
|
265
|
+
top: auto !important;
|
|
266
|
+
transform: translateX(-50%) !important;
|
|
267
|
+
z-index: 9999 !important;
|
|
268
|
+
margin: 0 !important;
|
|
269
|
+
max-width: 90vw !important;
|
|
270
|
+
min-width: 320px !important;
|
|
271
|
+
width: auto !important;
|
|
272
|
+
display: flex !important;
|
|
273
|
+
flex-direction: column !important;
|
|
274
|
+
align-items: center !important;
|
|
275
|
+
justify-content: flex-end !important;
|
|
239
276
|
}
|
|
@@ -22,6 +22,7 @@
|
|
|
22
22
|
}
|
|
23
23
|
|
|
24
24
|
.imageContainer {
|
|
25
|
+
composes: h-full from global;
|
|
25
26
|
composes: w-full from global;
|
|
26
27
|
grid-area: 1 / 1 / 2 / 4;
|
|
27
28
|
}
|
|
@@ -37,7 +38,7 @@
|
|
|
37
38
|
}
|
|
38
39
|
|
|
39
40
|
.carouselContainer {
|
|
40
|
-
composes: flex items-center justify-center p-4 bg-[#f7f7f8] rounded-md max-h-[
|
|
41
|
+
composes: flex items-center justify-center p-4 bg-[#f7f7f8] rounded-md h-[540px] max-h-[540px] from global;
|
|
41
42
|
}
|
|
42
43
|
|
|
43
44
|
.currentImage_placeholder {
|
|
@@ -142,7 +142,10 @@ export const useAddToFavoriteListButton = props => {
|
|
|
142
142
|
|
|
143
143
|
return {
|
|
144
144
|
buttonProps,
|
|
145
|
-
buttonText:
|
|
145
|
+
buttonText:
|
|
146
|
+
typeof props.buttonText === 'function'
|
|
147
|
+
? props.buttonText(isSelected)
|
|
148
|
+
: props.buttonText,
|
|
146
149
|
// customerFavoriteSellers,
|
|
147
150
|
errorToastProps,
|
|
148
151
|
handleClick,
|