@usereactify/search 3.1.0 → 3.2.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.
|
@@ -5,6 +5,11 @@ import { ResultCardCallout } from "./ResultCardCallout";
|
|
|
5
5
|
import { ResultLoadMoreButton } from "./ResultLoadMoreButton";
|
|
6
6
|
import { ResultPaginationNextPrev } from "./ResultPaginationNextPrev";
|
|
7
7
|
import { ReactivesearchError, ReactivesearchResultProps } from "../types/reactivesearch";
|
|
8
|
+
import { ElasticCallout, ElasticProduct } from "../types/elastic";
|
|
9
|
+
declare type ResultProps = ReactivesearchResultProps & {
|
|
10
|
+
callouts: ElasticCallout[];
|
|
11
|
+
products: ElasticProduct[];
|
|
12
|
+
};
|
|
8
13
|
declare type Props = {
|
|
9
14
|
pageSize?: number;
|
|
10
15
|
gridColumns?: number;
|
|
@@ -14,9 +19,9 @@ declare type Props = {
|
|
|
14
19
|
renderResultCard?: Parameters<typeof ResultCard>[0]["render"];
|
|
15
20
|
renderPagination?: Parameters<typeof ResultPagination>[0]["render"];
|
|
16
21
|
renderResultCardCallout?: Parameters<typeof ResultCardCallout>[0]["render"];
|
|
17
|
-
renderAfter?: (props:
|
|
18
|
-
renderBefore?: (props:
|
|
19
|
-
renderResults?: (props:
|
|
22
|
+
renderAfter?: (props: ResultProps) => JSX.Element | null;
|
|
23
|
+
renderBefore?: (props: ResultProps) => JSX.Element | null;
|
|
24
|
+
renderResults?: (props: ResultProps) => JSX.Element | null;
|
|
20
25
|
renderError?: (props: {
|
|
21
26
|
error: ReactivesearchError;
|
|
22
27
|
}) => JSX.Element | null;
|
|
@@ -31,6 +31,7 @@ const ResultListInner = (props) => {
|
|
|
31
31
|
display: "grid",
|
|
32
32
|
gridTemplateColumns: `repeat(${gridColumns !== null && gridColumns !== void 0 ? gridColumns : 4}, minmax(0, 1fr))`,
|
|
33
33
|
}), [gridColumns]);
|
|
34
|
+
const resultProps = react_1.default.useMemo(() => (Object.assign(Object.assign({}, reactivesearchResultProps), { products: reactivesearchResultProps.data.filter((document) => elastic_1.ElasticDocumentType.Product === document.type || !document.type), callouts: reactivesearchResultProps.data.filter((document) => elastic_1.ElasticDocumentType.Callout === document.type) })), [reactivesearchResultProps]);
|
|
34
35
|
if (reactivesearchResultProps.error) {
|
|
35
36
|
if (renderError)
|
|
36
37
|
return renderError({ error: reactivesearchResultProps.error });
|
|
@@ -49,22 +50,22 @@ const ResultListInner = (props) => {
|
|
|
49
50
|
return react_1.default.createElement("div", null, "No results");
|
|
50
51
|
}
|
|
51
52
|
if (renderResults) {
|
|
52
|
-
return renderResults(
|
|
53
|
+
return renderResults(resultProps);
|
|
53
54
|
}
|
|
54
55
|
return (react_1.default.createElement(react_1.default.Fragment, null,
|
|
55
|
-
renderBefore && renderBefore(
|
|
56
|
-
react_1.default.createElement("section", { className: listClassName, style: styleProp }, reactivesearchResultProps.data.map((
|
|
56
|
+
renderBefore && renderBefore(resultProps),
|
|
57
|
+
react_1.default.createElement("section", { className: listClassName, style: styleProp }, reactivesearchResultProps.data.map((document, key) => {
|
|
57
58
|
// @todo result.type is missing in v1 indexes, this check ensures that they are assumed to be products
|
|
58
|
-
if (elastic_1.ElasticDocumentType.Product ===
|
|
59
|
-
return (react_1.default.createElement(ResultCard_1.ResultCard, { key:
|
|
59
|
+
if (elastic_1.ElasticDocumentType.Product === document.type || !document.type) {
|
|
60
|
+
return (react_1.default.createElement(ResultCard_1.ResultCard, { key: document._id, product: document, document: document, pagePosition: key + 1, render: renderResultCard }));
|
|
60
61
|
}
|
|
61
|
-
if (elastic_1.ElasticDocumentType.Callout ===
|
|
62
|
-
return (react_1.default.createElement(ResultCardCallout_1.ResultCardCallout, { key:
|
|
62
|
+
if (elastic_1.ElasticDocumentType.Callout === document.type) {
|
|
63
|
+
return (react_1.default.createElement(ResultCardCallout_1.ResultCardCallout, { key: document._id, document: document, pagePosition: key + 1, callout: document.callout, render: renderResultCardCallout }));
|
|
63
64
|
}
|
|
64
65
|
return null;
|
|
65
66
|
})),
|
|
66
67
|
!instantSearch && "load_more" === (filterStack === null || filterStack === void 0 ? void 0 : filterStack.paginationType) && (react_1.default.createElement(ResultLoadMoreButton_1.ResultLoadMoreButton, Object.assign({}, reactivesearchResultProps, { render: renderLoadMoreButton }))),
|
|
67
|
-
renderAfter && renderAfter(
|
|
68
|
+
renderAfter && renderAfter(resultProps)));
|
|
68
69
|
};
|
|
69
70
|
const ResultPaginationInner = (props) => {
|
|
70
71
|
const { renderPagination, renderPaginationNextPrev } = props;
|