@nyris/nyris-webapp 0.3.42 → 0.3.44
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 -12
- package/build/index.html +1 -1
- package/build/{precache-manifest.009e864ff0764cf3cf8a9b290c334099.js → precache-manifest.c92406fe2e3b0feaf429c551125e2d95.js} +26 -10
- package/build/service-worker.js +1 -1
- package/build/static/css/main.1b40c5ff.chunk.css +2 -0
- package/build/static/css/main.1b40c5ff.chunk.css.map +1 -0
- package/build/static/js/2.82ef1cd4.chunk.js +3 -0
- package/build/static/js/2.82ef1cd4.chunk.js.map +1 -0
- package/build/static/js/main.7cdac2fb.chunk.js +3 -0
- package/build/static/js/main.7cdac2fb.chunk.js.map +1 -0
- package/build/static/media/avatar.4c5346ed.svg +3 -0
- package/build/static/media/logout.07b9ef7f.svg +3 -0
- package/build/static/media/powered_by_nyris.e6766baf.svg +3 -0
- package/build/static/media/powered_by_nyris_colored.08d00bae.svg +9 -0
- package/package.json +3 -3
- package/public/index.html +4 -16
- package/src/Router.tsx +1 -0
- package/src/Store/Store.ts +2 -4
- package/src/Store/constants.ts +6 -0
- package/src/Store/search/Search.ts +10 -3
- package/src/Store/search/types.ts +1 -0
- package/src/common/assets/icons/avatar.svg +3 -0
- package/src/common/assets/icons/logout.svg +3 -0
- package/src/common/assets/images/powered_by_nyris.svg +3 -0
- package/src/common/assets/images/powered_by_nyris_colored.svg +9 -0
- package/src/components/AppMobile.tsx +1 -0
- package/src/components/AuthenticatedRoute.tsx +4 -1
- package/src/components/DragDropFile.tsx +3 -4
- package/src/components/FooterMobile.tsx +137 -24
- package/src/components/Header.tsx +120 -1
- package/src/components/HeaderMobile.tsx +230 -163
- package/src/components/ImagePreviewMobile.tsx +57 -8
- package/src/components/Layout.tsx +10 -53
- package/src/components/NoAccess.tsx +66 -0
- package/src/components/PoweredByNyris.tsx +49 -0
- package/src/components/ProductDetailView.tsx +16 -10
- package/src/components/ProductList/index.tsx +16 -93
- package/src/components/ProductList/useProductList.ts +114 -0
- package/src/components/Provider/InstantSearchProvider.tsx +66 -0
- package/src/components/appMobile.scss +2 -2
- package/src/components/common.scss +8 -1
- package/src/components/drawer/cameraCustom.tsx +3 -3
- package/src/components/input/inputSearch.tsx +86 -17
- package/src/components/pre-filter/index.tsx +58 -7
- package/src/components/results/ItemResult.tsx +6 -1
- package/src/index.tsx +1 -1
- package/src/page/landingPage/common.scss +4 -1
- package/src/page/result/index.tsx +154 -131
- package/src/services/Feedback.ts +1 -1
- package/src/services/image.ts +8 -5
- package/src/types.ts +13 -12
- package/build/static/css/main.86d40309.chunk.css +0 -2
- package/build/static/css/main.86d40309.chunk.css.map +0 -1
- package/build/static/js/2.1757789c.chunk.js +0 -3
- package/build/static/js/2.1757789c.chunk.js.map +0 -1
- package/build/static/js/main.1d184393.chunk.js +0 -3
- package/build/static/js/main.1d184393.chunk.js.map +0 -1
- package/src/Store/auth/Auth.ts +0 -33
- package/src/Store/auth/types.ts +0 -11
- package/src/Store/nyris/Nyris.ts +0 -67
- package/src/Store/nyris/types.ts +0 -11
- package/src/components/Feedback.tsx +0 -91
- /package/build/static/js/{2.1757789c.chunk.js.LICENSE.txt → 2.82ef1cd4.chunk.js.LICENSE.txt} +0 -0
- /package/build/static/js/{main.1d184393.chunk.js.LICENSE.txt → main.7cdac2fb.chunk.js.LICENSE.txt} +0 -0
- /package/src/components/{AuthProvider.tsx → Provider/AuthProvider.tsx} +0 -0
|
@@ -24,8 +24,7 @@ import {
|
|
|
24
24
|
} from 'react-instantsearch-dom';
|
|
25
25
|
import { useMediaQuery } from 'react-responsive';
|
|
26
26
|
import { feedbackRegionEpic, feedbackSuccessEpic } from 'services/Feedback';
|
|
27
|
-
import { createImage,
|
|
28
|
-
import { showFeedback, showResults } from 'Store/nyris/Nyris';
|
|
27
|
+
import { createImage, find, findRegions } from 'services/image';
|
|
29
28
|
import {
|
|
30
29
|
loadingActionResults,
|
|
31
30
|
onToggleModalItemDetail,
|
|
@@ -48,6 +47,8 @@ import useFilteredRegions from 'hooks/useFilteredRegions';
|
|
|
48
47
|
import ImagePreviewMobile from 'components/ImagePreviewMobile';
|
|
49
48
|
import RfqBanner from 'components/rfq/RfqBanner';
|
|
50
49
|
import InquiryBanner from 'components/Inquiry/InquiryBanner';
|
|
50
|
+
import { useQuery } from 'hooks/useQuery';
|
|
51
|
+
import { ReactComponent as PoweredByNyrisImage } from 'common/assets/images/powered_by_nyris.svg';
|
|
51
52
|
|
|
52
53
|
interface Props {
|
|
53
54
|
allSearchResults: any;
|
|
@@ -88,6 +89,11 @@ function ResultComponent(props: Props) {
|
|
|
88
89
|
'not-scrolled' | 'scrolled' | 'user-scrolled'
|
|
89
90
|
>('not-scrolled');
|
|
90
91
|
|
|
92
|
+
const query = useQuery();
|
|
93
|
+
const searchQuery = query.get('query') || search.valueTextSearch.query;
|
|
94
|
+
const isAlgoliaEnabled = settings.algolia?.enabled;
|
|
95
|
+
const isPostFilterEnabled = settings.postFilterOption;
|
|
96
|
+
|
|
91
97
|
useEffect(() => {
|
|
92
98
|
if (
|
|
93
99
|
!loadingSearchAlgolia &&
|
|
@@ -132,13 +138,14 @@ function ResultComponent(props: Props) {
|
|
|
132
138
|
},
|
|
133
139
|
];
|
|
134
140
|
dispatch(loadingActionResults());
|
|
135
|
-
|
|
141
|
+
|
|
142
|
+
return find({
|
|
136
143
|
image: canvas,
|
|
137
144
|
settings,
|
|
138
145
|
region: r,
|
|
139
146
|
filters: !isEmpty(preFilter) ? preFilterValues : undefined,
|
|
140
147
|
})
|
|
141
|
-
.then(res => {
|
|
148
|
+
.then((res: any) => {
|
|
142
149
|
dispatch(updateStatusLoading(false));
|
|
143
150
|
return {
|
|
144
151
|
...res,
|
|
@@ -172,7 +179,7 @@ function ResultComponent(props: Props) {
|
|
|
172
179
|
setShowAdjustInfoBasedOnConfidence(false);
|
|
173
180
|
}, 2000);
|
|
174
181
|
});
|
|
175
|
-
return
|
|
182
|
+
return;
|
|
176
183
|
}, 250),
|
|
177
184
|
[requestImage, findImageByApiNyris],
|
|
178
185
|
);
|
|
@@ -190,7 +197,6 @@ function ResultComponent(props: Props) {
|
|
|
190
197
|
// setOpenModalImage(false);
|
|
191
198
|
dispatch(onToggleModalItemDetail(false));
|
|
192
199
|
}
|
|
193
|
-
dispatch(showResults());
|
|
194
200
|
dispatch(loadingActionResults());
|
|
195
201
|
dispatch(setImageSearchInput(url));
|
|
196
202
|
let image = await createImage(url);
|
|
@@ -210,14 +216,13 @@ function ResultComponent(props: Props) {
|
|
|
210
216
|
values: Object.keys(preFilter) as string[],
|
|
211
217
|
},
|
|
212
218
|
];
|
|
213
|
-
|
|
219
|
+
find({
|
|
214
220
|
image,
|
|
215
221
|
settings,
|
|
216
222
|
region: searchRegion,
|
|
217
223
|
filters: !isEmpty(preFilter) ? preFilterValues : undefined,
|
|
218
|
-
}).then(res => {
|
|
224
|
+
}).then((res: any) => {
|
|
219
225
|
dispatch(setSearchResults(res));
|
|
220
|
-
dispatch(showFeedback());
|
|
221
226
|
dispatch(updateStatusLoading(false));
|
|
222
227
|
return;
|
|
223
228
|
});
|
|
@@ -236,7 +241,7 @@ function ResultComponent(props: Props) {
|
|
|
236
241
|
useEffect(() => {
|
|
237
242
|
document.title = 'Search results';
|
|
238
243
|
|
|
239
|
-
if (requestImage || isEmpty(
|
|
244
|
+
if (requestImage || isEmpty(searchQuery)) return;
|
|
240
245
|
const preFilterValues = Object.keys(preFilter) as string[];
|
|
241
246
|
const filter =
|
|
242
247
|
preFilterValues.length > 0
|
|
@@ -246,15 +251,10 @@ function ResultComponent(props: Props) {
|
|
|
246
251
|
: '';
|
|
247
252
|
|
|
248
253
|
setFilterString(filter);
|
|
249
|
-
}, [
|
|
250
|
-
preFilter,
|
|
251
|
-
requestImage,
|
|
252
|
-
search.valueTextSearch.query,
|
|
253
|
-
settings.alogoliaFilterField,
|
|
254
|
-
]);
|
|
254
|
+
}, [preFilter, requestImage, searchQuery, settings.alogoliaFilterField]);
|
|
255
255
|
|
|
256
256
|
useEffect(() => {
|
|
257
|
-
if (!requestImage) {
|
|
257
|
+
if (!requestImage || !isAlgoliaEnabled) {
|
|
258
258
|
return;
|
|
259
259
|
}
|
|
260
260
|
dispatch(updateStatusLoading(true));
|
|
@@ -263,7 +263,6 @@ function ResultComponent(props: Props) {
|
|
|
263
263
|
// setPreFilter(keyFilter);
|
|
264
264
|
dispatch(updateResultChangePosition(res));
|
|
265
265
|
});
|
|
266
|
-
dispatch(showFeedback());
|
|
267
266
|
|
|
268
267
|
return () => {};
|
|
269
268
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
@@ -302,13 +301,17 @@ function ResultComponent(props: Props) {
|
|
|
302
301
|
const filteredRegions = useFilteredRegions(regions, imageSelection);
|
|
303
302
|
|
|
304
303
|
const showPostFilter = useMemo(() => {
|
|
305
|
-
return
|
|
304
|
+
return (
|
|
305
|
+
isPostFilterEnabled &&
|
|
306
|
+
props.allSearchResults?.hits.length > 0 &&
|
|
307
|
+
isAlgoliaEnabled
|
|
308
|
+
);
|
|
306
309
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
307
|
-
}, [
|
|
310
|
+
}, [isPostFilterEnabled, props.allSearchResults?.hits, isAlgoliaEnabled]);
|
|
308
311
|
|
|
309
312
|
const showSidePanel = useMemo(() => {
|
|
310
|
-
return requestImage || (
|
|
311
|
-
}, [showPostFilter,
|
|
313
|
+
return requestImage || (isPostFilterEnabled && showPostFilter);
|
|
314
|
+
}, [showPostFilter, isPostFilterEnabled, requestImage]);
|
|
312
315
|
|
|
313
316
|
useEffect(() => {
|
|
314
317
|
const handleScroll = () => {
|
|
@@ -345,11 +348,8 @@ function ResultComponent(props: Props) {
|
|
|
345
348
|
/>
|
|
346
349
|
)}
|
|
347
350
|
|
|
348
|
-
{filterString && (
|
|
349
|
-
<Configure
|
|
350
|
-
query={search.valueTextSearch.query}
|
|
351
|
-
filters={filterString}
|
|
352
|
-
></Configure>
|
|
351
|
+
{filterString && isAlgoliaEnabled && (
|
|
352
|
+
<Configure query={searchQuery} filters={filterString}></Configure>
|
|
353
353
|
)}
|
|
354
354
|
<Box className="box-wrap-result-component">
|
|
355
355
|
{!isMobile && (
|
|
@@ -357,133 +357,139 @@ function ResultComponent(props: Props) {
|
|
|
357
357
|
<CustomSearchBox />
|
|
358
358
|
</div>
|
|
359
359
|
)}
|
|
360
|
-
<Box
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
360
|
+
<Box
|
|
361
|
+
className="box-result"
|
|
362
|
+
style={{
|
|
363
|
+
height: settings.showPoweredByNyris
|
|
364
|
+
? 'calc(100vh - 177px)'
|
|
365
|
+
: 'calc(100vh - 148px)',
|
|
366
|
+
}}
|
|
367
|
+
>
|
|
368
|
+
{!isMobile && showSidePanel && (
|
|
369
|
+
<SidePanel
|
|
370
|
+
setImageSelection={setImageSelection}
|
|
371
|
+
allSearchResults={props.allSearchResults}
|
|
372
|
+
debouncedOnImageSelectionChange={
|
|
373
|
+
debouncedOnImageSelectionChange
|
|
374
|
+
}
|
|
375
|
+
filteredRegions={filteredRegions}
|
|
376
|
+
imageSelection={imageSelection}
|
|
377
|
+
showAdjustInfo={showAdjustInfo}
|
|
378
|
+
showAdjustInfoBasedOnConfidence={
|
|
379
|
+
showAdjustInfoBasedOnConfidence
|
|
380
|
+
}
|
|
381
|
+
showPostFilter={showPostFilter}
|
|
382
|
+
disjunctiveFacets={props.allSearchResults.disjunctiveFacets}
|
|
383
|
+
/>
|
|
384
|
+
)}
|
|
385
|
+
|
|
386
|
+
<Box
|
|
387
|
+
className={`col-right ${
|
|
388
|
+
settings.preview && 'ml-auto mr-auto'
|
|
389
|
+
} ${isMobile && 'col-right-result-mobile'}`}
|
|
390
|
+
style={{
|
|
391
|
+
paddingTop: isMobile ? '8px' : '40px',
|
|
392
|
+
overflow: !isMobile ? 'auto' : '',
|
|
393
|
+
display: 'flex',
|
|
394
|
+
flexDirection: 'column',
|
|
395
|
+
}}
|
|
396
|
+
>
|
|
397
|
+
{!isMobile && (
|
|
398
|
+
<Box className="wrap-box-refinements">
|
|
399
|
+
<CurrentRefinements statusSwitchButton={true} />
|
|
400
|
+
</Box>
|
|
401
|
+
)}
|
|
402
|
+
|
|
403
|
+
{isMobile && settings.preview && requestImage && (
|
|
404
|
+
<ImagePreviewMobile
|
|
405
|
+
requestImage={requestImage}
|
|
406
|
+
imageSelection={imageSelection}
|
|
364
407
|
setImageSelection={setImageSelection}
|
|
365
|
-
allSearchResults={props.allSearchResults}
|
|
366
408
|
debouncedOnImageSelectionChange={
|
|
367
409
|
debouncedOnImageSelectionChange
|
|
368
410
|
}
|
|
369
411
|
filteredRegions={filteredRegions}
|
|
370
|
-
imageSelection={imageSelection}
|
|
371
|
-
showAdjustInfo={showAdjustInfo}
|
|
372
412
|
showAdjustInfoBasedOnConfidence={
|
|
373
413
|
showAdjustInfoBasedOnConfidence
|
|
374
414
|
}
|
|
375
|
-
|
|
376
|
-
disjunctiveFacets={props.allSearchResults.disjunctiveFacets}
|
|
415
|
+
showAdjustInfo={showAdjustInfo}
|
|
377
416
|
/>
|
|
378
417
|
)}
|
|
379
418
|
|
|
380
419
|
<Box
|
|
381
|
-
className={`col-right ${
|
|
382
|
-
settings.preview && 'ml-auto mr-auto'
|
|
383
|
-
} ${isMobile && 'col-right-result-mobile'}`}
|
|
384
420
|
style={{
|
|
385
|
-
paddingTop: isMobile ? '8px' : '40px',
|
|
386
|
-
overflow: !isMobile ? 'auto' : '',
|
|
387
421
|
display: 'flex',
|
|
388
422
|
flexDirection: 'column',
|
|
423
|
+
flexGrow: 1,
|
|
424
|
+
backgroundColor: '#FAFAFA',
|
|
389
425
|
}}
|
|
390
426
|
>
|
|
391
|
-
{!isMobile && (
|
|
392
|
-
<Box className="wrap-box-refinements">
|
|
393
|
-
<CurrentRefinements statusSwitchButton={true} />
|
|
394
|
-
</Box>
|
|
395
|
-
)}
|
|
396
|
-
|
|
397
|
-
{isMobile && settings.preview && requestImage && (
|
|
398
|
-
<ImagePreviewMobile
|
|
399
|
-
requestImage={requestImage}
|
|
400
|
-
imageSelection={imageSelection}
|
|
401
|
-
setImageSelection={setImageSelection}
|
|
402
|
-
debouncedOnImageSelectionChange={
|
|
403
|
-
debouncedOnImageSelectionChange
|
|
404
|
-
}
|
|
405
|
-
filteredRegions={filteredRegions}
|
|
406
|
-
showAdjustInfoBasedOnConfidence={
|
|
407
|
-
showAdjustInfoBasedOnConfidence
|
|
408
|
-
}
|
|
409
|
-
showAdjustInfo={showAdjustInfo}
|
|
410
|
-
/>
|
|
411
|
-
)}
|
|
412
|
-
|
|
413
427
|
<Box
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
flexDirection: 'column',
|
|
417
|
-
flexGrow: 1,
|
|
418
|
-
backgroundColor: '#FAFAFA',
|
|
419
|
-
}}
|
|
428
|
+
className={'box-item-result ml-auto mr-auto'}
|
|
429
|
+
style={{ height: '100%', paddingLeft: isMobile ? 0 : 16 }}
|
|
420
430
|
>
|
|
431
|
+
<ProductList
|
|
432
|
+
getUrlToCanvasFile={getUrlToCanvasFile}
|
|
433
|
+
setLoading={false}
|
|
434
|
+
sendFeedBackAction={sendFeedBackAction}
|
|
435
|
+
moreInfoText={moreInfoText}
|
|
436
|
+
requestImage={requestImage}
|
|
437
|
+
searchQuery={searchQuery}
|
|
438
|
+
/>
|
|
421
439
|
<Box
|
|
422
|
-
className=
|
|
423
|
-
style={{
|
|
440
|
+
className="pagination-result"
|
|
441
|
+
style={{
|
|
442
|
+
width: '100%',
|
|
443
|
+
margin: !isMobile ? '20px auto' : '',
|
|
444
|
+
marginBottom:
|
|
445
|
+
isMobile && !requestImage ? '64px' : '20px',
|
|
446
|
+
padding: '0 20%',
|
|
447
|
+
alignSelf: 'end',
|
|
448
|
+
}}
|
|
424
449
|
>
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
margin: !isMobile ? '20px auto' : '',
|
|
438
|
-
marginBottom:
|
|
439
|
-
isMobile && !requestImage ? '64px' : '20px',
|
|
440
|
-
padding: '0 20%',
|
|
441
|
-
alignSelf: 'end',
|
|
442
|
-
}}
|
|
443
|
-
>
|
|
444
|
-
{props.allSearchResults?.hits.length > 0 &&
|
|
445
|
-
(requestImage || search.valueTextSearch.query) && (
|
|
446
|
-
<Pagination
|
|
447
|
-
showFirst={false}
|
|
448
|
-
translations={{
|
|
449
|
-
previous: (
|
|
450
|
-
<ArrowLeftIcon style={{ color: '#161616' }} />
|
|
451
|
-
),
|
|
452
|
-
next: (
|
|
453
|
-
<ArrowRightIcon
|
|
454
|
-
style={{ color: '#161616' }}
|
|
455
|
-
/>
|
|
456
|
-
),
|
|
457
|
-
}}
|
|
458
|
-
/>
|
|
459
|
-
)}
|
|
460
|
-
</Box>
|
|
461
|
-
|
|
462
|
-
{requestImage &&
|
|
463
|
-
!loadingSearchAlgolia &&
|
|
464
|
-
!props.isSearchStalled &&
|
|
465
|
-
settings.rfq && (
|
|
466
|
-
<RfqBanner
|
|
467
|
-
rfqRef={rfqRef}
|
|
468
|
-
rfqStatus={rfqStatus}
|
|
469
|
-
setIsRfqModalOpen={setIsRfqModalOpen}
|
|
470
|
-
requestImage={requestImage}
|
|
471
|
-
selectedRegion={selectedRegion}
|
|
472
|
-
/>
|
|
473
|
-
)}
|
|
474
|
-
{!loadingSearchAlgolia &&
|
|
475
|
-
!props.isSearchStalled &&
|
|
476
|
-
settings.inquiry &&
|
|
477
|
-
(search.valueTextSearch.query || requestImage) && (
|
|
478
|
-
<InquiryBanner
|
|
479
|
-
requestImage={requestImage}
|
|
480
|
-
selectedRegion={selectedRegion}
|
|
481
|
-
query={search.valueTextSearch.query}
|
|
450
|
+
{props.allSearchResults?.hits.length > 0 &&
|
|
451
|
+
(requestImage || searchQuery) && (
|
|
452
|
+
<Pagination
|
|
453
|
+
showFirst={false}
|
|
454
|
+
translations={{
|
|
455
|
+
previous: (
|
|
456
|
+
<ArrowLeftIcon style={{ color: '#161616' }} />
|
|
457
|
+
),
|
|
458
|
+
next: (
|
|
459
|
+
<ArrowRightIcon style={{ color: '#161616' }} />
|
|
460
|
+
),
|
|
461
|
+
}}
|
|
482
462
|
/>
|
|
483
463
|
)}
|
|
484
464
|
</Box>
|
|
465
|
+
|
|
466
|
+
{requestImage &&
|
|
467
|
+
!loadingSearchAlgolia &&
|
|
468
|
+
!props.isSearchStalled &&
|
|
469
|
+
settings.rfq && (
|
|
470
|
+
<RfqBanner
|
|
471
|
+
rfqRef={rfqRef}
|
|
472
|
+
rfqStatus={rfqStatus}
|
|
473
|
+
setIsRfqModalOpen={setIsRfqModalOpen}
|
|
474
|
+
requestImage={requestImage}
|
|
475
|
+
selectedRegion={selectedRegion}
|
|
476
|
+
/>
|
|
477
|
+
)}
|
|
478
|
+
{!loadingSearchAlgolia &&
|
|
479
|
+
!props.isSearchStalled &&
|
|
480
|
+
settings.inquiry &&
|
|
481
|
+
(searchQuery || requestImage) && (
|
|
482
|
+
<InquiryBanner
|
|
483
|
+
requestImage={requestImage}
|
|
484
|
+
selectedRegion={selectedRegion}
|
|
485
|
+
query={searchQuery}
|
|
486
|
+
/>
|
|
487
|
+
)}
|
|
485
488
|
</Box>
|
|
486
|
-
|
|
489
|
+
</Box>
|
|
490
|
+
{!isMobile &&
|
|
491
|
+
props.allSearchResults?.hits?.length > 0 &&
|
|
492
|
+
isAlgoliaEnabled && (
|
|
487
493
|
<Box>
|
|
488
494
|
<Box className="box-notify">
|
|
489
495
|
<FooterResult search={search}>
|
|
@@ -504,8 +510,25 @@ function ResultComponent(props: Props) {
|
|
|
504
510
|
</Box>
|
|
505
511
|
</Box>
|
|
506
512
|
)}
|
|
507
|
-
|
|
508
|
-
|
|
513
|
+
{isMobile && settings.showPoweredByNyris && (
|
|
514
|
+
<div
|
|
515
|
+
style={{
|
|
516
|
+
backgroundColor: '#FAFAFA',
|
|
517
|
+
display: 'flex',
|
|
518
|
+
justifyContent: 'center',
|
|
519
|
+
paddingBottom: '46px',
|
|
520
|
+
}}
|
|
521
|
+
>
|
|
522
|
+
<PoweredByNyrisImage
|
|
523
|
+
style={{ cursor: 'pointer' }}
|
|
524
|
+
onClick={() => {
|
|
525
|
+
window.open('https://www.nyris.io', '_blank');
|
|
526
|
+
}}
|
|
527
|
+
color="#AAABB5"
|
|
528
|
+
/>
|
|
529
|
+
</div>
|
|
530
|
+
)}
|
|
531
|
+
</Box>
|
|
509
532
|
</Box>
|
|
510
533
|
</Box>
|
|
511
534
|
</>
|
package/src/services/Feedback.ts
CHANGED
|
@@ -77,7 +77,7 @@ export const sendFeedbackByApi = async (
|
|
|
77
77
|
try {
|
|
78
78
|
await api.sendFeedback(sessionId, requestId, payload).then(res => {});
|
|
79
79
|
} catch (error) {
|
|
80
|
-
console.log('error
|
|
80
|
+
console.log('error sendFeedbackByApi', error);
|
|
81
81
|
}
|
|
82
82
|
}
|
|
83
83
|
};
|
package/src/services/image.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import NyrisAPI, {
|
|
2
|
+
ImageSearchOptions,
|
|
2
3
|
NyrisAPISettings,
|
|
3
4
|
RectCoords,
|
|
4
5
|
Region,
|
|
@@ -48,24 +49,26 @@ export const findRegions = async (
|
|
|
48
49
|
};
|
|
49
50
|
};
|
|
50
51
|
|
|
51
|
-
export const
|
|
52
|
+
export const find = ({
|
|
52
53
|
image,
|
|
53
54
|
settings,
|
|
54
55
|
region,
|
|
55
56
|
filters,
|
|
57
|
+
text,
|
|
56
58
|
}: {
|
|
57
|
-
image
|
|
59
|
+
image?: HTMLCanvasElement;
|
|
58
60
|
settings: NyrisAPISettings;
|
|
59
61
|
region?: RectCoords;
|
|
60
62
|
filters?: Filter[];
|
|
63
|
+
text?: string;
|
|
61
64
|
}) => {
|
|
62
65
|
const nyrisApi = new NyrisAPI(settings);
|
|
63
|
-
let options = {};
|
|
66
|
+
let options: ImageSearchOptions = text ? { text } : {};
|
|
64
67
|
|
|
65
68
|
if (region) {
|
|
66
|
-
options = { cropRect: region };
|
|
69
|
+
options = { ...options, cropRect: region };
|
|
67
70
|
}
|
|
68
|
-
return nyrisApi.
|
|
71
|
+
return nyrisApi.find(options, image, filters);
|
|
69
72
|
};
|
|
70
73
|
|
|
71
74
|
export const findByCadFile = (file: File, settings: NyrisAPISettings) => {
|
package/src/types.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { NyrisAPISettings } from '@nyris/nyris-api';
|
|
2
|
-
import { NyrisAppState } from 'Store/nyris/types';
|
|
3
2
|
import { SearchState } from 'Store/search/types';
|
|
4
3
|
|
|
5
4
|
export interface AlgoliaSettings {
|
|
6
5
|
apiKey: string;
|
|
7
6
|
appId: string;
|
|
7
|
+
enabled?: boolean;
|
|
8
8
|
indexName: string;
|
|
9
9
|
}
|
|
10
10
|
|
|
@@ -12,6 +12,7 @@ export interface Auth0Settings {
|
|
|
12
12
|
clientId?: string;
|
|
13
13
|
domain?: string;
|
|
14
14
|
enabled?: boolean;
|
|
15
|
+
supportEmail?: string;
|
|
15
16
|
}
|
|
16
17
|
|
|
17
18
|
export interface Field {
|
|
@@ -29,37 +30,38 @@ export interface Field {
|
|
|
29
30
|
}
|
|
30
31
|
|
|
31
32
|
export interface AppSettings extends NyrisAPISettings {
|
|
32
|
-
|
|
33
|
-
preview: boolean;
|
|
34
|
-
cadSearch?: boolean;
|
|
35
|
-
noImageUrl?: string;
|
|
36
|
-
regions: boolean;
|
|
37
|
-
instantRedirectPatterns: string[];
|
|
38
|
-
theme: SearchSuiteSettings;
|
|
39
|
-
algolia?: AlgoliaSettings;
|
|
33
|
+
algolia: AlgoliaSettings;
|
|
40
34
|
alogoliaFilterField?: string;
|
|
41
35
|
appTitle?: string;
|
|
42
36
|
auth0: Auth0Settings;
|
|
43
37
|
brandName?: string;
|
|
44
38
|
cadenas3dWebView?: boolean;
|
|
45
|
-
catalog?: string;
|
|
46
39
|
cadenasAPIKey?: string;
|
|
40
|
+
cadSearch?: boolean;
|
|
41
|
+
catalog?: string;
|
|
42
|
+
exampleImages?: string[]; // deprecated
|
|
47
43
|
field: Field;
|
|
48
44
|
headerText?: string;
|
|
49
45
|
inquiry?: boolean;
|
|
46
|
+
instantRedirectPatterns: string[];
|
|
50
47
|
itemIdLabel?: string;
|
|
51
48
|
language?: string;
|
|
49
|
+
noImageUrl?: string;
|
|
52
50
|
postFilterOption?: boolean;
|
|
53
51
|
preFilterOption?: boolean;
|
|
54
52
|
preFilterTitle?: string;
|
|
53
|
+
preview: boolean;
|
|
55
54
|
productCtaText?: string;
|
|
56
55
|
refinements?: any;
|
|
56
|
+
regions: boolean;
|
|
57
57
|
rfq?: boolean;
|
|
58
58
|
shareOption?: boolean;
|
|
59
59
|
showFeedbackAndShare?: boolean;
|
|
60
60
|
showGroup?: boolean;
|
|
61
61
|
showMoreInfo?: boolean; // deprecated
|
|
62
|
+
showPoweredByNyris?: boolean;
|
|
62
63
|
templateId?: string;
|
|
64
|
+
theme: SearchSuiteSettings;
|
|
63
65
|
visualSearchFilterKey?: string;
|
|
64
66
|
warehouseVariant?: boolean;
|
|
65
67
|
}
|
|
@@ -67,8 +69,8 @@ export interface AppSettings extends NyrisAPISettings {
|
|
|
67
69
|
export interface SearchSuiteSettings {
|
|
68
70
|
appBarLogoUrl?: string;
|
|
69
71
|
headerColor?: string;
|
|
70
|
-
logoWidth?: string;
|
|
71
72
|
logoHeight?: string;
|
|
73
|
+
logoWidth?: string;
|
|
72
74
|
mobileFooterImageColor?: string;
|
|
73
75
|
primaryColor?: string;
|
|
74
76
|
secondaryColor?: string;
|
|
@@ -77,7 +79,6 @@ export interface SearchSuiteSettings {
|
|
|
77
79
|
export type AppState = {
|
|
78
80
|
search: SearchState;
|
|
79
81
|
settings: AppSettings;
|
|
80
|
-
nyrisDesign: NyrisAppState;
|
|
81
82
|
};
|
|
82
83
|
|
|
83
84
|
export interface CanvasWithId {
|