@riosst100/pwa-marketplace 3.2.5 → 3.2.7

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.
Files changed (37) hide show
  1. package/package.json +1 -1
  2. package/src/components/AgeVerification/ageVerificationModal.js +2 -2
  3. package/src/components/AgeVerification/index.js +1 -1
  4. package/src/components/BecomeSeller/becomeSeller.js +15 -12
  5. package/src/components/BecomeSellerPage/becomeSellerPage.js +29 -10
  6. package/src/components/BecomeSellerPage/becomeSellerPage.module.css +21 -0
  7. package/src/components/LiveChat/MessagesModal.js +6 -6
  8. package/src/components/RFQ/index.js +3 -2
  9. package/src/components/RFQ/modalRfq.js +186 -68
  10. package/src/components/RFQPage/orderRow.js +84 -249
  11. package/src/components/RFQPage/orderRow.module.css +146 -0
  12. package/src/components/RFQPage/quoteDetail.js +173 -86
  13. package/src/components/RFQPage/quoteList.js +87 -65
  14. package/src/components/SellerMegaMenu/sellerMegaMenu.js +3 -1
  15. package/src/components/SellerMegaMenu/sellerMegaMenuItem.js +1 -1
  16. package/src/components/SellerMegaMenu/sellerMegaMenuItem.module.css +2 -1
  17. package/src/components/SocialLogin/googleSignInButton.js +50 -0
  18. package/src/components/SocialLogin/index.js +1 -10
  19. package/src/components/SocialLogin/socialLogin.js +28 -23
  20. package/src/components/WebsiteSwitcher/websiteSwitcherItem.js +0 -7
  21. package/src/overwrites/venia-ui/lib/components/Adapter/adapter.js +3 -1
  22. package/src/overwrites/venia-ui/lib/components/CreateAccount/createAccount.js +4 -4
  23. package/src/overwrites/venia-ui/lib/components/CreateAccountPage/createAccountPage.js +28 -9
  24. package/src/overwrites/venia-ui/lib/components/CreateAccountPage/createAccountPage.module.css +12 -2
  25. package/src/overwrites/venia-ui/lib/components/OrderHistoryPage/orderRow.js +1 -1
  26. package/src/overwrites/venia-ui/lib/components/ProductFullDetail/productFullDetail.js +1 -0
  27. package/src/overwrites/venia-ui/lib/components/SignIn/signIn.js +23 -30
  28. package/src/overwrites/venia-ui/lib/components/SignInPage/signInPage.js +22 -9
  29. package/src/overwrites/venia-ui/lib/components/SignInPage/signInPage.module.css +10 -0
  30. package/src/talons/RFQ/rfq.gql.js +162 -0
  31. package/src/talons/RFQ/useRFQ.js +81 -0
  32. package/src/talons/SellerMegaMenu/megaMenu.gql.js +4 -3
  33. package/src/talons/SellerMegaMenu/useSellerMegaMenu.js +106 -33
  34. package/src/talons/SellerMegaMenu/useSellerMegaMenuItem.js +1 -1
  35. package/src/talons/SellerProducts/useProductContent.js +11 -7
  36. package/src/talons/SocialLogin/socialLogin.gql.js +106 -0
  37. package/src/talons/SocialLogin/useSocialLogin.js +169 -0
@@ -1,196 +1,115 @@
1
1
  import React from 'react';
2
- import { arrayOf, number, shape, string } from 'prop-types';
3
- import { ChevronDown, ChevronUp } from 'react-feather';
2
+ import { number, shape, string } from 'prop-types';
4
3
  import { FormattedMessage, useIntl } from 'react-intl';
5
4
  import Price from '@magento/venia-ui/lib/components/Price';
6
- import { useOrderRow } from '@magento/peregrine/lib/talons/OrderHistoryPage/useOrderRow';
7
-
8
5
  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';
6
+ import defaultClasses from './orderRow.module.css';
16
7
  import { Link } from 'react-router-dom';
8
+ import cn from 'classnames';
17
9
 
18
10
  const OrderRow = props => {
19
- const { order } = props;
11
+ const { rfq } = props;
20
12
  const { formatMessage } = useIntl();
21
13
  const {
22
- invoices,
23
- items,
24
- number: orderNumber,
25
- order_date: orderDate,
26
- shipments,
14
+ quickrfq_id,
27
15
  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;
16
+ product_name,
17
+ quantity,
18
+ price_per_product,
19
+ store_currency_code
20
+ } = rfq;
71
21
 
72
22
  const classes = useStyle(defaultClasses, props.classes);
73
23
 
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
- );
24
+ const unitPrice =
25
+ price_per_product && typeof price_per_product.value === 'number'
26
+ ? price_per_product.value
27
+ : null;
28
+ const unitCurrency =
29
+ price_per_product && price_per_product.currency
30
+ ? price_per_product.currency
31
+ : store_currency_code;
32
+
33
+ const qtyNumber = typeof quantity === 'number'
34
+ ? quantity
35
+ : (typeof quantity === 'string' ? parseFloat(quantity) : 0);
36
+ const totalPrice =
37
+ unitPrice !== null && !isNaN(qtyNumber)
38
+ ? unitPrice * qtyNumber
39
+ : null;
94
40
 
95
41
  const badgeStatusStyle = () => {
96
- return 'bg-[#F1EFF6] text-blue-700 text-[14px] font-medium 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
42
+ return 'text-blue-700 text-[14px] font-medium py-[5px] border-none';
103
43
  };
104
44
 
105
45
  return (
106
46
  <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>
47
+ <div
48
+ className='flex flex-col md_flex-row md_items-start justify-between mb-2.5'
49
+ style={{ borderBottom: '1px solid #e6e9ea', paddingBottom: '10px' }}
50
+ >
51
+ <div className='flex flex-col ml-[14px] mt-[5px]'>
52
+ <div className='flex gap-x-[15px] flex-col'>
53
+ <div className='flex gap-x-[5px] items-center'>
54
+ <span className='text-blue-700 text-[14px]'>#{quickrfq_id}</span>
55
+ </div>
112
56
  </div>
113
57
  </div>
114
58
  <div className='flex flex-col'>
115
59
  <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>
60
+ <span className={cn(classes.orderStatusBadge, badgeStatusStyle())}>{status}</span>
119
61
  </div>
120
62
  </div>
121
63
  </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>
64
+ <div className='flex flex-col md_flex-column justify-between mb-0'>
65
+ <div className='flex flex-col ml-[5px] gap-y-[10px]'>
66
+ <div
67
+ className='flex flex-row gap-4 mb-1 justify-between'
68
+ style={{ borderBottom: '1px solid #e6e9ea', paddingBottom: '10px' }}
69
+ >
70
+ <div className='flex flex-col gap-1 pb-2 last_pb-0 max-w-[375px]'>
71
+ <div className={cn(classes.productName, 'text-[14px] font-medium')}>
72
+ <span>{product_name}</span>
139
73
  </div>
140
- <div className="text-[14] text-gray-200">
141
- <span>
142
- {`${items[0]?.quantity_ordered}X`}
143
- </span>
144
- {' '}
74
+ <div className='text-[12px]'>
75
+ <span>x{`${quantity}`}</span>
76
+ </div>
77
+ </div>
78
+ <div class="flex flex-col gap-1 pb-2 last_pb-0 justify-center">
79
+ <div class="text-[14px] text-blue-700 mr-4">
145
80
  <span>
146
- <Price currencyCode={items[0]?.product_sale_price?.currency} value={items[0]?.product_sale_price?.value} />
81
+ {unitPrice !== null ? (
82
+ <Price currencyCode={unitCurrency} value={unitPrice} />
83
+ ) : (
84
+ '-'
85
+ )}
147
86
  </span>
148
87
  </div>
149
88
  </div>
150
89
  </div>
151
90
  </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
- />
91
+ <div className='flex flex-col items-end gap-4 md_pl-10 md_self-end mr-4 mb-1 pt-2'>
92
+ <div className='md_text-right flex flex-row gap-5 items-center'>
93
+ <span className='text-[14px] text-gray-200 block mb-1'>
94
+ <FormattedMessage id={'orderRow.orderTotalText'} defaultMessage={'Order Total'} />
159
95
  </span>
160
- <div className="text-lg font-medium text-left md_text-center block">{orderTotalPrice}</div>
96
+ <div className='text-lg font-medium text-blue-700'>
97
+ {totalPrice !== null ? (
98
+ <Price currencyCode={unitCurrency} value={totalPrice} />
99
+ ) : (
100
+ '-'
101
+ )}
102
+ </div>
103
+ </div>
104
+ <div className='flex flex-row gap-2 w-full justify-end items-center'>
105
+ <Link to={`/quotes/${quickrfq_id}`}>
106
+ <span className='bg-blue-700 hover:bg-white hover:text-blue-700 hover:border hover:border-blue-700 rounded-full px-[30px] py-[8px] text-[13px] font-medium text-white transition-all duration-300 ease-in-out'>
107
+ <FormattedMessage id={'orderRow.ViewTransactionDetail'} defaultMessage={'View Offer'} />
108
+ </span>
109
+ </Link>
161
110
  </div>
162
111
  </div>
163
112
  </div>
164
- <div className='flex flex-row justify-end py-[5px]'>
165
- <Link to="/quotes/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
113
  </li>
195
114
  );
196
115
  };
@@ -220,99 +139,15 @@ OrderRow.propTypes = {
220
139
  content: string,
221
140
  content_collapsed: string
222
141
  }),
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
- ),
142
+ rfq: shape({
143
+ quickrfq_id: string,
290
144
  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
- })
145
+ product_name: string,
146
+ quantity: string,
147
+ price_per_product: shape({
148
+ currency: string,
149
+ value: number
150
+ }),
151
+ store_currency_code: string
317
152
  })
318
153
  };
@@ -0,0 +1,146 @@
1
+ .root {
2
+ composes: border from global;
3
+ composes: border-gray-100 from global;
4
+ /* composes: grid from global;
5
+ composes: grid-cols-2 from global; */
6
+ composes: rounded-md from global;
7
+ composes: p-[15px] from global;
8
+ }
9
+
10
+ @media (min-width: 960px) {
11
+ .root {
12
+ /* grid-template-columns:
13
+ minmax(9rem, 1fr) minmax(9rem, 1fr) minmax(9rem, 1fr) 16rem 2fr 3rem; */
14
+ }
15
+ }
16
+
17
+ .orderNumberContainer {}
18
+
19
+ .orderDateContainer {
20
+ composes: gap-y-1 from global;
21
+ composes: grid from global;
22
+ composes: overflow-hidden from global;
23
+ composes: p-sm from global;
24
+ }
25
+
26
+ .orderTotalContainer {
27
+ composes: border-0 from global;
28
+ composes: border-b from global;
29
+ composes: border-l from global;
30
+ composes: border-solid from global;
31
+ composes: border-subtle from global;
32
+ composes: gap-y-1 from global;
33
+ composes: grid from global;
34
+ composes: overflow-hidden from global;
35
+ composes: p-sm from global;
36
+
37
+ composes: lg_border-b-0 from global;
38
+ }
39
+
40
+ .orderStatusContainer {
41
+ composes: border-0 from global;
42
+ composes: border-l-0 from global;
43
+ composes: border-solid from global;
44
+ composes: border-subtle from global;
45
+ composes: col-end-span2 from global;
46
+ composes: gap-y-1 from global;
47
+ composes: grid from global;
48
+ composes: overflow-hidden from global;
49
+ composes: p-sm from global;
50
+
51
+ composes: lg_border-b-0 from global;
52
+ composes: lg_border-l from global;
53
+ composes: lg_col-end-auto from global;
54
+ composes: lg_gap-y-3 from global;
55
+ }
56
+
57
+ .orderItemsContainer {
58
+ composes: border-0 from global;
59
+ composes: border-b from global;
60
+ composes: border-solid from global;
61
+ composes: border-subtle from global;
62
+ composes: col-end-span2 from global;
63
+ composes: overflow-hidden from global;
64
+ composes: p-0 from global;
65
+ composes: py-sm from global;
66
+
67
+ composes: lg_border-0 from global;
68
+ composes: lg_border-l from global;
69
+ composes: lg_col-end-auto from global;
70
+ composes: lg_p-0 from global;
71
+ }
72
+
73
+ .contentToggleContainer {
74
+ composes: border-0 from global;
75
+ composes: border-l from global;
76
+ composes: border-solid from global;
77
+ composes: border-subtle from global;
78
+ composes: col-start-2 from global;
79
+ composes: justify-self-end from global;
80
+ composes: overflow-hidden from global;
81
+ composes: px-xs from global;
82
+ composes: py-0 from global;
83
+ composes: row-start-1 from global;
84
+
85
+ composes: lg_border-l from global;
86
+ composes: lg_col-start-6 from global;
87
+ composes: lg_px-xs from global;
88
+ composes: lg_row-start-1 from global;
89
+ }
90
+
91
+ .orderNumberLabel,
92
+ .orderDateLabel,
93
+ .orderTotalLabel {
94
+ composes: text-2xs from global;
95
+ }
96
+
97
+ .orderNumber,
98
+ .orderDate,
99
+ .orderTotal {
100
+ composes: font-bold from global;
101
+ }
102
+
103
+ .orderStatusBadge {
104
+ /* composes: border from global;
105
+ composes: border-solid from global;
106
+ composes: border-subtle from global; */
107
+ composes: font-bold from global;
108
+ composes: justify-self-start from global;
109
+ composes: px-xs from global;
110
+ composes: py-1 from global;
111
+ /* composes: rounded-md from global; */
112
+ composes: text-2xs from global;
113
+ }
114
+
115
+ .content {
116
+ composes: border-t from global;
117
+ composes: border-solid from global;
118
+ composes: border-gray-100 from global;
119
+ /* composes: p-sm from global; */
120
+ grid-column: 1 / -1;
121
+ }
122
+
123
+ .content_collapsed {
124
+ composes: hidden from global;
125
+ }
126
+
127
+ @media (max-width: 959px) {
128
+
129
+ /* TODO @TW: cannot compose */
130
+ .orderItemsContainer:empty {
131
+ display: none;
132
+ }
133
+
134
+ .orderNumberContainer {
135
+ grid-column: 1 / span 2;
136
+ grid-row: 1;
137
+ }
138
+ }
139
+
140
+ .productName {
141
+ display: -webkit-box;
142
+ -webkit-line-clamp: 2;
143
+ -webkit-box-orient: vertical;
144
+ overflow: hidden;
145
+ line-height: normal;
146
+ }