@nyris/nyris-webapp 0.3.45 → 0.3.47
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/build/asset-manifest.json +14 -12
- package/build/index.html +1 -1
- package/build/{precache-manifest.1f75904c53fde266565cfe8519296465.js → precache-manifest.694373c4d80fe3bb40d0d6526b473852.js} +18 -10
- package/build/service-worker.js +1 -1
- package/build/static/css/main.21021ebe.chunk.css +2 -0
- package/build/static/css/main.21021ebe.chunk.css.map +1 -0
- package/build/static/js/2.3e652625.chunk.js +3 -0
- package/build/static/js/2.3e652625.chunk.js.map +1 -0
- package/build/static/js/main.37e28702.chunk.js +3 -0
- package/build/static/js/main.37e28702.chunk.js.map +1 -0
- package/build/static/media/call.c3c23966.svg +3 -0
- package/build/static/media/icon_email.71b21005.svg +3 -0
- package/package.json +4 -4
- package/src/Store/constants.ts +0 -1
- package/src/common/assets/icons/call.svg +3 -0
- package/src/common/assets/icons/icon_email.svg +2 -2
- package/src/components/CadenasWebViewer.tsx +2 -2
- package/src/components/Feedback.tsx +36 -0
- package/src/components/Header.tsx +3 -4
- package/src/components/ImagePreviewMobile.tsx +51 -134
- package/src/components/Inquiry/InquiryBanner.tsx +103 -35
- package/src/components/Inquiry/InquiryModal.tsx +7 -10
- package/src/components/Layout.tsx +5 -0
- package/src/components/ProductDetailView.tsx +21 -11
- package/src/components/SidePanel.tsx +22 -15
- package/src/components/appMobile.scss +7 -0
- package/src/components/common.scss +134 -0
- package/src/components/drawer/cameraCustom.tsx +14 -64
- package/src/components/results/ItemResult.tsx +118 -123
- package/src/components/rfq/RfqModal.tsx +7 -5
- package/src/index.css +1 -1
- package/src/page/landingPage/common.scss +3 -4
- package/src/page/result/index.tsx +60 -3
- package/src/services/Feedback.ts +4 -13
- package/src/translations.ts +7 -0
- package/src/types.ts +21 -6
- package/build/static/css/main.1b40c5ff.chunk.css +0 -2
- package/build/static/css/main.1b40c5ff.chunk.css.map +0 -1
- package/build/static/js/2.21c7c0a2.chunk.js +0 -3
- package/build/static/js/2.21c7c0a2.chunk.js.map +0 -1
- package/build/static/js/main.ed5fecc0.chunk.js +0 -3
- package/build/static/js/main.ed5fecc0.chunk.js.map +0 -1
- /package/build/static/js/{2.21c7c0a2.chunk.js.LICENSE.txt → 2.3e652625.chunk.js.LICENSE.txt} +0 -0
- /package/build/static/js/{main.ed5fecc0.chunk.js.LICENSE.txt → main.37e28702.chunk.js.LICENSE.txt} +0 -0
|
@@ -116,7 +116,7 @@ function ItemResult(props: Props) {
|
|
|
116
116
|
dataItem,
|
|
117
117
|
settings.field?.ctaLinkField ? settings.field?.ctaLinkField : 'links.main',
|
|
118
118
|
);
|
|
119
|
-
|
|
119
|
+
const manufacturerNumber = get(dataItem, settings.field.manufacturerNumber);
|
|
120
120
|
return (
|
|
121
121
|
<Box className="wrap-main-item-result">
|
|
122
122
|
<DefaultModal
|
|
@@ -174,7 +174,7 @@ function ItemResult(props: Props) {
|
|
|
174
174
|
<IconSearchImage width={16} height={16} color={'#AAABB5'} />
|
|
175
175
|
</Box>
|
|
176
176
|
)}
|
|
177
|
-
{settings.cadenas3dWebView && (
|
|
177
|
+
{settings.cadenas?.cadenas3dWebView && (
|
|
178
178
|
<Box
|
|
179
179
|
className="box-icon-modal-3d"
|
|
180
180
|
onClick={() => {
|
|
@@ -237,19 +237,17 @@ function ItemResult(props: Props) {
|
|
|
237
237
|
style={{ color: '#2B2C46' }}
|
|
238
238
|
gridGap={8}
|
|
239
239
|
>
|
|
240
|
-
{
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
)
|
|
252
|
-
}
|
|
240
|
+
{settings.CTAButtonText && (
|
|
241
|
+
<Typography
|
|
242
|
+
className="text-f12 max-line-1 fw-700"
|
|
243
|
+
style={{
|
|
244
|
+
color: '#2B2C46',
|
|
245
|
+
marginTop: 8,
|
|
246
|
+
}}
|
|
247
|
+
>
|
|
248
|
+
{truncateString(dataItem[settings.field.productName], 45)}
|
|
249
|
+
</Typography>
|
|
250
|
+
)}
|
|
253
251
|
<Box
|
|
254
252
|
display="flex"
|
|
255
253
|
justifyContent={'space-between'}
|
|
@@ -312,10 +310,10 @@ function ItemResult(props: Props) {
|
|
|
312
310
|
/>
|
|
313
311
|
)}
|
|
314
312
|
|
|
315
|
-
{
|
|
313
|
+
{manufacturerNumber && (
|
|
316
314
|
<ProductAttribute
|
|
317
315
|
title={t('Mfr. No.')}
|
|
318
|
-
value={
|
|
316
|
+
value={manufacturerNumber}
|
|
319
317
|
padding="4px 8px"
|
|
320
318
|
width={{ xs: '49%' }}
|
|
321
319
|
/>
|
|
@@ -352,124 +350,121 @@ function ItemResult(props: Props) {
|
|
|
352
350
|
</Box>
|
|
353
351
|
)}
|
|
354
352
|
<div>
|
|
355
|
-
{
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
353
|
+
{!settings.CTAButtonText ? (
|
|
354
|
+
<Tooltip
|
|
355
|
+
title={dataItem[settings.field.productName]}
|
|
356
|
+
placement="top"
|
|
357
|
+
arrow={true}
|
|
358
|
+
disableHoverListener={
|
|
359
|
+
dataItem[settings.field.productName]?.length < 45
|
|
360
|
+
}
|
|
361
|
+
>
|
|
362
|
+
<Box
|
|
363
|
+
style={{
|
|
364
|
+
boxShadow: '-2px 2px 4px rgba(170, 171, 181, 0.5)',
|
|
365
|
+
// marginBottom: 22,
|
|
366
|
+
height: 40,
|
|
367
|
+
background: settings.theme?.primaryColor,
|
|
368
|
+
borderRadius: 4,
|
|
369
|
+
padding: '0px 8px',
|
|
370
|
+
marginTop: '8px',
|
|
371
|
+
}}
|
|
372
|
+
display={'flex'}
|
|
373
|
+
justifyItems={'center'}
|
|
374
|
+
alignItems={'center'}
|
|
375
|
+
justifyContent={'space-between'}
|
|
365
376
|
>
|
|
366
377
|
<Box
|
|
367
378
|
style={{
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
379
|
+
display: 'flex',
|
|
380
|
+
justifyContent: 'space-between',
|
|
381
|
+
width: '100%',
|
|
382
|
+
padding: 0,
|
|
383
|
+
cursor: ctaLink ? 'pointer' : 'normal',
|
|
384
|
+
}}
|
|
385
|
+
onClick={() => {
|
|
386
|
+
if (ctaLink) {
|
|
387
|
+
feedbackConversionEpic(state, indexItem, dataItem.sku);
|
|
388
|
+
window.open(`${ctaLink}`, '_blank');
|
|
389
|
+
}
|
|
375
390
|
}}
|
|
376
|
-
display={'flex'}
|
|
377
|
-
justifyItems={'center'}
|
|
378
|
-
alignItems={'center'}
|
|
379
|
-
justifyContent={'space-between'}
|
|
380
391
|
>
|
|
381
|
-
<
|
|
392
|
+
<Typography
|
|
393
|
+
className="text-white max-line-2"
|
|
382
394
|
style={{
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
feedbackConversionEpic(state, indexItem, dataItem.sku);
|
|
392
|
-
window.open(`${ctaLink}`, '_blank');
|
|
393
|
-
}
|
|
395
|
+
overflow: 'hidden',
|
|
396
|
+
textOverflow: 'ellipsis',
|
|
397
|
+
fontWeight: 500,
|
|
398
|
+
fontSize: '12px',
|
|
399
|
+
letterSpacing: '0.27px',
|
|
400
|
+
wordBreak: 'break-all',
|
|
401
|
+
maxWidth: !isMobile && ctaLink ? '136px' : '164x',
|
|
402
|
+
paddingRight: '8px',
|
|
394
403
|
}}
|
|
404
|
+
align="left"
|
|
395
405
|
>
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
fontWeight: 500,
|
|
402
|
-
fontSize: '12px',
|
|
403
|
-
letterSpacing: '0.27px',
|
|
404
|
-
wordBreak: 'break-all',
|
|
405
|
-
maxWidth: !isMobile && ctaLink ? '136px' : '164x',
|
|
406
|
-
paddingRight: '8px',
|
|
407
|
-
}}
|
|
408
|
-
align="left"
|
|
409
|
-
>
|
|
410
|
-
{truncateString(dataItem[settings.field.productName], 45)}
|
|
411
|
-
</Typography>
|
|
412
|
-
{!isMobile && ctaLink && (
|
|
413
|
-
<img src={IconOpenLink} alt="more-info" width={16} />
|
|
414
|
-
)}
|
|
415
|
-
</Box>
|
|
406
|
+
{truncateString(dataItem[settings.field.productName], 45)}
|
|
407
|
+
</Typography>
|
|
408
|
+
{!isMobile && ctaLink && (
|
|
409
|
+
<img src={IconOpenLink} alt="more-info" width={16} />
|
|
410
|
+
)}
|
|
416
411
|
</Box>
|
|
417
|
-
</
|
|
418
|
-
|
|
419
|
-
|
|
412
|
+
</Box>
|
|
413
|
+
</Tooltip>
|
|
414
|
+
) : (
|
|
415
|
+
<Box
|
|
416
|
+
style={{
|
|
417
|
+
boxShadow: '-2px 2px 4px rgba(170, 171, 181, 0.5)',
|
|
418
|
+
// marginBottom: 22,
|
|
419
|
+
height: 40,
|
|
420
|
+
background: settings.theme?.primaryColor,
|
|
421
|
+
borderRadius: 4,
|
|
422
|
+
padding: '0px 8px',
|
|
423
|
+
marginTop: '8px',
|
|
424
|
+
}}
|
|
425
|
+
display={'flex'}
|
|
426
|
+
justifyItems={'center'}
|
|
427
|
+
alignItems={'center'}
|
|
428
|
+
justifyContent={'space-between'}
|
|
429
|
+
>
|
|
430
|
+
<Box
|
|
431
|
+
style={{
|
|
432
|
+
display: 'flex',
|
|
433
|
+
justifyContent: 'space-between',
|
|
434
|
+
width: '100%',
|
|
435
|
+
padding: 0,
|
|
436
|
+
cursor: ctaLink ? 'pointer' : 'normal',
|
|
437
|
+
}}
|
|
438
|
+
onClick={() => {
|
|
439
|
+
if (ctaLink) {
|
|
440
|
+
feedbackConversionEpic(state, indexItem, dataItem.sku);
|
|
441
|
+
window.open(`${ctaLink}`, '_blank');
|
|
442
|
+
}
|
|
443
|
+
}}
|
|
444
|
+
>
|
|
445
|
+
<Typography
|
|
446
|
+
className="text-white max-line-2"
|
|
420
447
|
style={{
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
448
|
+
overflow: 'hidden',
|
|
449
|
+
textOverflow: 'ellipsis',
|
|
450
|
+
fontWeight: 500,
|
|
451
|
+
fontSize: '12px',
|
|
452
|
+
letterSpacing: '0.27px',
|
|
453
|
+
wordBreak: 'break-all',
|
|
454
|
+
maxWidth: !isMobile && ctaLink ? '136px' : '164x',
|
|
455
|
+
paddingRight: '8px',
|
|
428
456
|
}}
|
|
429
|
-
|
|
430
|
-
justifyItems={'center'}
|
|
431
|
-
alignItems={'center'}
|
|
432
|
-
justifyContent={'space-between'}
|
|
457
|
+
align="left"
|
|
433
458
|
>
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
if (ctaLink) {
|
|
444
|
-
feedbackConversionEpic(state, indexItem, dataItem.sku);
|
|
445
|
-
window.open(`${ctaLink}`, '_blank');
|
|
446
|
-
}
|
|
447
|
-
}}
|
|
448
|
-
>
|
|
449
|
-
<Typography
|
|
450
|
-
className="text-white max-line-2"
|
|
451
|
-
style={{
|
|
452
|
-
overflow: 'hidden',
|
|
453
|
-
textOverflow: 'ellipsis',
|
|
454
|
-
fontWeight: 500,
|
|
455
|
-
fontSize: '12px',
|
|
456
|
-
letterSpacing: '0.27px',
|
|
457
|
-
wordBreak: 'break-all',
|
|
458
|
-
maxWidth: !isMobile && ctaLink ? '136px' : '164x',
|
|
459
|
-
paddingRight: '8px',
|
|
460
|
-
}}
|
|
461
|
-
align="left"
|
|
462
|
-
>
|
|
463
|
-
{settings.CTAButtonText}
|
|
464
|
-
</Typography>
|
|
465
|
-
{!isMobile && ctaLink && (
|
|
466
|
-
<img src={IconOpenLink} alt="more-info" width={16} />
|
|
467
|
-
)}
|
|
468
|
-
</Box>
|
|
469
|
-
</Box>
|
|
470
|
-
)
|
|
471
|
-
}
|
|
472
|
-
|
|
459
|
+
{settings.CTAButtonText}
|
|
460
|
+
</Typography>
|
|
461
|
+
{!isMobile && ctaLink && (
|
|
462
|
+
<img src={IconOpenLink} alt="more-info" width={16} />
|
|
463
|
+
)}
|
|
464
|
+
</Box>
|
|
465
|
+
</Box>
|
|
466
|
+
)}
|
|
467
|
+
|
|
473
468
|
{settings.showFeedbackAndShare && (
|
|
474
469
|
<Box
|
|
475
470
|
className="box-bottom"
|
|
@@ -65,10 +65,12 @@ export default function RfqModal({
|
|
|
65
65
|
const croppedImage = getCroppedCanvas(canvas, selectedRegion);
|
|
66
66
|
const serviceId = 'service_zfsxshi';
|
|
67
67
|
setIsRfqModalOpen(false);
|
|
68
|
-
|
|
68
|
+
const templateId = settings.rfq?.emailTemplateId;
|
|
69
|
+
|
|
70
|
+
if (templateId) {
|
|
69
71
|
try {
|
|
70
72
|
setRfqStatus('loading');
|
|
71
|
-
await emailjs.send(serviceId,
|
|
73
|
+
await emailjs.send(serviceId, templateId, {
|
|
72
74
|
email_id: email.trim(),
|
|
73
75
|
information_text: information,
|
|
74
76
|
request_image: croppedImage?.toDataURL(),
|
|
@@ -89,7 +91,7 @@ export default function RfqModal({
|
|
|
89
91
|
width: '294px',
|
|
90
92
|
}}
|
|
91
93
|
>
|
|
92
|
-
<span style={{fontWeight: 'bold'}}>Email not sent</span>
|
|
94
|
+
<span style={{ fontWeight: 'bold' }}>Email not sent</span>
|
|
93
95
|
<span>{getErrorMessage(error)}</span>
|
|
94
96
|
<a
|
|
95
97
|
href={`mailto:support@nyris.io?subject=Request for quotation&body=${information}`}
|
|
@@ -116,8 +118,8 @@ export default function RfqModal({
|
|
|
116
118
|
maxWidth: '400px',
|
|
117
119
|
},
|
|
118
120
|
icon: (
|
|
119
|
-
<div style={{minWidth: '20px', minHeight: '20px'}}>
|
|
120
|
-
<ErrorIcon/>
|
|
121
|
+
<div style={{ minWidth: '20px', minHeight: '20px' }}>
|
|
122
|
+
<ErrorIcon />
|
|
121
123
|
</div>
|
|
122
124
|
),
|
|
123
125
|
},
|
package/src/index.css
CHANGED
|
@@ -21,9 +21,7 @@
|
|
|
21
21
|
}
|
|
22
22
|
a {
|
|
23
23
|
text-decoration: none !important;
|
|
24
|
-
|
|
25
|
-
color: #3e36dc !important;
|
|
26
|
-
}
|
|
24
|
+
|
|
27
25
|
}
|
|
28
26
|
.text-gray2 {
|
|
29
27
|
color: #55566b !important;
|
|
@@ -599,7 +597,7 @@ button {
|
|
|
599
597
|
background-color: #e9e9ec;
|
|
600
598
|
padding-left: 8px;
|
|
601
599
|
padding-right: 8px;
|
|
602
|
-
padding-bottom:
|
|
600
|
+
padding-bottom: 12px;
|
|
603
601
|
min-height: 82px;
|
|
604
602
|
justify-content: space-between;
|
|
605
603
|
.box-top {
|
|
@@ -1082,6 +1080,7 @@ button {
|
|
|
1082
1080
|
border-left: 1px solid #e9e9ec;
|
|
1083
1081
|
}
|
|
1084
1082
|
.box-change-hit-items {
|
|
1083
|
+
z-index: 500;
|
|
1085
1084
|
font-family: 'Source Sans 3';
|
|
1086
1085
|
font-style: normal;
|
|
1087
1086
|
font-weight: 500;
|
|
@@ -49,6 +49,7 @@ import RfqBanner from 'components/rfq/RfqBanner';
|
|
|
49
49
|
import InquiryBanner from 'components/Inquiry/InquiryBanner';
|
|
50
50
|
import { useQuery } from 'hooks/useQuery';
|
|
51
51
|
import { ReactComponent as PoweredByNyrisImage } from 'common/assets/images/powered_by_nyris.svg';
|
|
52
|
+
import Feedback from 'components/Feedback';
|
|
52
53
|
|
|
53
54
|
interface Props {
|
|
54
55
|
allSearchResults: any;
|
|
@@ -89,6 +90,11 @@ function ResultComponent(props: Props) {
|
|
|
89
90
|
'not-scrolled' | 'scrolled' | 'user-scrolled'
|
|
90
91
|
>('not-scrolled');
|
|
91
92
|
|
|
93
|
+
const [showFeedback, setShowFeedback] = useState<
|
|
94
|
+
'not-scrolled' | 'scrolled' | 'user-scrolled'
|
|
95
|
+
>('not-scrolled');
|
|
96
|
+
|
|
97
|
+
const [showFeedbackSuccess, setShowFeedbackSuccess] = useState(false);
|
|
92
98
|
const query = useQuery();
|
|
93
99
|
const searchQuery = query.get('query') || search.valueTextSearch.query;
|
|
94
100
|
const isAlgoliaEnabled = settings.algolia?.enabled;
|
|
@@ -118,12 +124,14 @@ function ResultComponent(props: Props) {
|
|
|
118
124
|
setImageSelection(selectedRegion);
|
|
119
125
|
setRfqStatus('inactive');
|
|
120
126
|
setIsScrolled('not-scrolled');
|
|
127
|
+
setShowFeedback('not-scrolled');
|
|
121
128
|
}
|
|
122
129
|
}, [selectedRegion]);
|
|
123
130
|
|
|
124
131
|
useEffect(() => {
|
|
125
132
|
if (requestImage) {
|
|
126
133
|
setIsScrolled('not-scrolled');
|
|
134
|
+
setShowFeedback('not-scrolled');
|
|
127
135
|
executeScroll();
|
|
128
136
|
setImageSelection(DEFAULT_REGION);
|
|
129
137
|
}
|
|
@@ -330,6 +338,35 @@ function ResultComponent(props: Props) {
|
|
|
330
338
|
};
|
|
331
339
|
}, [requestImage]);
|
|
332
340
|
|
|
341
|
+
useEffect(() => {
|
|
342
|
+
if (!requestImage || !settings.showFeedback) return;
|
|
343
|
+
|
|
344
|
+
setTimeout(() => {
|
|
345
|
+
setShowFeedback(s => (s === 'not-scrolled' ? 'scrolled' : s));
|
|
346
|
+
}, 5000);
|
|
347
|
+
|
|
348
|
+
const handleScroll = () => {
|
|
349
|
+
setTimeout(() => {
|
|
350
|
+
setShowFeedback(s => (s === 'not-scrolled' ? 'scrolled' : s));
|
|
351
|
+
}, 100);
|
|
352
|
+
};
|
|
353
|
+
|
|
354
|
+
window.addEventListener('scroll', handleScroll, { capture: true });
|
|
355
|
+
|
|
356
|
+
return () => {
|
|
357
|
+
window.removeEventListener('scroll', handleScroll);
|
|
358
|
+
};
|
|
359
|
+
}, [requestImage, selectedRegion, settings.showFeedback]);
|
|
360
|
+
|
|
361
|
+
const submitFeedback = async (data: boolean) => {
|
|
362
|
+
setShowFeedbackSuccess(true);
|
|
363
|
+
setTimeout(() => {
|
|
364
|
+
setShowFeedbackSuccess(false);
|
|
365
|
+
}, 3000);
|
|
366
|
+
setShowFeedback('user-scrolled');
|
|
367
|
+
feedbackSuccessEpic(stateGlobal, data);
|
|
368
|
+
};
|
|
369
|
+
|
|
333
370
|
return (
|
|
334
371
|
<>
|
|
335
372
|
<div
|
|
@@ -428,6 +465,23 @@ function ResultComponent(props: Props) {
|
|
|
428
465
|
className={'box-item-result ml-auto mr-auto'}
|
|
429
466
|
style={{ height: '100%', paddingLeft: isMobile ? 0 : 16 }}
|
|
430
467
|
>
|
|
468
|
+
{showFeedbackSuccess && (
|
|
469
|
+
<div className={'box-item-result feedback-floating'}>
|
|
470
|
+
<div className="feedback-success">
|
|
471
|
+
Thanks for your feedback!
|
|
472
|
+
</div>
|
|
473
|
+
</div>
|
|
474
|
+
)}
|
|
475
|
+
{showFeedback === 'scrolled' && !showFeedbackSuccess && (
|
|
476
|
+
<div className={'box-item-result feedback-floating'}>
|
|
477
|
+
<Feedback
|
|
478
|
+
submitFeedback={submitFeedback}
|
|
479
|
+
onFeedbackClose={() => {
|
|
480
|
+
setShowFeedback('user-scrolled');
|
|
481
|
+
}}
|
|
482
|
+
/>
|
|
483
|
+
</div>
|
|
484
|
+
)}
|
|
431
485
|
<ProductList
|
|
432
486
|
getUrlToCanvasFile={getUrlToCanvasFile}
|
|
433
487
|
setLoading={false}
|
|
@@ -466,7 +520,8 @@ function ResultComponent(props: Props) {
|
|
|
466
520
|
{requestImage &&
|
|
467
521
|
!loadingSearchAlgolia &&
|
|
468
522
|
!props.isSearchStalled &&
|
|
469
|
-
settings.rfq &&
|
|
523
|
+
settings.rfq &&
|
|
524
|
+
settings.rfq.enabled && (
|
|
470
525
|
<RfqBanner
|
|
471
526
|
rfqRef={rfqRef}
|
|
472
527
|
rfqStatus={rfqStatus}
|
|
@@ -477,7 +532,8 @@ function ResultComponent(props: Props) {
|
|
|
477
532
|
)}
|
|
478
533
|
{!loadingSearchAlgolia &&
|
|
479
534
|
!props.isSearchStalled &&
|
|
480
|
-
settings.
|
|
535
|
+
settings.support &&
|
|
536
|
+
settings.support.enabled &&
|
|
481
537
|
(searchQuery || requestImage) && (
|
|
482
538
|
<InquiryBanner
|
|
483
539
|
requestImage={requestImage}
|
|
@@ -537,7 +593,8 @@ function ResultComponent(props: Props) {
|
|
|
537
593
|
requestImage &&
|
|
538
594
|
isMobile &&
|
|
539
595
|
props.allSearchResults.hits.length > 0 &&
|
|
540
|
-
settings.rfq &&
|
|
596
|
+
settings.rfq &&
|
|
597
|
+
settings.rfq.enabled && (
|
|
541
598
|
<div
|
|
542
599
|
style={{
|
|
543
600
|
fontSize: '14px',
|
package/src/services/Feedback.ts
CHANGED
|
@@ -4,8 +4,6 @@ import NyrisAPI, {
|
|
|
4
4
|
RectCoords,
|
|
5
5
|
} from '@nyris/nyris-api';
|
|
6
6
|
import { RootState } from '../Store/Store';
|
|
7
|
-
import { ToastHelper } from '../helpers/ToastHelper';
|
|
8
|
-
import { toast } from 'react-hot-toast';
|
|
9
7
|
|
|
10
8
|
export const feedbackSuccessEpic = async (
|
|
11
9
|
state: RootState,
|
|
@@ -15,17 +13,10 @@ export const feedbackSuccessEpic = async (
|
|
|
15
13
|
const sessionId = search.sessionId;
|
|
16
14
|
const requestId = search.requestId || search.sessionId;
|
|
17
15
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
});
|
|
23
|
-
toast.dismiss();
|
|
24
|
-
ToastHelper.success('Thank you for your feedback.');
|
|
25
|
-
return res;
|
|
26
|
-
} catch (err: any) {
|
|
27
|
-
console.log(err);
|
|
28
|
-
}
|
|
16
|
+
return await sendFeedbackByApi(settings, sessionId, requestId, {
|
|
17
|
+
event: 'feedback',
|
|
18
|
+
data: { success },
|
|
19
|
+
});
|
|
29
20
|
};
|
|
30
21
|
|
|
31
22
|
export const feedbackClickEpic = async (
|
package/src/translations.ts
CHANGED
|
@@ -25,6 +25,8 @@ export const translations = {
|
|
|
25
25
|
'No products were found matching your search criteria.',
|
|
26
26
|
'Please upload an image or enter a keyword to search.':
|
|
27
27
|
'Please upload an image or enter a keyword to search.',
|
|
28
|
+
'No matches found': 'No matches found',
|
|
29
|
+
'No matches found for your request': 'No matches found for your request',
|
|
28
30
|
},
|
|
29
31
|
},
|
|
30
32
|
de: {
|
|
@@ -53,6 +55,9 @@ export const translations = {
|
|
|
53
55
|
'Keine Produkte entsprechen Ihren Suchkriterien.',
|
|
54
56
|
'Please upload an image or enter a keyword to search.':
|
|
55
57
|
'Für die Suche bitte Bild hochladen oder Stichwort eingeben.',
|
|
58
|
+
'No matches found': 'Keine Treffer für Ihre Anfrage gefunden',
|
|
59
|
+
'No matches found for your request':
|
|
60
|
+
'Keine Treffer für Ihre Anfrage gefunden',
|
|
56
61
|
},
|
|
57
62
|
},
|
|
58
63
|
pt: {
|
|
@@ -82,6 +87,8 @@ export const translations = {
|
|
|
82
87
|
'Nenhum produto foi encontrado com estes critérios ',
|
|
83
88
|
'Please upload an image or enter a keyword to search.':
|
|
84
89
|
'Faça o upload de uma imagem ou busque via texto',
|
|
90
|
+
'No matches found': 'No matches found',
|
|
91
|
+
'No matches found for your request': 'No matches found for your request',
|
|
85
92
|
},
|
|
86
93
|
},
|
|
87
94
|
};
|
package/src/types.ts
CHANGED
|
@@ -15,6 +15,23 @@ export interface Auth0Settings {
|
|
|
15
15
|
supportEmail?: string;
|
|
16
16
|
}
|
|
17
17
|
|
|
18
|
+
export interface Support {
|
|
19
|
+
enabled?: boolean;
|
|
20
|
+
description?: string;
|
|
21
|
+
emailInquiry?: boolean;
|
|
22
|
+
supportNumber?: string;
|
|
23
|
+
emailTemplateId?: string;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
export interface Rfq {
|
|
27
|
+
enabled?: boolean;
|
|
28
|
+
emailTemplateId?: string;
|
|
29
|
+
}
|
|
30
|
+
export interface Cadenas {
|
|
31
|
+
cadenas3dWebView?: boolean;
|
|
32
|
+
cadenasAPIKey?: string;
|
|
33
|
+
catalog?: string;
|
|
34
|
+
}
|
|
18
35
|
export interface Field {
|
|
19
36
|
ctaLinkField: string;
|
|
20
37
|
productName: string;
|
|
@@ -35,14 +52,11 @@ export interface AppSettings extends NyrisAPISettings {
|
|
|
35
52
|
appTitle?: string;
|
|
36
53
|
auth0: Auth0Settings;
|
|
37
54
|
brandName?: string;
|
|
38
|
-
|
|
39
|
-
cadenasAPIKey?: string;
|
|
55
|
+
cadenas?: Cadenas;
|
|
40
56
|
cadSearch?: boolean;
|
|
41
|
-
catalog?: string;
|
|
42
57
|
exampleImages?: string[]; // deprecated
|
|
43
58
|
field: Field;
|
|
44
59
|
headerText?: string;
|
|
45
|
-
inquiry?: boolean;
|
|
46
60
|
instantRedirectPatterns: string[];
|
|
47
61
|
itemIdLabel?: string;
|
|
48
62
|
language?: string;
|
|
@@ -54,13 +68,14 @@ export interface AppSettings extends NyrisAPISettings {
|
|
|
54
68
|
productCtaText?: string;
|
|
55
69
|
refinements?: any;
|
|
56
70
|
regions: boolean;
|
|
57
|
-
rfq?:
|
|
71
|
+
rfq?: Rfq;
|
|
58
72
|
shareOption?: boolean;
|
|
73
|
+
showFeedback?: boolean;
|
|
59
74
|
showFeedbackAndShare?: boolean;
|
|
60
75
|
showGroup?: boolean;
|
|
61
76
|
showMoreInfo?: boolean; // deprecated
|
|
62
77
|
showPoweredByNyris?: boolean;
|
|
63
|
-
|
|
78
|
+
support?: Support;
|
|
64
79
|
theme: SearchSuiteSettings;
|
|
65
80
|
visualSearchFilterKey?: string;
|
|
66
81
|
warehouseVariant?: boolean;
|