@riosst100/pwa-marketplace 2.0.8 → 2.1.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/.github/workflows/dependabot.yml +28 -28
- package/i18n/en_US.json +508 -509
- package/i18n/id_ID.json +508 -509
- package/package.json +18 -22
- package/src/componentOverrideMapping.js +1 -0
- package/src/components/AccountLayout/index.js +15 -0
- package/src/components/OrderDetail/components/itemsOrdered.js +128 -0
- package/src/components/OrderDetail/components/rmaList.js +114 -0
- package/src/components/OrderDetail/orderDetail.js +204 -0
- package/src/components/OrderDetail/orderDetailPage.js +14 -0
- package/src/components/RMAPage/RMACreate.js +238 -0
- package/src/components/RMAPage/RMACreatePage.js +14 -0
- package/src/components/RMAPage/RMADetail.js +318 -0
- package/src/components/RMAPage/RMADetailPage.js +14 -0
- package/src/components/RMAPage/RMAList.js +241 -0
- package/src/components/RMAPage/RMASelect.js +36 -0
- package/src/components/RMAPage/RMASelectPage.js +13 -0
- package/src/components/RMAPage/components/productItem.js +114 -0
- package/src/components/RMAPage/components/rmaList.js +250 -0
- package/src/components/RMAPage/index.js +14 -0
- package/src/components/RMAPage/orderRow.js +318 -0
- package/src/components/commons/Checkbox/index.js +57 -0
- package/src/components/commons/Collapsible/index.js +51 -0
- package/src/components/commons/Select/index.js +29 -0
- package/src/components/commons/Textfield/index.js +20 -0
- package/src/intercept.js +35 -0
- package/src/overwrites/venia-ui/lib/components/AccountMenu/accountMenu.js +2 -1
- package/src/overwrites/venia-ui/lib/components/Breadcrumbs/breadcrumbs.module.css +38 -0
- package/src/overwrites/venia-ui/lib/components/CartPage/ProductListing/product.js +9 -2
- package/src/overwrites/venia-ui/lib/components/Footer/footer.js +1 -1
- package/src/overwrites/venia-ui/lib/components/Header/header.js +12 -1
- package/src/overwrites/venia-ui/lib/components/Newsletter/newsletter.js +1 -1
- package/src/overwrites/venia-ui/lib/components/OrderHistoryPage/orderRow.js +11 -3
- package/src/overwrites/venia-ui/lib/components/ProductFullDetail/productFullDetail.js +34 -3
- package/src/overwrites/venia-ui/lib/components/ProductFullDetail/productFullDetail.module.css +9 -0
- package/src/overwrites/venia-ui/lib/components/ProductImageCarousel/carousel.module.css +1 -1
- package/src/overwrites/venia-ui/lib/components/WishlistPage/actionMenu.ee.js +54 -0
- package/src/overwrites/venia-ui/lib/components/WishlistPage/actionMenu.js +7 -0
- package/src/overwrites/venia-ui/lib/components/WishlistPage/createWishlist.ee.js +129 -0
- package/src/overwrites/venia-ui/lib/components/WishlistPage/createWishlist.js +3 -0
- package/src/overwrites/venia-ui/lib/components/WishlistPage/createWishlist.module.css +63 -0
- package/src/overwrites/venia-ui/lib/components/WishlistPage/index.js +14 -0
- package/src/overwrites/venia-ui/lib/components/WishlistPage/wishlist.js +193 -0
- package/src/overwrites/venia-ui/lib/components/WishlistPage/wishlist.module.css +78 -0
- package/src/overwrites/venia-ui/lib/components/WishlistPage/wishlistConfirmRemoveProductDialog.js +84 -0
- package/src/overwrites/venia-ui/lib/components/WishlistPage/wishlistConfirmRemoveProductDialog.module.css +20 -0
- package/src/overwrites/venia-ui/lib/components/WishlistPage/wishlistEditFavoritesListDialog.js +96 -0
- package/src/overwrites/venia-ui/lib/components/WishlistPage/wishlistEditFavoritesListDialog.module.css +22 -0
- package/src/overwrites/venia-ui/lib/components/WishlistPage/wishlistItem.js +138 -0
- package/src/overwrites/venia-ui/lib/components/WishlistPage/wishlistItem.module.css +78 -0
- package/src/overwrites/venia-ui/lib/components/WishlistPage/wishlistItems.js +45 -0
- package/src/overwrites/venia-ui/lib/components/WishlistPage/wishlistItems.module.css +9 -0
- package/src/overwrites/venia-ui/lib/components/WishlistPage/wishlistListActionsDialog.js +61 -0
- package/src/overwrites/venia-ui/lib/components/WishlistPage/wishlistMoreActionsDialog.js +84 -0
- package/src/overwrites/venia-ui/lib/components/WishlistPage/wishlistMoreActionsDialog.module.css +19 -0
- package/src/overwrites/venia-ui/lib/components/WishlistPage/wishlistPage.js +120 -0
- package/src/overwrites/venia-ui/lib/components/WishlistPage/wishlistPage.module.css +31 -0
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import AccountLayout from '@riosst100/pwa-marketplace/src/components/AccountLayout';
|
|
2
|
+
import RMAList from '@riosst100/pwa-marketplace/src/components/RMAPage/RMAList';
|
|
3
|
+
|
|
4
|
+
import React from 'react'
|
|
5
|
+
|
|
6
|
+
const index = () => {
|
|
7
|
+
return (
|
|
8
|
+
<AccountLayout>
|
|
9
|
+
<RMAList />
|
|
10
|
+
</AccountLayout>
|
|
11
|
+
)
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export default index;
|
|
@@ -0,0 +1,318 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { arrayOf, number, shape, string } from 'prop-types';
|
|
3
|
+
import { ChevronDown, ChevronUp } from 'react-feather';
|
|
4
|
+
import { FormattedMessage, useIntl } from 'react-intl';
|
|
5
|
+
import Price from '@magento/venia-ui/lib/components/Price';
|
|
6
|
+
import { useOrderRow } from '@magento/peregrine/lib/talons/OrderHistoryPage/useOrderRow';
|
|
7
|
+
|
|
8
|
+
import { useStyle } from '@magento/venia-ui/lib/classify';
|
|
9
|
+
import Icon from '@magento/venia-ui/lib/components/Icon';
|
|
10
|
+
import CollapsedImageGallery from '@riosst100/pwa-marketplace/src/overwrites/venia-ui/lib/components/OrderHistoryPage/collapsedImageGallery';
|
|
11
|
+
import OrderDetails from '@riosst100/pwa-marketplace/src/overwrites/venia-ui/lib/components/OrderHistoryPage/OrderDetails';
|
|
12
|
+
import defaultClasses from '@riosst100/pwa-marketplace/src/overwrites/venia-ui/lib/components/OrderHistoryPage/orderRow.module.css';
|
|
13
|
+
import cn from 'classnames';
|
|
14
|
+
import { Verify } from 'iconsax-react';
|
|
15
|
+
import PlaceholderImage from '@magento/venia-ui/lib/components/Image/placeholderImage';
|
|
16
|
+
import { Link } from 'react-router-dom';
|
|
17
|
+
|
|
18
|
+
const OrderRow = props => {
|
|
19
|
+
const { order } = props;
|
|
20
|
+
const { formatMessage } = useIntl();
|
|
21
|
+
const {
|
|
22
|
+
invoices,
|
|
23
|
+
items,
|
|
24
|
+
number: orderNumber,
|
|
25
|
+
order_date: orderDate,
|
|
26
|
+
shipments,
|
|
27
|
+
status,
|
|
28
|
+
total
|
|
29
|
+
} = order;
|
|
30
|
+
const { grand_total: grandTotal } = total;
|
|
31
|
+
const { currency, value: orderTotal } = grandTotal;
|
|
32
|
+
|
|
33
|
+
// Convert date to ISO-8601 format so Safari can also parse it
|
|
34
|
+
const isoFormattedDate = orderDate.replace(' ', 'T');
|
|
35
|
+
const formattedDate = new Date(isoFormattedDate).toLocaleDateString(
|
|
36
|
+
undefined,
|
|
37
|
+
{
|
|
38
|
+
year: 'numeric',
|
|
39
|
+
month: 'short',
|
|
40
|
+
day: 'numeric'
|
|
41
|
+
}
|
|
42
|
+
);
|
|
43
|
+
|
|
44
|
+
const hasInvoice = !!invoices.length;
|
|
45
|
+
const hasShipment = !!shipments.length;
|
|
46
|
+
let derivedStatus;
|
|
47
|
+
if (status === 'Complete') {
|
|
48
|
+
derivedStatus = formatMessage({
|
|
49
|
+
id: 'Quotes.deliveredText',
|
|
50
|
+
defaultMessage: 'Delivered'
|
|
51
|
+
});
|
|
52
|
+
} else if (hasShipment) {
|
|
53
|
+
derivedStatus = formatMessage({
|
|
54
|
+
id: 'Quotes.shippedText',
|
|
55
|
+
defaultMessage: 'Shipped'
|
|
56
|
+
});
|
|
57
|
+
} else if (hasInvoice) {
|
|
58
|
+
derivedStatus = formatMessage({
|
|
59
|
+
id: 'Quotes.readyToShipText',
|
|
60
|
+
defaultMessage: 'Ready to ship'
|
|
61
|
+
});
|
|
62
|
+
} else {
|
|
63
|
+
derivedStatus = formatMessage({
|
|
64
|
+
id: 'Quotes.new',
|
|
65
|
+
defaultMessage: 'New'
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
const talonProps = useOrderRow({ items });
|
|
70
|
+
const { loading, isOpen, imagesData } = talonProps;
|
|
71
|
+
|
|
72
|
+
const classes = useStyle(defaultClasses, props.classes);
|
|
73
|
+
|
|
74
|
+
const contentClass = isOpen ? classes.content : classes.content_collapsed;
|
|
75
|
+
|
|
76
|
+
const contentToggleIconSrc = isOpen ? ChevronUp : ChevronDown;
|
|
77
|
+
|
|
78
|
+
const contentToggleIcon = <Icon src={contentToggleIconSrc} size={24} />;
|
|
79
|
+
|
|
80
|
+
const collapsedImageGalleryElement = isOpen ? null : (
|
|
81
|
+
<CollapsedImageGallery items={imagesData} />
|
|
82
|
+
);
|
|
83
|
+
|
|
84
|
+
const orderDetails = loading ? null : (
|
|
85
|
+
<OrderDetails orderData={order} imagesData={imagesData} />
|
|
86
|
+
);
|
|
87
|
+
|
|
88
|
+
const orderTotalPrice =
|
|
89
|
+
currency && orderTotal !== null ? (
|
|
90
|
+
<Price currencyCode={currency} value={orderTotal} />
|
|
91
|
+
) : (
|
|
92
|
+
'-'
|
|
93
|
+
);
|
|
94
|
+
|
|
95
|
+
const badgeStatusStyle = () => {
|
|
96
|
+
return 'bg-[#F1EFF6] text-blue-700 text-[14px] font-semibold rounded-full px-[30px] py-[5px] border-none';
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
const thumbnailProps = {
|
|
100
|
+
alt: items[0].product_name,
|
|
101
|
+
classes: { root: classes.thumbnail },
|
|
102
|
+
width: 50
|
|
103
|
+
};
|
|
104
|
+
|
|
105
|
+
return (
|
|
106
|
+
<li className={classes.root}>
|
|
107
|
+
<div className='flex flex-col md_flex-row justify-between mb-2.5'>
|
|
108
|
+
<div className='flex flex-col'>
|
|
109
|
+
<div className="flex gap-x-[15px] flex-row">
|
|
110
|
+
<span className="text-[14px] text-colorDefault">{formattedDate}</span>
|
|
111
|
+
<span className="text-gray-200 text-[14px]">{orderNumber}</span>
|
|
112
|
+
</div>
|
|
113
|
+
</div>
|
|
114
|
+
<div className='flex flex-col'>
|
|
115
|
+
<div className='flex w-full justify-start mt-2.5 md_mt-0 md_justify-end'>
|
|
116
|
+
<span className={cn(classes.orderStatusBadge, badgeStatusStyle())}>
|
|
117
|
+
{derivedStatus}
|
|
118
|
+
</span>
|
|
119
|
+
</div>
|
|
120
|
+
</div>
|
|
121
|
+
</div>
|
|
122
|
+
<div className='flex flex-col md_flex-row justify-between mb-2.5'>
|
|
123
|
+
<div className='flex flex-col'>
|
|
124
|
+
<div className='flex gap-x-[5px] mb-2.5'>
|
|
125
|
+
<Verify size={17} className='text-blue-700' variant="Bold" />
|
|
126
|
+
<span className='text-xs font-medium text-[rgba(25, 34, 42, 0.7)]'>
|
|
127
|
+
Gundam Info
|
|
128
|
+
</span>
|
|
129
|
+
</div>
|
|
130
|
+
<div className='flex flex-row'>
|
|
131
|
+
<div>
|
|
132
|
+
<PlaceholderImage {...thumbnailProps} />
|
|
133
|
+
</div>
|
|
134
|
+
<div className='flex flex-col max-w-[260px] gap-2.5'>
|
|
135
|
+
<div className={cn(classes.productName, 'text-[14] font-medium')}>
|
|
136
|
+
<span>
|
|
137
|
+
{items[0]?.product_name}
|
|
138
|
+
</span>
|
|
139
|
+
</div>
|
|
140
|
+
<div className="text-[14] text-gray-200">
|
|
141
|
+
<span>
|
|
142
|
+
{`${items[0]?.quantity_ordered}X`}
|
|
143
|
+
</span>
|
|
144
|
+
{' '}
|
|
145
|
+
<span>
|
|
146
|
+
<Price currencyCode={items[0]?.product_sale_price?.currency} value={items[0]?.product_sale_price?.value} />
|
|
147
|
+
</span>
|
|
148
|
+
</div>
|
|
149
|
+
</div>
|
|
150
|
+
</div>
|
|
151
|
+
</div>
|
|
152
|
+
<div className='flex flex-col'>
|
|
153
|
+
<div className="md_px-10 py-3 md_border-l border-gray-100">
|
|
154
|
+
<span className="text-[14] text-gray-200 text-left md_text-center block mb-2">
|
|
155
|
+
<FormattedMessage
|
|
156
|
+
id={'orderRow.orderTotalText'}
|
|
157
|
+
defaultMessage={'Order Total'}
|
|
158
|
+
/>
|
|
159
|
+
</span>
|
|
160
|
+
<div className="text-lg font-semibold text-left md_text-center block">{orderTotalPrice}</div>
|
|
161
|
+
</div>
|
|
162
|
+
</div>
|
|
163
|
+
</div>
|
|
164
|
+
<div className='flex flex-row justify-end py-[5px]'>
|
|
165
|
+
<Link to="/return/view/DEV123123123">
|
|
166
|
+
<span className="text-[13px] font-medium text-blue-700 underline">
|
|
167
|
+
<FormattedMessage
|
|
168
|
+
id={'orderRow.ViewTransactionDetail'}
|
|
169
|
+
defaultMessage={'View Transaction Detail'}
|
|
170
|
+
/>
|
|
171
|
+
</span>
|
|
172
|
+
</Link>
|
|
173
|
+
</div>
|
|
174
|
+
|
|
175
|
+
{/* <div className={classes.orderDateContainer}>
|
|
176
|
+
<span className={classes.orderDateLabel}>
|
|
177
|
+
<FormattedMessage
|
|
178
|
+
id={'orderRow.orderDateText'}
|
|
179
|
+
defaultMessage={'Order Date'}
|
|
180
|
+
/>
|
|
181
|
+
</span>
|
|
182
|
+
<span className={classes.orderDate}>{formattedDate}</span>
|
|
183
|
+
</div> */}
|
|
184
|
+
{/* <div className={classes.orderItemsContainer}>
|
|
185
|
+
{collapsedImageGalleryElement}
|
|
186
|
+
</div> */}
|
|
187
|
+
{/* <div className={classes.orderStatusContainer}>
|
|
188
|
+
<span className={classes.orderStatusBadge}>
|
|
189
|
+
{derivedStatus}
|
|
190
|
+
</span>
|
|
191
|
+
<OrderProgressBar status={derivedStatus} />
|
|
192
|
+
</div> */}
|
|
193
|
+
<div className={cn(contentClass, '!py-4 mt-4')}>{orderDetails}</div>
|
|
194
|
+
</li>
|
|
195
|
+
);
|
|
196
|
+
};
|
|
197
|
+
|
|
198
|
+
export default OrderRow;
|
|
199
|
+
|
|
200
|
+
OrderRow.propTypes = {
|
|
201
|
+
classes: shape({
|
|
202
|
+
root: string,
|
|
203
|
+
cell: string,
|
|
204
|
+
stackedCell: string,
|
|
205
|
+
label: string,
|
|
206
|
+
value: string,
|
|
207
|
+
orderNumberContainer: string,
|
|
208
|
+
orderDateContainer: string,
|
|
209
|
+
orderTotalContainer: string,
|
|
210
|
+
orderStatusContainer: string,
|
|
211
|
+
orderItemsContainer: string,
|
|
212
|
+
contentToggleContainer: string,
|
|
213
|
+
orderNumberLabel: string,
|
|
214
|
+
orderDateLabel: string,
|
|
215
|
+
orderTotalLabel: string,
|
|
216
|
+
orderNumber: string,
|
|
217
|
+
orderDate: string,
|
|
218
|
+
orderTotal: string,
|
|
219
|
+
orderStatusBadge: string,
|
|
220
|
+
content: string,
|
|
221
|
+
content_collapsed: string
|
|
222
|
+
}),
|
|
223
|
+
order: shape({
|
|
224
|
+
billing_address: shape({
|
|
225
|
+
city: string,
|
|
226
|
+
country_code: string,
|
|
227
|
+
firstname: string,
|
|
228
|
+
lastname: string,
|
|
229
|
+
postcode: string,
|
|
230
|
+
region_id: string,
|
|
231
|
+
street: arrayOf(string)
|
|
232
|
+
}),
|
|
233
|
+
items: arrayOf(
|
|
234
|
+
shape({
|
|
235
|
+
id: string,
|
|
236
|
+
product_name: string,
|
|
237
|
+
product_sale_price: shape({
|
|
238
|
+
currency: string,
|
|
239
|
+
value: number
|
|
240
|
+
}),
|
|
241
|
+
product_sku: string,
|
|
242
|
+
selected_options: arrayOf(
|
|
243
|
+
shape({
|
|
244
|
+
label: string,
|
|
245
|
+
value: string
|
|
246
|
+
})
|
|
247
|
+
),
|
|
248
|
+
quantity_ordered: number
|
|
249
|
+
})
|
|
250
|
+
),
|
|
251
|
+
invoices: arrayOf(
|
|
252
|
+
shape({
|
|
253
|
+
id: string
|
|
254
|
+
})
|
|
255
|
+
),
|
|
256
|
+
number: string,
|
|
257
|
+
order_date: string,
|
|
258
|
+
payment_methods: arrayOf(
|
|
259
|
+
shape({
|
|
260
|
+
type: string,
|
|
261
|
+
additional_data: arrayOf(
|
|
262
|
+
shape({
|
|
263
|
+
name: string,
|
|
264
|
+
value: string
|
|
265
|
+
})
|
|
266
|
+
)
|
|
267
|
+
})
|
|
268
|
+
),
|
|
269
|
+
shipping_address: shape({
|
|
270
|
+
city: string,
|
|
271
|
+
country_code: string,
|
|
272
|
+
firstname: string,
|
|
273
|
+
lastname: string,
|
|
274
|
+
postcode: string,
|
|
275
|
+
region_id: string,
|
|
276
|
+
street: arrayOf(string),
|
|
277
|
+
telephone: string
|
|
278
|
+
}),
|
|
279
|
+
shipping_method: string,
|
|
280
|
+
shipments: arrayOf(
|
|
281
|
+
shape({
|
|
282
|
+
id: string,
|
|
283
|
+
tracking: arrayOf(
|
|
284
|
+
shape({
|
|
285
|
+
number: string
|
|
286
|
+
})
|
|
287
|
+
)
|
|
288
|
+
})
|
|
289
|
+
),
|
|
290
|
+
status: string,
|
|
291
|
+
total: shape({
|
|
292
|
+
discounts: arrayOf(
|
|
293
|
+
shape({
|
|
294
|
+
amount: shape({
|
|
295
|
+
currency: string,
|
|
296
|
+
value: number
|
|
297
|
+
})
|
|
298
|
+
})
|
|
299
|
+
),
|
|
300
|
+
grand_total: shape({
|
|
301
|
+
currency: string,
|
|
302
|
+
value: number
|
|
303
|
+
}),
|
|
304
|
+
subtotal: shape({
|
|
305
|
+
currency: string,
|
|
306
|
+
value: number
|
|
307
|
+
}),
|
|
308
|
+
total_tax: shape({
|
|
309
|
+
currency: string,
|
|
310
|
+
value: number
|
|
311
|
+
}),
|
|
312
|
+
total_shipping: shape({
|
|
313
|
+
currency: string,
|
|
314
|
+
value: number
|
|
315
|
+
})
|
|
316
|
+
})
|
|
317
|
+
})
|
|
318
|
+
};
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import React, { useState } from 'react';
|
|
2
|
+
import cn from 'classnames';
|
|
3
|
+
|
|
4
|
+
const Checkbox = (props) => {
|
|
5
|
+
const {
|
|
6
|
+
onChange = () => { },
|
|
7
|
+
className = '',
|
|
8
|
+
id = '',
|
|
9
|
+
defaultChecked = false,
|
|
10
|
+
width = 20,
|
|
11
|
+
height = 20,
|
|
12
|
+
color = '#4E31DB',
|
|
13
|
+
colorUncheked = '#E6E9EA'
|
|
14
|
+
} = props;
|
|
15
|
+
|
|
16
|
+
const [checked, setChecked] = useState(defaultChecked);
|
|
17
|
+
|
|
18
|
+
const handleChange = (e) => {
|
|
19
|
+
if (e.target.checked) {
|
|
20
|
+
setChecked(true);
|
|
21
|
+
} else {
|
|
22
|
+
setChecked(false);
|
|
23
|
+
}
|
|
24
|
+
onChange(e);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
return (
|
|
28
|
+
<>
|
|
29
|
+
<div className={cn('relative', className)}>
|
|
30
|
+
{checked ? (
|
|
31
|
+
<>
|
|
32
|
+
<svg xmlns="http://www.w3.org/2000/svg" width={width} height={height} viewBox={`0 0 ${width + 4} ${height + 4}`} fill="none">
|
|
33
|
+
<path d="M9 22H15C20 22 22 20 22 15V9C22 4 20 2 15 2H9C4 2 2 4 2 9V15C2 20 4 22 9 22Z" stroke={color} stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" />
|
|
34
|
+
<path d="M7.75 12L10.58 14.83L16.25 9.17004" stroke={color} stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" />
|
|
35
|
+
</svg>
|
|
36
|
+
</>
|
|
37
|
+
) : (
|
|
38
|
+
<>
|
|
39
|
+
<svg xmlns="http://www.w3.org/2000/svg" width={width} height={height} viewBox={`0 0 ${width + 4} ${height + 4}`} fill="none">
|
|
40
|
+
<path d="M9 22H15C20 22 22 20 22 15V9C22 4 20 2 15 2H9C4 2 2 4 2 9V15C2 20 4 22 9 22Z" stroke={colorUncheked} stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" />
|
|
41
|
+
</svg>
|
|
42
|
+
</>
|
|
43
|
+
)}
|
|
44
|
+
<input
|
|
45
|
+
type="checkbox"
|
|
46
|
+
onChange={(e) => handleChange(e)}
|
|
47
|
+
className='opacity-0 absolute top-0'
|
|
48
|
+
checked={checked}
|
|
49
|
+
style={{ width: width, height: height }}
|
|
50
|
+
id={id}
|
|
51
|
+
/>
|
|
52
|
+
</div>
|
|
53
|
+
</>
|
|
54
|
+
)
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
export default Checkbox
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import React, { useState } from 'react';
|
|
2
|
+
import { ArrowDown2 } from 'iconsax-react';
|
|
3
|
+
import cn from 'classnames';
|
|
4
|
+
|
|
5
|
+
const Collapsible = (props) => {
|
|
6
|
+
const {
|
|
7
|
+
rootClassName,
|
|
8
|
+
expanded = false,
|
|
9
|
+
children = '',
|
|
10
|
+
content = '',
|
|
11
|
+
title = 'title',
|
|
12
|
+
contentWrapperClassName,
|
|
13
|
+
} = props
|
|
14
|
+
const [expand, setExpand] = useState(expanded);
|
|
15
|
+
|
|
16
|
+
return (
|
|
17
|
+
<>
|
|
18
|
+
<div className={cn('w-full border-t border-gray-100', rootClassName)}>
|
|
19
|
+
<div
|
|
20
|
+
className={cn(
|
|
21
|
+
'flex justify-between items-center',
|
|
22
|
+
'px-2.5 py-[18px] cursor-pointer'
|
|
23
|
+
)}
|
|
24
|
+
onClick={() => setExpand(!expand)}
|
|
25
|
+
>
|
|
26
|
+
<span className='text-[16px] font-semibold'>
|
|
27
|
+
{title}
|
|
28
|
+
</span>
|
|
29
|
+
<ArrowDown2
|
|
30
|
+
className={cn(
|
|
31
|
+
'transition-all',
|
|
32
|
+
expand ? 'rotate-180' : 'rotate-0',
|
|
33
|
+
)}
|
|
34
|
+
size={16}
|
|
35
|
+
/>
|
|
36
|
+
</div>
|
|
37
|
+
<div
|
|
38
|
+
className={cn(
|
|
39
|
+
' transition-all mt-2.5 duration-300 ease-in-out overflow-hidden border-b border-gray-100',
|
|
40
|
+
expand ? 'h-auto opacity-100' : 'h-0 opacity-0',
|
|
41
|
+
contentWrapperClassName,
|
|
42
|
+
)}
|
|
43
|
+
>
|
|
44
|
+
{children ? children : content}
|
|
45
|
+
</div>
|
|
46
|
+
</div>
|
|
47
|
+
</>
|
|
48
|
+
)
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
export default Collapsible
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import cx from 'classnames';
|
|
3
|
+
|
|
4
|
+
const Select = (props) => {
|
|
5
|
+
const {
|
|
6
|
+
wrapperClassname,
|
|
7
|
+
className,
|
|
8
|
+
options = []
|
|
9
|
+
} = props;
|
|
10
|
+
|
|
11
|
+
return (
|
|
12
|
+
<div className={cx('flex', wrapperClassname)}>
|
|
13
|
+
<select
|
|
14
|
+
className={cx('border rounded-md border-gray-100 p-2 focus-visible_outline-none', className)}
|
|
15
|
+
>
|
|
16
|
+
<option value=''>
|
|
17
|
+
Choose Option
|
|
18
|
+
</option>
|
|
19
|
+
{options.map((item) => (
|
|
20
|
+
<option value={item.value}>
|
|
21
|
+
{item.label}
|
|
22
|
+
</option>
|
|
23
|
+
))}
|
|
24
|
+
</select>
|
|
25
|
+
</div>
|
|
26
|
+
)
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export default Select
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import cx from 'classnames';
|
|
3
|
+
|
|
4
|
+
const index = (props) => {
|
|
5
|
+
const {
|
|
6
|
+
wrapperClassname,
|
|
7
|
+
className,
|
|
8
|
+
value
|
|
9
|
+
} = props;
|
|
10
|
+
return (
|
|
11
|
+
<div className={cx('flex', wrapperClassname)}>
|
|
12
|
+
<input
|
|
13
|
+
className={cx('w-full p-2 border border-gray-100 rounded-md focus-visible_outline-none', className)}
|
|
14
|
+
value={value}
|
|
15
|
+
/>
|
|
16
|
+
</div>
|
|
17
|
+
)
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export default index
|
package/src/intercept.js
CHANGED
|
@@ -149,6 +149,41 @@ module.exports = targets => {
|
|
|
149
149
|
pattern: "/quotes/:urlKey",
|
|
150
150
|
path: require.resolve("./components/RFQPage/quoteDetailPage.js"),
|
|
151
151
|
authed: true,
|
|
152
|
+
},
|
|
153
|
+
{
|
|
154
|
+
exact: true,
|
|
155
|
+
name: "RMA",
|
|
156
|
+
pattern: "/return",
|
|
157
|
+
path: require.resolve("./components/RMAPage/index.js"),
|
|
158
|
+
authed: true,
|
|
159
|
+
},
|
|
160
|
+
{
|
|
161
|
+
exact: true,
|
|
162
|
+
name: "RMA Select",
|
|
163
|
+
pattern: "/return/select",
|
|
164
|
+
path: require.resolve("./components/RMAPage/RMASelectPage.js"),
|
|
165
|
+
authed: true,
|
|
166
|
+
},
|
|
167
|
+
{
|
|
168
|
+
exact: true,
|
|
169
|
+
name: "RMA Detail",
|
|
170
|
+
pattern: "/return/view/:urlKey",
|
|
171
|
+
path: require.resolve("./components/RMAPage/RMADetailPage.js"),
|
|
172
|
+
authed: true,
|
|
173
|
+
},
|
|
174
|
+
{
|
|
175
|
+
exact: true,
|
|
176
|
+
name: "New Return",
|
|
177
|
+
pattern: "/return/create/:urlKey",
|
|
178
|
+
path: require.resolve("./components/RMAPage/RMACreatePage.js"),
|
|
179
|
+
authed: true,
|
|
180
|
+
},
|
|
181
|
+
{
|
|
182
|
+
exact: true,
|
|
183
|
+
name: "Order Detail",
|
|
184
|
+
pattern: "/order-history/view/:urlKey",
|
|
185
|
+
path: require.resolve("./components/OrderDetail/orderDetailPage.js"),
|
|
186
|
+
authed: true,
|
|
152
187
|
}
|
|
153
188
|
];
|
|
154
189
|
|
|
@@ -8,6 +8,7 @@ import SignIn from '@magento/venia-ui/lib/components/SignIn/signIn';
|
|
|
8
8
|
import AccountMenuItems from './accountMenuItems';
|
|
9
9
|
import ForgotPassword from '@magento/venia-ui/lib/components/ForgotPassword';
|
|
10
10
|
import defaultClasses from './accountMenu.module.css';
|
|
11
|
+
import cn from 'classnames';
|
|
11
12
|
|
|
12
13
|
const AccountMenu = React.forwardRef((props, ref) => {
|
|
13
14
|
const {
|
|
@@ -86,7 +87,7 @@ const AccountMenu = React.forwardRef((props, ref) => {
|
|
|
86
87
|
}
|
|
87
88
|
|
|
88
89
|
return (
|
|
89
|
-
<aside className={rootClass} data-cy="AccountMenu-root">
|
|
90
|
+
<aside className={cn(rootClass, '!top-[57px] max-w-[1210px]')} data-cy="AccountMenu-root">
|
|
90
91
|
<div ref={ref} className={contentsClass}>
|
|
91
92
|
{accountMenuIsOpen ? dropdownContents : null}
|
|
92
93
|
</div>
|
|
@@ -4,6 +4,8 @@
|
|
|
4
4
|
composes: flex from global;
|
|
5
5
|
composes: items-center from global;
|
|
6
6
|
composes: gap-[6px] from global;
|
|
7
|
+
composes: mt-[10px] from global;
|
|
8
|
+
composes: mb-[24px] from global;
|
|
7
9
|
composes: my-[10px] from global;
|
|
8
10
|
padding-top: 20px;
|
|
9
11
|
margin-bottom: 40px;
|
|
@@ -30,4 +32,40 @@
|
|
|
30
32
|
.currentCategory {
|
|
31
33
|
composes: text-base from global;
|
|
32
34
|
composes: leading-[13px] from global;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
@media only screen and (max-width: 1023px) {
|
|
38
|
+
.text {
|
|
39
|
+
display: -webkit-box;
|
|
40
|
+
-webkit-box-orient: vertical;
|
|
41
|
+
-webkit-line-clamp: 1;
|
|
42
|
+
overflow: hidden;
|
|
43
|
+
max-width: 160px;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
.link {
|
|
47
|
+
display: -webkit-box;
|
|
48
|
+
-webkit-box-orient: vertical;
|
|
49
|
+
-webkit-line-clamp: 1;
|
|
50
|
+
overflow: hidden;
|
|
51
|
+
max-width: 160px;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
@media only screen and (max-width: 767px) {
|
|
56
|
+
.text {
|
|
57
|
+
display: -webkit-box;
|
|
58
|
+
-webkit-box-orient: vertical;
|
|
59
|
+
-webkit-line-clamp: 1;
|
|
60
|
+
overflow: hidden;
|
|
61
|
+
max-width: 100px;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
.link {
|
|
65
|
+
display: -webkit-box;
|
|
66
|
+
-webkit-box-orient: vertical;
|
|
67
|
+
-webkit-line-clamp: 1;
|
|
68
|
+
overflow: hidden;
|
|
69
|
+
max-width: 100px;
|
|
70
|
+
}
|
|
33
71
|
}
|
|
@@ -146,7 +146,7 @@ const Product = props => {
|
|
|
146
146
|
defaultMessage={' ea.'}
|
|
147
147
|
/> */}
|
|
148
148
|
</span>
|
|
149
|
-
<div className={classes.quantity}>
|
|
149
|
+
<div className={cn(classes.quantity, 'hidden sm_flex')}>
|
|
150
150
|
<Quantity
|
|
151
151
|
itemId={item.id}
|
|
152
152
|
initialValue={quantity}
|
|
@@ -186,7 +186,14 @@ const Product = props => {
|
|
|
186
186
|
</Kebab> */}
|
|
187
187
|
|
|
188
188
|
</div>
|
|
189
|
-
<div className='flex justify-end gap-2.5'>
|
|
189
|
+
<div className='flex justify-end gap-2.5 items-center mt-2 sm_mt-0'>
|
|
190
|
+
<div className={cn(classes.quantity, 'flex-auto sm_hidden')}>
|
|
191
|
+
<Quantity
|
|
192
|
+
itemId={item.id}
|
|
193
|
+
initialValue={quantity}
|
|
194
|
+
onChange={handleUpdateItemQuantity}
|
|
195
|
+
/>
|
|
196
|
+
</div>
|
|
190
197
|
{editItemSection}
|
|
191
198
|
<li>
|
|
192
199
|
<AddToListButton
|
|
@@ -24,6 +24,7 @@ import { useIntl } from 'react-intl';
|
|
|
24
24
|
import cn from 'classnames';
|
|
25
25
|
// const SearchBar = React.lazy(() => import('@magento/venia-ui/lib/components/SearchBar'));
|
|
26
26
|
const SearchBar = React.lazy(() => import('@riosst100/pwa-marketplace/src/overwrites/venia-ui/lib/components/SearchBar'));
|
|
27
|
+
import { SearchNormal } from 'iconsax-react';
|
|
27
28
|
|
|
28
29
|
import { useLogo } from '@riosst100/pwa-marketplace/src/talons/Header/useLogo';
|
|
29
30
|
import Image from '@magento/venia-ui/lib/components/Image';
|
|
@@ -85,7 +86,7 @@ const Header = props => {
|
|
|
85
86
|
<header className={cn(rootClass, '!flex flex-col !px-0 border-gray-100 ')} data-cy="Header-root">
|
|
86
87
|
<div className={cn('middle-header border-b border-gray-100')}>
|
|
87
88
|
<div className={cn('w-full max-w-[1210px] px-[15px] py-[10px] mx-[auto] flex justify-between items-center')}>
|
|
88
|
-
<div className='flex'>
|
|
89
|
+
<div className='flex items-center'>
|
|
89
90
|
<NavTrigger />
|
|
90
91
|
|
|
91
92
|
<Link
|
|
@@ -114,6 +115,16 @@ const Header = props => {
|
|
|
114
115
|
</Link>
|
|
115
116
|
</div>
|
|
116
117
|
<div className='flex flex-auto max-w-[700px]'>
|
|
118
|
+
<div className=' hidden lg_flex w-full'>
|
|
119
|
+
<Suspense fallback={searchBarFallback}>
|
|
120
|
+
<Route>
|
|
121
|
+
<SearchBar isOpen={true} ref={searchRef} />
|
|
122
|
+
</Route>
|
|
123
|
+
</Suspense>
|
|
124
|
+
</div>
|
|
125
|
+
<div className='flex w-full justify-end lg_hidden'>
|
|
126
|
+
<SearchNormal size="25" color="#280135" variant="Outline" className='mr-4' />
|
|
127
|
+
</div>
|
|
117
128
|
<Suspense fallback={searchBarFallback}>
|
|
118
129
|
<Route>
|
|
119
130
|
<SearchBar isOpen={true} ref={searchRef} />
|
|
@@ -66,7 +66,7 @@ const Newsletter = props => {
|
|
|
66
66
|
) : null;
|
|
67
67
|
|
|
68
68
|
return (
|
|
69
|
-
<div className=
|
|
69
|
+
<div className='col-span-6 gap-none grid items-start max-w-[20rem] mx-0 lg_mx-auto relative sm_col-span-3' data-cy={'Newsletter-root'}>
|
|
70
70
|
{maybeLoadingIndicator}
|
|
71
71
|
<span data-cy="Newsletter-title" className={classes.title}>
|
|
72
72
|
<FormattedMessage
|