@nyris/nyris-webapp 0.3.39 → 0.3.41
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/asset-manifest.json +16 -13
- package/build/index.html +1 -1
- package/build/{precache-manifest.3b5a3a7e1d0fa75fd54cc6ebaf64d225.js → precache-manifest.d9bae9c81b3a390a89a437be45e3a94b.js} +22 -10
- package/build/service-worker.js +1 -1
- package/build/static/css/main.86d40309.chunk.css +2 -0
- package/build/static/css/main.86d40309.chunk.css.map +1 -0
- package/build/static/js/2.1e5f374f.chunk.js +3 -0
- package/build/static/js/2.1e5f374f.chunk.js.map +1 -0
- package/build/static/js/main.909efae2.chunk.js +3 -0
- package/build/static/js/main.909efae2.chunk.js.map +1 -0
- package/build/static/media/arrow_down.c1b611db.svg +3 -0
- package/build/static/media/arrow_up.fcd6b144.svg +3 -0
- package/build/static/media/trash.1624780d.svg +3 -0
- package/package.json +3 -3
- package/src/App.tsx +14 -14
- package/src/Store/constants.ts +1 -0
- package/src/common/assets/icons/arrow_down.svg +3 -0
- package/src/common/assets/icons/arrow_up.svg +3 -0
- package/src/common/assets/icons/trash.svg +3 -0
- package/src/components/AppMobile.tsx +1 -0
- package/src/components/CadenasLoading.tsx +4 -3
- package/src/components/DragDropFile.tsx +8 -8
- package/src/components/HeaderMobile.tsx +11 -5
- package/src/components/ImageCaptureHelpModal.tsx +9 -4
- package/src/components/ImagePreviewMobile.tsx +230 -43
- package/src/components/Inquiry/InquiryBanner.tsx +1 -1
- package/src/components/Inquiry/InquiryModal.tsx +58 -57
- package/src/components/Layout.tsx +35 -3
- package/src/components/Loading.tsx +69 -0
- package/src/components/PanelResult/index.tsx +6 -2
- package/src/components/ProductDetailView.tsx +2 -2
- package/src/components/ProductList/index.tsx +4 -2
- package/src/components/appMobile.scss +4 -28
- package/src/components/common.scss +68 -3
- package/src/components/drawer/cameraCustom.tsx +2 -2
- package/src/components/input/inputSearch.tsx +3 -3
- package/src/components/results/ItemResult.tsx +2 -2
- package/src/components/rfq/RfqBanner.tsx +2 -2
- package/src/components/rfq/RfqModal.tsx +56 -53
- package/src/page/landingPage/AppMD.tsx +11 -10
- package/src/page/landingPage/common.scss +5 -81
- package/src/page/result/index.tsx +1 -1
- package/src/translations.ts +59 -8
- package/src/types.ts +1 -0
- package/build/static/css/main.37f029a6.chunk.css +0 -2
- package/build/static/css/main.37f029a6.chunk.css.map +0 -1
- package/build/static/js/2.38a0d15b.chunk.js +0 -3
- package/build/static/js/2.38a0d15b.chunk.js.map +0 -1
- package/build/static/js/main.263e0030.chunk.js +0 -3
- package/build/static/js/main.263e0030.chunk.js.map +0 -1
- /package/build/static/js/{2.38a0d15b.chunk.js.LICENSE.txt → 2.1e5f374f.chunk.js.LICENSE.txt} +0 -0
- /package/build/static/js/{main.263e0030.chunk.js.LICENSE.txt → main.909efae2.chunk.js.LICENSE.txt} +0 -0
|
@@ -77,71 +77,72 @@ export default function InquiryModal({
|
|
|
77
77
|
? getCroppedCanvas(canvas, selectedRegion)
|
|
78
78
|
: null;
|
|
79
79
|
const serviceId = 'service_zfsxshi';
|
|
80
|
-
const templateId = 'template_rxsi7w9';
|
|
81
80
|
setIsInquiryModalOpen(false);
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
81
|
+
if (settings.templateId) {
|
|
82
|
+
try {
|
|
83
|
+
setInquiryStatus('loading');
|
|
84
|
+
await emailjs.send(serviceId, settings.templateId, {
|
|
85
|
+
email_id: email.trim(),
|
|
86
|
+
information_text: information,
|
|
87
|
+
request_image: croppedImage?.toDataURL(),
|
|
88
|
+
prefilter_values: preFilterValues.join(', '),
|
|
89
|
+
});
|
|
90
|
+
setInquiryStatus('sent');
|
|
91
|
+
ToastHelper.success('Request sent successfully');
|
|
92
|
+
} catch (error) {
|
|
93
|
+
setInquiryStatus('inactive');
|
|
94
94
|
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
95
|
+
toast(
|
|
96
|
+
t => {
|
|
97
|
+
return (
|
|
98
|
+
<div
|
|
99
|
+
style={{
|
|
100
|
+
display: 'flex',
|
|
101
|
+
flexDirection: 'column',
|
|
102
|
+
fontSize: '14px',
|
|
103
|
+
width: '294px',
|
|
104
|
+
}}
|
|
105
|
+
>
|
|
106
|
+
<span style={{ fontWeight: 'bold' }}>Email not sent</span>
|
|
107
|
+
<span>{getErrorMessage(error)}</span>
|
|
108
|
+
<a
|
|
109
|
+
href={`mailto:support@nyris.io?subject=Request for quotation&body=${encodeURIComponent(`Hello,
|
|
110
110
|
I filled out the support form on the Search Suite, but it failed. I inquired the following:
|
|
111
111
|
email:
|
|
112
112
|
Pre-filter:
|
|
113
113
|
Additional Text: `)}`}
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
},
|
|
129
|
-
{
|
|
130
|
-
duration: 5000,
|
|
131
|
-
style: {
|
|
132
|
-
background: '#FFE5EF',
|
|
133
|
-
color: '#000000',
|
|
134
|
-
maxWidth: '400px',
|
|
114
|
+
style={{
|
|
115
|
+
padding: '8px 16px 8px 16px',
|
|
116
|
+
border: '1px solid #000',
|
|
117
|
+
marginTop: '16px',
|
|
118
|
+
backgroundColor: 'transparent',
|
|
119
|
+
color: '#000',
|
|
120
|
+
cursor: 'pointer',
|
|
121
|
+
width: 'fit-content',
|
|
122
|
+
}}
|
|
123
|
+
>
|
|
124
|
+
support@nyris.io
|
|
125
|
+
</a>
|
|
126
|
+
</div>
|
|
127
|
+
);
|
|
135
128
|
},
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
129
|
+
{
|
|
130
|
+
duration: 5000,
|
|
131
|
+
style: {
|
|
132
|
+
background: '#FFE5EF',
|
|
133
|
+
color: '#000000',
|
|
134
|
+
maxWidth: '400px',
|
|
135
|
+
},
|
|
136
|
+
icon: (
|
|
137
|
+
<div style={{ minWidth: '20px', minHeight: '20px' }}>
|
|
138
|
+
<ErrorIcon />
|
|
139
|
+
</div>
|
|
140
|
+
),
|
|
141
|
+
},
|
|
142
|
+
);
|
|
143
|
+
}
|
|
144
|
+
setIsInquiryModalOpen(false);
|
|
143
145
|
}
|
|
144
|
-
setIsInquiryModalOpen(false);
|
|
145
146
|
};
|
|
146
147
|
|
|
147
148
|
return (
|
|
@@ -22,6 +22,10 @@ import { createSessionByApi } from 'services/session';
|
|
|
22
22
|
import { isUndefined } from 'lodash';
|
|
23
23
|
import AppMobile from './AppMobile';
|
|
24
24
|
import jQuery from 'jquery';
|
|
25
|
+
import Loading from './Loading';
|
|
26
|
+
import i18n from 'i18next';
|
|
27
|
+
import { initReactI18next } from 'react-i18next';
|
|
28
|
+
import { translations } from 'translations';
|
|
25
29
|
|
|
26
30
|
declare var psol: any;
|
|
27
31
|
|
|
@@ -44,6 +48,15 @@ jQuery(document).ready(function () {
|
|
|
44
48
|
psol.core.setServiceBaseUrl('https://webapi.partcommunity.com');
|
|
45
49
|
});
|
|
46
50
|
|
|
51
|
+
i18n.use(initReactI18next).init({
|
|
52
|
+
resources: translations,
|
|
53
|
+
fallbackLng: 'en',
|
|
54
|
+
interpolation: {
|
|
55
|
+
escapeValue: false,
|
|
56
|
+
},
|
|
57
|
+
returnNull: false,
|
|
58
|
+
});
|
|
59
|
+
|
|
47
60
|
function Layout({ children }: ReactNode): JSX.Element {
|
|
48
61
|
const dispatch = useAppDispatch();
|
|
49
62
|
const { settings, search } = useAppSelector<AppState>((state: any) => state);
|
|
@@ -55,6 +68,9 @@ function Layout({ children }: ReactNode): JSX.Element {
|
|
|
55
68
|
let isShowHeaderMobile =
|
|
56
69
|
(isMobile && history.location?.pathname === '/result') ||
|
|
57
70
|
history.location?.pathname === '/';
|
|
71
|
+
const language = useAppSelector(state => state.settings.language);
|
|
72
|
+
|
|
73
|
+
i18n.changeLanguage(language);
|
|
58
74
|
|
|
59
75
|
useEffect(() => {
|
|
60
76
|
const createSession = async () => {
|
|
@@ -114,13 +130,29 @@ function Layout({ children }: ReactNode): JSX.Element {
|
|
|
114
130
|
};
|
|
115
131
|
}, [apiKey, appId, indexName]);
|
|
116
132
|
|
|
133
|
+
// First we get the viewport height and we multiple it by 1% to get a value for a vh unit
|
|
134
|
+
let vh = window.innerHeight * 0.01;
|
|
135
|
+
// Then we set the value in the --vh custom property to the root of the document
|
|
136
|
+
document.documentElement.style.setProperty('--vh', `${vh}px`);
|
|
137
|
+
|
|
138
|
+
useEffect(() => {
|
|
139
|
+
const handleResize = () => {
|
|
140
|
+
let vh = window.innerHeight * 0.01;
|
|
141
|
+
document.documentElement.style.setProperty('--vh', `${vh}px`);
|
|
142
|
+
};
|
|
143
|
+
|
|
144
|
+
window.addEventListener('resize', handleResize);
|
|
145
|
+
|
|
146
|
+
return () => {
|
|
147
|
+
window.removeEventListener('resize', handleResize);
|
|
148
|
+
};
|
|
149
|
+
}, []);
|
|
150
|
+
|
|
117
151
|
return (
|
|
118
152
|
<div style={{ position: 'relative' }}>
|
|
119
153
|
{loadingSearchAlgolia && (
|
|
120
154
|
<Box className="box-wrap-loading" style={{ zIndex: 99999999 }}>
|
|
121
|
-
<
|
|
122
|
-
<Box className="box-content-spin"></Box>
|
|
123
|
-
</Box>
|
|
155
|
+
<Loading />
|
|
124
156
|
</Box>
|
|
125
157
|
)}
|
|
126
158
|
<InstantSearch
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { Box } from '@material-ui/core';
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import { useTranslation } from 'react-i18next';
|
|
4
|
+
|
|
5
|
+
const LoadingSvg = () => {
|
|
6
|
+
return (
|
|
7
|
+
<svg
|
|
8
|
+
width={150}
|
|
9
|
+
height={150}
|
|
10
|
+
viewBox="0 0 150 150"
|
|
11
|
+
fill="none"
|
|
12
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
13
|
+
className="loading-spinner"
|
|
14
|
+
>
|
|
15
|
+
<path
|
|
16
|
+
fillRule="evenodd"
|
|
17
|
+
clipRule="evenodd"
|
|
18
|
+
d="M75 150C116.421 150 150 116.421 150 75C150 33.5786 116.421 0 75 0C33.5786 0 0 33.5786 0 75C0 116.421 33.5786 150 75 150ZM75 140.367C111.101 140.367 140.367 111.101 140.367 75.0003C140.367 38.8991 111.101 9.63332 75 9.63332C38.8988 9.63332 9.63304 38.8991 9.63304 75.0003C9.63304 111.101 38.8988 140.367 75 140.367Z"
|
|
19
|
+
fill="url(#paint0_linear_2236_26778)"
|
|
20
|
+
/>
|
|
21
|
+
<defs>
|
|
22
|
+
<linearGradient
|
|
23
|
+
id="paint0_linear_2236_26778"
|
|
24
|
+
x1={75}
|
|
25
|
+
y1={0}
|
|
26
|
+
x2={75}
|
|
27
|
+
y2={150}
|
|
28
|
+
gradientUnits="userSpaceOnUse"
|
|
29
|
+
>
|
|
30
|
+
<stop stopColor="#3E36DC" />
|
|
31
|
+
<stop offset={0.916667} stopColor="#1E1F31" />
|
|
32
|
+
</linearGradient>
|
|
33
|
+
</defs>
|
|
34
|
+
</svg>
|
|
35
|
+
);
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
const Loading = () => {
|
|
39
|
+
const { t } = useTranslation();
|
|
40
|
+
return (
|
|
41
|
+
<Box
|
|
42
|
+
className="loadingSpinCT"
|
|
43
|
+
style={{
|
|
44
|
+
top: 0,
|
|
45
|
+
bottom: 0,
|
|
46
|
+
display: 'flex',
|
|
47
|
+
justifyContent: 'center',
|
|
48
|
+
alignItems: 'center',
|
|
49
|
+
}}
|
|
50
|
+
>
|
|
51
|
+
<p
|
|
52
|
+
style={{
|
|
53
|
+
position: 'absolute',
|
|
54
|
+
top: '50%',
|
|
55
|
+
left: '50%',
|
|
56
|
+
transform: 'translate(-50%, -50%)',
|
|
57
|
+
fontSize: 16,
|
|
58
|
+
color: '#fff',
|
|
59
|
+
fontWeight: 300,
|
|
60
|
+
}}
|
|
61
|
+
>
|
|
62
|
+
{t('loading')}
|
|
63
|
+
</p>
|
|
64
|
+
<LoadingSvg />
|
|
65
|
+
</Box>
|
|
66
|
+
);
|
|
67
|
+
};
|
|
68
|
+
|
|
69
|
+
export default Loading;
|
|
@@ -14,6 +14,7 @@ import { useAppSelector } from 'Store/Store';
|
|
|
14
14
|
import { ExpandablePanelCustom } from './expandable-panel';
|
|
15
15
|
import { getPanelAttributes, getPanelId } from './refinements';
|
|
16
16
|
import CloseIcon from '@material-ui/icons/Close';
|
|
17
|
+
import { useTranslation } from 'react-i18next';
|
|
17
18
|
|
|
18
19
|
export type ExpandablePanelProps = CurrentRefinementsProvided & {
|
|
19
20
|
children: React.ReactNode;
|
|
@@ -103,6 +104,7 @@ export default function ExpandablePanelComponent({
|
|
|
103
104
|
);
|
|
104
105
|
const history = useHistory();
|
|
105
106
|
const isMobile = useMediaQuery({ query: '(max-width: 776px)' });
|
|
107
|
+
const { t } = useTranslation();
|
|
106
108
|
|
|
107
109
|
// Set initial panels value
|
|
108
110
|
useEffect(() => {
|
|
@@ -199,8 +201,10 @@ export default function ExpandablePanelComponent({
|
|
|
199
201
|
<IconLabel
|
|
200
202
|
icon={refinementsPanelsExpanded ? 'remove' : 'add'}
|
|
201
203
|
label={`${
|
|
202
|
-
refinementsPanelsExpanded
|
|
203
|
-
|
|
204
|
+
refinementsPanelsExpanded
|
|
205
|
+
? t('Collapse all')
|
|
206
|
+
: t('Expand all')
|
|
207
|
+
} `}
|
|
204
208
|
/>
|
|
205
209
|
</Button>
|
|
206
210
|
</Box>
|
|
@@ -347,7 +347,7 @@ function ProductDetailView(props: Props) {
|
|
|
347
347
|
)}
|
|
348
348
|
{(brand || settings.brandName) && (
|
|
349
349
|
<ProductAttribute
|
|
350
|
-
title={'Brand'}
|
|
350
|
+
title={t('Brand')}
|
|
351
351
|
value={brand || settings.brandName}
|
|
352
352
|
width={
|
|
353
353
|
dataItem[settings.field.manufacturerNumber]
|
|
@@ -467,7 +467,7 @@ function ProductDetailView(props: Props) {
|
|
|
467
467
|
}}
|
|
468
468
|
onClick={() => setCollapDescription(e => !e)}
|
|
469
469
|
>
|
|
470
|
-
View details
|
|
470
|
+
{t('View details')}
|
|
471
471
|
{collapDescription ? (
|
|
472
472
|
<KeyboardArrowUpIcon
|
|
473
473
|
htmlColor={settings.theme?.secondaryColor}
|
|
@@ -2,6 +2,7 @@ import { Box } from '@material-ui/core';
|
|
|
2
2
|
import ItemResult from 'components/results/ItemResult';
|
|
3
3
|
import { groupBy, uniqueId } from 'lodash';
|
|
4
4
|
import React, { memo, useEffect, useMemo, useState } from 'react';
|
|
5
|
+
import { useTranslation } from 'react-i18next';
|
|
5
6
|
import { connectStateResults } from 'react-instantsearch-dom';
|
|
6
7
|
import { useMediaQuery } from 'react-responsive';
|
|
7
8
|
import { useAppSelector } from 'Store/Store';
|
|
@@ -32,6 +33,7 @@ function ProductListComponent({
|
|
|
32
33
|
const [itemShowDefault, setItemShowDefault] = useState<any[]>([]);
|
|
33
34
|
const [algoliaRequest, setAlgoliaRequest] = useState(false);
|
|
34
35
|
const isMobile = useMediaQuery({ query: '(max-width: 776px)' });
|
|
36
|
+
const { t } = useTranslation();
|
|
35
37
|
|
|
36
38
|
useEffect(() => {
|
|
37
39
|
if (isSearchStalled) {
|
|
@@ -118,7 +120,7 @@ function ProductListComponent({
|
|
|
118
120
|
if (!requestImage && !search.valueTextSearch.query && !isSearchStalled) {
|
|
119
121
|
return (
|
|
120
122
|
<Box style={{ marginTop: '50px', width: '100%', textAlign: 'center' }}>
|
|
121
|
-
Please upload an image or enter a keyword to search.
|
|
123
|
+
{t('Please upload an image or enter a keyword to search.')}
|
|
122
124
|
</Box>
|
|
123
125
|
);
|
|
124
126
|
}
|
|
@@ -130,7 +132,7 @@ function ProductListComponent({
|
|
|
130
132
|
) {
|
|
131
133
|
return (
|
|
132
134
|
<Box style={{ marginTop: '50px', width: '100%', textAlign: 'center' }}>
|
|
133
|
-
No products were found matching your search criteria.
|
|
135
|
+
{t('No products were found matching your search criteria.')}
|
|
134
136
|
</Box>
|
|
135
137
|
);
|
|
136
138
|
}
|
|
@@ -444,39 +444,14 @@
|
|
|
444
444
|
//TODO: Custom css modal filter
|
|
445
445
|
@media screen and (max-width: 776px) {
|
|
446
446
|
.wrap-mobile {
|
|
447
|
-
height:
|
|
447
|
+
height: 100vh; /* Fallback for browsers that do not support Custom Properties */
|
|
448
|
+
height: calc(var(--vh, 1vh) * 100);
|
|
448
449
|
background-color: #F3F3F5;
|
|
449
450
|
display: flex;
|
|
450
451
|
flex-direction: column;
|
|
451
452
|
|
|
452
453
|
}
|
|
453
|
-
.box-filter-mobile {
|
|
454
|
-
.MuiBackdrop-root {
|
|
455
|
-
background-color: initial !important;
|
|
456
|
-
}
|
|
457
|
-
|
|
458
|
-
.MuiDrawer-paperAnchorLeft {
|
|
459
|
-
width: 100%;
|
|
460
|
-
height: calc(100svh - 60px) !important;
|
|
461
|
-
bottom: 0px !important;
|
|
462
|
-
top: initial !important;
|
|
463
|
-
background-color: #fafafa !important;
|
|
464
|
-
// box-shadow: none !important;
|
|
465
|
-
border-right: 1px solid #4d4646 !important;
|
|
466
|
-
// padding: 24px;
|
|
467
|
-
ul {
|
|
468
|
-
li {
|
|
469
|
-
list-style-type: none;
|
|
470
454
|
|
|
471
|
-
input {
|
|
472
|
-
margin-right: 15px;
|
|
473
|
-
}
|
|
474
|
-
}
|
|
475
|
-
}
|
|
476
|
-
}
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
}
|
|
480
455
|
|
|
481
456
|
#box-input-search {
|
|
482
457
|
position: relative;
|
|
@@ -504,7 +479,8 @@
|
|
|
504
479
|
.modal-togggle-cam {
|
|
505
480
|
.wrap-camera {
|
|
506
481
|
position: relative;
|
|
507
|
-
height:
|
|
482
|
+
height: 100vh;
|
|
483
|
+
height: calc(var(--vh, 1vh) * 100);
|
|
508
484
|
display: flex;
|
|
509
485
|
justify-content: center;
|
|
510
486
|
align-items: center;
|
|
@@ -22,10 +22,11 @@
|
|
|
22
22
|
padding-bottom: 6px;
|
|
23
23
|
}
|
|
24
24
|
|
|
25
|
-
.
|
|
25
|
+
.loading-spinner {
|
|
26
26
|
animation: spin 3s linear infinite;
|
|
27
27
|
}
|
|
28
28
|
|
|
29
|
+
|
|
29
30
|
@keyframes spin {
|
|
30
31
|
from {
|
|
31
32
|
transform: rotate(0deg);
|
|
@@ -35,8 +36,14 @@
|
|
|
35
36
|
}
|
|
36
37
|
}
|
|
37
38
|
|
|
39
|
+
.full-height {
|
|
40
|
+
height: 100vh; /* Fallback for browsers that do not support Custom Properties */
|
|
41
|
+
height: calc(var(--vh, 1vh) * 100);
|
|
42
|
+
}
|
|
43
|
+
|
|
38
44
|
.layout-main-newVersion {
|
|
39
|
-
height:
|
|
45
|
+
height: 100vh; /* Fallback for browsers that do not support Custom Properties */
|
|
46
|
+
height: calc(var(--vh, 1vh) * 100);
|
|
40
47
|
display: flex;
|
|
41
48
|
flex-direction: column;
|
|
42
49
|
justify-content: space-between;
|
|
@@ -63,4 +70,62 @@
|
|
|
63
70
|
|
|
64
71
|
.d-none {
|
|
65
72
|
display: none;
|
|
66
|
-
}
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
@keyframes slidedown {
|
|
76
|
+
0% { transform: translateY(0px); }
|
|
77
|
+
100% { transform: translateY(0); }
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
@keyframes slideup {
|
|
81
|
+
0% { transform: translateY(40px); }
|
|
82
|
+
100% { transform: translateY(0); }
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
.slideDown {
|
|
86
|
+
animation: slidedown 1s ease-in-out;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
.slideUp {
|
|
90
|
+
animation: slideup 0.5s ease-in-out;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
@keyframes reduceSize {
|
|
94
|
+
from {
|
|
95
|
+
height: 240px;
|
|
96
|
+
width: 240px;
|
|
97
|
+
}
|
|
98
|
+
to {
|
|
99
|
+
height: 80px;
|
|
100
|
+
width: 81px;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
.shrink-animation{
|
|
105
|
+
animation: reduceSize 0.3s;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
@keyframes extendSize {
|
|
109
|
+
from {
|
|
110
|
+
height: 80px;
|
|
111
|
+
width: 81px;
|
|
112
|
+
}
|
|
113
|
+
to {
|
|
114
|
+
height: 240px;
|
|
115
|
+
width: 240px;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
.expand-animation{
|
|
120
|
+
animation: extendSize 0.25s;
|
|
121
|
+
animation-timing-function: linear;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
.circle-layer{
|
|
125
|
+
position: absolute;
|
|
126
|
+
width: 81px;
|
|
127
|
+
height: 80px;
|
|
128
|
+
clip-path: polygon(100% 50%, 100% 100%, 0px 100%, 0px 0px, 100% 0px, 100% 50%, 80% 50%, 79.85092326096205% 47.0129646021255%, 79.40517463545632% 44.055615704018074%, 78.66718417358422% 41.157344767672875%, 77.64428635611223% 38.346956111759155%, 76.34664720110686% 35.65238064136045%, 74.78716322947984% 33.100398258091346%, 72.98133329356934% 30.716371709403823%, 70.94710454258218% 28.52399452220845%, 68.704694055762% 26.545055525959107%, 66.27638791597278% 24.799222305476857%, 63.686319720594895% 23.303845735655944%, 60.96023073099185% 22.073787540673877%, 58.12521404429015% 21.12127259149964%, 55.20944533000791% 20.455767409633758%, 52.24190280759273% 20.083886084564597%, 49.25207924785782% 20.009324539975513%, 46.26968886057545% 20.232823801994837%, 43.32437198131057% 20.752162634545293%, 40.44540049244947% 21.562179614986047%, 37.66138690608166% 22.654824430649803%, 35.00000000000001% 24.01923788646684%, 32.487689832956306% 25.6418598285243%, 30.149424872094226% 27.506563910967966%, 28.008443845105216% 29.59481786687241%, 26.086024783312336% 31.885867690235667%, 24.40127355103533% 34.35694389861506%, 22.97093396292743% 36.98348782647325%, 21.80922137642275% 39.739395700229935%, 20.927681413127665% 42.597278069291185%, 20.335075213246146% 45.528732014714755%, 20.03729236343233% 48.50462343017907%, 20.03729236343233% 51.495376569820905%, 20.335075213246146% 54.47126798528524%, 20.927681413127658% 57.40272193070879%, 21.809221376422748% 60.26060429977006%, 22.970933962927425% 63.01651217352674%, 24.401273551035327% 65.64305610138494%, 26.08602478331232% 68.11413230976432%, 28.008443845105212% 70.40518213312758%, 30.149424872094208% 72.49343608903202%, 32.487689832956306% 74.3581401714757%, 34.999999999999986% 75.98076211353316%, 37.66138690608165% 77.34517556935019%, 40.44540049244945% 78.43782038501395%, 43.32437198131056% 79.2478373654547%, 46.26968886057543% 79.76717619800516%, 49.25207924785781% 79.99067546002449%, 52.2419028075927% 79.9161139154354%, 55.209445330007895% 79.54423259036625%, 58.12521404429013% 78.87872740850037%, 60.96023073099184% 77.92621245932614%, 63.68631972059489% 76.69615426434406%, 66.27638791597279% 75.20077769452314%, 68.704694055762% 73.4549444740409%, 70.9471045425822% 71.47600547779155%, 72.98133329356934% 69.28362829059618%, 74.78716322947984% 66.89960174190865%, 76.34664720110685% 64.34761935863956%, 77.64428635611223% 61.653043888240845%, 78.66718417358422% 58.84265523232714%, 79.40517463545632% 55.94438429598193%, 79.85092326096203% 52.98703539787452%, 80% 50.00000000000001%);
|
|
129
|
+
background-color: hsla(0, 0%, 0%, 0.3);
|
|
130
|
+
z-index: 1;
|
|
131
|
+
}
|
|
@@ -193,14 +193,14 @@ function CameraCustom(props: Props) {
|
|
|
193
193
|
justifyContent: 'center',
|
|
194
194
|
alignItems: 'center',
|
|
195
195
|
overflow: 'hidden',
|
|
196
|
-
height: '100svh',
|
|
197
196
|
width: '100%',
|
|
198
197
|
}}
|
|
198
|
+
className="full-height"
|
|
199
199
|
>
|
|
200
200
|
<Webcam
|
|
201
201
|
audio={false}
|
|
202
|
-
height={'100svh'}
|
|
203
202
|
width={'100%'}
|
|
203
|
+
className="full-height"
|
|
204
204
|
imageSmoothing={true}
|
|
205
205
|
screenshotFormat="image/jpeg"
|
|
206
206
|
forceScreenshotSourceSize={true}
|
|
@@ -160,7 +160,7 @@ const SearchBox = (props: any) => {
|
|
|
160
160
|
title={
|
|
161
161
|
!isEmpty(preFilter)
|
|
162
162
|
? Object.keys(preFilter).join(', ')
|
|
163
|
-
: 'Add pre-filter'
|
|
163
|
+
: t('Add or change pre-filter')
|
|
164
164
|
}
|
|
165
165
|
placement="top"
|
|
166
166
|
arrow={true}
|
|
@@ -234,7 +234,7 @@ const SearchBox = (props: any) => {
|
|
|
234
234
|
<Box
|
|
235
235
|
style={{
|
|
236
236
|
border: `2px solid ${settings.theme?.primaryColor}`,
|
|
237
|
-
backgroundColor:
|
|
237
|
+
backgroundColor: `${settings.theme?.primaryColor}26`,
|
|
238
238
|
marginRight: '5px',
|
|
239
239
|
}}
|
|
240
240
|
className="box-image-search-thumb"
|
|
@@ -246,7 +246,7 @@ const SearchBox = (props: any) => {
|
|
|
246
246
|
alt="img_search"
|
|
247
247
|
/>
|
|
248
248
|
<Tooltip
|
|
249
|
-
title=
|
|
249
|
+
title={t('Clear image search')}
|
|
250
250
|
placement="top"
|
|
251
251
|
arrow={true}
|
|
252
252
|
>
|
|
@@ -287,7 +287,7 @@ function ItemResult(props: Props) {
|
|
|
287
287
|
>
|
|
288
288
|
{(brand || settings.brandName) && (
|
|
289
289
|
<ProductAttribute
|
|
290
|
-
title={'Brand'}
|
|
290
|
+
title={t('Brand')}
|
|
291
291
|
value={brand || settings.brandName}
|
|
292
292
|
padding="4px 8px"
|
|
293
293
|
width={{ xs: '49%' }}
|
|
@@ -296,7 +296,7 @@ function ItemResult(props: Props) {
|
|
|
296
296
|
|
|
297
297
|
{dataItem[settings.field.manufacturerNumber] && (
|
|
298
298
|
<ProductAttribute
|
|
299
|
-
title={'Mfr. No.'}
|
|
299
|
+
title={t('Mfr. No.')}
|
|
300
300
|
value={dataItem[settings.field.manufacturerNumber]}
|
|
301
301
|
padding="4px 8px"
|
|
302
302
|
width={{ xs: '49%' }}
|
|
@@ -10,7 +10,7 @@ function RfqBanner({
|
|
|
10
10
|
selectedRegion,
|
|
11
11
|
setIsRfqModalOpen,
|
|
12
12
|
}: {
|
|
13
|
-
rfqRef
|
|
13
|
+
rfqRef?: any;
|
|
14
14
|
rfqStatus: any;
|
|
15
15
|
setIsRfqModalOpen: any;
|
|
16
16
|
requestImage: any;
|
|
@@ -31,7 +31,7 @@ function RfqBanner({
|
|
|
31
31
|
alignItems: 'center',
|
|
32
32
|
}}
|
|
33
33
|
className="rfq-box"
|
|
34
|
-
ref={rfqRef}
|
|
34
|
+
// ref={rfqRef}
|
|
35
35
|
>
|
|
36
36
|
<Box
|
|
37
37
|
style={{
|