instantsearch.js 4.44.1 → 4.46.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.
- package/CHANGELOG.md +28 -0
- package/cjs/components/Hits/Hits.js +3 -1
- package/cjs/components/InfiniteHits/InfiniteHits.js +3 -1
- package/cjs/components/Template/Template.js +13 -3
- package/cjs/connectors/hits-per-page/connectHitsPerPage.js +3 -1
- package/cjs/connectors/numeric-menu/connectNumericMenu.js +27 -2
- package/cjs/connectors/rating-menu/connectRatingMenu.js +10 -4
- package/cjs/connectors/sort-by/connectSortBy.js +3 -1
- package/cjs/lib/createHelpers.js +3 -1
- package/cjs/lib/formatNumber.js +10 -0
- package/cjs/lib/utils/cx.js +10 -0
- package/cjs/lib/utils/index.js +10 -1
- package/cjs/lib/utils/renderTemplate.js +17 -2
- package/cjs/lib/version.js +1 -1
- package/cjs/widgets/answers/defaultTemplates.js +6 -2
- package/cjs/widgets/breadcrumb/defaultTemplates.js +6 -2
- package/cjs/widgets/clear-refinements/clear-refinements.js +2 -2
- package/cjs/widgets/clear-refinements/defaultTemplates.js +3 -1
- package/cjs/widgets/geo-search/createHTMLMarker.js +10 -4
- package/cjs/widgets/geo-search/defaultTemplates.js +18 -4
- package/cjs/widgets/hierarchical-menu/defaultTemplates.js +26 -2
- package/cjs/widgets/hits/defaultTemplates.js +3 -1
- package/cjs/widgets/infinite-hits/defaultTemplates.js +9 -3
- package/cjs/widgets/menu/defaultTemplates.js +26 -2
- package/cjs/widgets/menu-select/defaultTemplates.js +11 -2
- package/cjs/widgets/numeric-menu/defaultTemplates.js +20 -1
- package/cjs/widgets/range-input/range-input.js +6 -2
- package/cjs/widgets/rating-menu/defaultTemplates.js +57 -1
- package/cjs/widgets/refinement-list/defaultTemplates.js +38 -3
- package/cjs/widgets/relevant-sort/defaultTemplates.js +3 -1
- package/cjs/widgets/search-box/defaultTemplates.js +62 -3
- package/cjs/widgets/stats/stats.js +70 -22
- package/cjs/widgets/toggle-refinement/defaultTemplates.js +4 -1
- package/cjs/widgets/voice-search/defaultTemplates.js +81 -9
- package/dist/instantsearch.development.d.ts +171 -29
- package/dist/instantsearch.development.js +1430 -671
- package/dist/instantsearch.development.js.map +1 -1
- package/dist/instantsearch.production.d.ts +171 -29
- package/dist/instantsearch.production.min.d.ts +171 -29
- package/dist/instantsearch.production.min.js +2 -2
- package/dist/instantsearch.production.min.js.map +1 -1
- package/es/components/Answers/Answers.d.ts +2 -2
- package/es/components/Hits/Hits.d.ts +3 -3
- package/es/components/Hits/Hits.js +3 -1
- package/es/components/InfiniteHits/InfiniteHits.d.ts +3 -3
- package/es/components/InfiniteHits/InfiniteHits.js +3 -1
- package/es/components/Template/Template.d.ts +4 -2
- package/es/components/Template/Template.js +14 -4
- package/es/connectors/answers/connectAnswers.d.ts +2 -2
- package/es/connectors/autocomplete/connectAutocomplete.d.ts +2 -2
- package/es/connectors/hits-per-page/connectHitsPerPage.d.ts +5 -0
- package/es/connectors/hits-per-page/connectHitsPerPage.js +3 -1
- package/es/connectors/numeric-menu/connectNumericMenu.d.ts +8 -0
- package/es/connectors/numeric-menu/connectNumericMenu.js +27 -2
- package/es/connectors/rating-menu/connectRatingMenu.d.ts +2 -0
- package/es/connectors/rating-menu/connectRatingMenu.js +10 -4
- package/es/connectors/sort-by/connectSortBy.d.ts +5 -0
- package/es/connectors/sort-by/connectSortBy.js +3 -1
- package/es/lib/createHelpers.js +2 -1
- package/es/lib/formatNumber.d.ts +1 -0
- package/es/lib/formatNumber.js +3 -0
- package/es/lib/insights/client.d.ts +2 -2
- package/es/lib/utils/createSendEventForHits.d.ts +3 -3
- package/es/lib/utils/cx.d.ts +1 -0
- package/es/lib/utils/cx.js +3 -0
- package/es/lib/utils/index.d.ts +1 -0
- package/es/lib/utils/index.js +2 -1
- package/es/lib/utils/renderTemplate.d.ts +4 -3
- package/es/lib/utils/renderTemplate.js +15 -2
- package/es/lib/version.d.ts +1 -1
- package/es/lib/version.js +1 -1
- package/es/types/connector.d.ts +2 -2
- package/es/types/templates.d.ts +16 -3
- package/es/widgets/answers/defaultTemplates.js +6 -2
- package/es/widgets/breadcrumb/defaultTemplates.js +6 -2
- package/es/widgets/clear-refinements/clear-refinements.d.ts +3 -1
- package/es/widgets/clear-refinements/clear-refinements.js +2 -2
- package/es/widgets/clear-refinements/defaultTemplates.js +3 -1
- package/es/widgets/geo-search/createHTMLMarker.d.ts +2 -1
- package/es/widgets/geo-search/createHTMLMarker.js +8 -1
- package/es/widgets/geo-search/defaultTemplates.d.ts +1 -0
- package/es/widgets/geo-search/defaultTemplates.js +17 -4
- package/es/widgets/hierarchical-menu/defaultTemplates.js +22 -2
- package/es/widgets/hierarchical-menu/hierarchical-menu.d.ts +2 -0
- package/es/widgets/hits/defaultTemplates.js +3 -1
- package/es/widgets/hits/hits.d.ts +2 -1
- package/es/widgets/infinite-hits/defaultTemplates.js +9 -3
- package/es/widgets/infinite-hits/infinite-hits.d.ts +1 -3
- package/es/widgets/menu/defaultTemplates.js +22 -2
- package/es/widgets/menu-select/defaultTemplates.js +9 -2
- package/es/widgets/numeric-menu/defaultTemplates.js +18 -1
- package/es/widgets/range-input/range-input.js +6 -2
- package/es/widgets/rating-menu/defaultTemplates.js +54 -1
- package/es/widgets/rating-menu/rating-menu.d.ts +6 -0
- package/es/widgets/refinement-list/defaultTemplates.js +34 -3
- package/es/widgets/refinement-list/refinement-list.d.ts +7 -1
- package/es/widgets/relevant-sort/defaultTemplates.js +3 -1
- package/es/widgets/search-box/defaultTemplates.js +61 -3
- package/es/widgets/search-box/search-box.d.ts +10 -3
- package/es/widgets/stats/stats.d.ts +10 -6
- package/es/widgets/stats/stats.js +69 -22
- package/es/widgets/toggle-refinement/defaultTemplates.js +4 -1
- package/es/widgets/toggle-refinement/toggle-refinement.d.ts +3 -1
- package/es/widgets/voice-search/defaultTemplates.js +81 -9
- package/package.json +7 -5
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
/// <reference types="google.maps" />
|
|
2
|
+
import type { renderTemplate } from '../../lib/utils';
|
|
2
3
|
export declare type HTMLMarkerArguments = {
|
|
3
4
|
__id: string;
|
|
4
5
|
position: google.maps.LatLngLiteral;
|
|
5
6
|
map: google.maps.Map;
|
|
6
|
-
template:
|
|
7
|
+
template: ReturnType<typeof renderTemplate>;
|
|
7
8
|
title?: string;
|
|
8
9
|
className: string;
|
|
9
10
|
anchor?: {
|
|
@@ -23,6 +23,8 @@ function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.g
|
|
|
23
23
|
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
24
24
|
|
|
25
25
|
/* global google EventListener */
|
|
26
|
+
import { render } from 'preact';
|
|
27
|
+
|
|
26
28
|
var createHTMLMarker = function createHTMLMarker(googleReference) {
|
|
27
29
|
var HTMLMarker = /*#__PURE__*/function (_googleReference$maps) {
|
|
28
30
|
_inherits(HTMLMarker, _googleReference$maps);
|
|
@@ -66,7 +68,12 @@ var createHTMLMarker = function createHTMLMarker(googleReference) {
|
|
|
66
68
|
_this.element = document.createElement('div');
|
|
67
69
|
_this.element.className = className;
|
|
68
70
|
_this.element.style.position = 'absolute';
|
|
69
|
-
|
|
71
|
+
|
|
72
|
+
if (_typeof(template) === 'object') {
|
|
73
|
+
render(template, _this.element);
|
|
74
|
+
} else {
|
|
75
|
+
_this.element.innerHTML = template;
|
|
76
|
+
}
|
|
70
77
|
|
|
71
78
|
_this.setMap(map);
|
|
72
79
|
|
|
@@ -1,7 +1,20 @@
|
|
|
1
|
+
/** @jsx h */
|
|
2
|
+
import { h } from 'preact';
|
|
3
|
+
|
|
4
|
+
var _ref = h("p", null, "Your custom HTML Marker");
|
|
5
|
+
|
|
1
6
|
var defaultTemplates = {
|
|
2
|
-
HTMLMarker:
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
7
|
+
HTMLMarker: function HTMLMarker() {
|
|
8
|
+
return _ref;
|
|
9
|
+
},
|
|
10
|
+
reset: function reset() {
|
|
11
|
+
return 'Clear the map refinement';
|
|
12
|
+
},
|
|
13
|
+
toggle: function toggle() {
|
|
14
|
+
return 'Search as I move the map';
|
|
15
|
+
},
|
|
16
|
+
redo: function redo() {
|
|
17
|
+
return 'Redo search here';
|
|
18
|
+
}
|
|
6
19
|
};
|
|
7
20
|
export default defaultTemplates;
|
|
@@ -1,5 +1,25 @@
|
|
|
1
|
+
/** @jsx h */
|
|
2
|
+
import { h } from 'preact';
|
|
3
|
+
import { formatNumber } from "../../lib/formatNumber.js";
|
|
4
|
+
import { cx } from "../../lib/utils/index.js";
|
|
1
5
|
var defaultTemplates = {
|
|
2
|
-
item:
|
|
3
|
-
|
|
6
|
+
item: function item(_ref) {
|
|
7
|
+
var url = _ref.url,
|
|
8
|
+
label = _ref.label,
|
|
9
|
+
count = _ref.count,
|
|
10
|
+
cssClasses = _ref.cssClasses;
|
|
11
|
+
return h("a", {
|
|
12
|
+
className: cx(cssClasses.link),
|
|
13
|
+
href: url
|
|
14
|
+
}, h("span", {
|
|
15
|
+
className: cx(cssClasses.label)
|
|
16
|
+
}, label), h("span", {
|
|
17
|
+
className: cx(cssClasses.count)
|
|
18
|
+
}, formatNumber(count)));
|
|
19
|
+
},
|
|
20
|
+
showMoreText: function showMoreText(_ref2) {
|
|
21
|
+
var isShowingMore = _ref2.isShowingMore;
|
|
22
|
+
return isShowingMore ? 'Show less' : 'Show more';
|
|
23
|
+
}
|
|
4
24
|
};
|
|
5
25
|
export default defaultTemplates;
|
|
@@ -10,6 +10,8 @@ declare type HierarchicalMenuTemplates = Partial<{
|
|
|
10
10
|
count: number;
|
|
11
11
|
isRefined: boolean;
|
|
12
12
|
url: string;
|
|
13
|
+
label: string;
|
|
14
|
+
cssClasses: HierarchicalMenuCSSClasses;
|
|
13
15
|
}>;
|
|
14
16
|
/**
|
|
15
17
|
* Template used for the show more text, provided with `isShowingMore` data property.
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/** @jsx h */
|
|
2
2
|
import type { HitsConnectorParams, HitsWidgetDescription } from '../../connectors/hits/connectHits';
|
|
3
3
|
import type { Template, TemplateWithBindEvent, Hit, WidgetFactory } from '../../types';
|
|
4
|
+
import type { SearchResults } from 'algoliasearch-helper';
|
|
4
5
|
export declare type HitsCSSClasses = Partial<{
|
|
5
6
|
/**
|
|
6
7
|
* CSS class to add to the wrapping element.
|
|
@@ -25,7 +26,7 @@ export declare type HitsTemplates = Partial<{
|
|
|
25
26
|
*
|
|
26
27
|
* @default 'No Results'
|
|
27
28
|
*/
|
|
28
|
-
empty: Template
|
|
29
|
+
empty: Template<SearchResults>;
|
|
29
30
|
/**
|
|
30
31
|
* Template to use for each result. This template will receive an object containing a single record.
|
|
31
32
|
*
|
|
@@ -1,7 +1,13 @@
|
|
|
1
1
|
var defaultTemplates = {
|
|
2
|
-
empty:
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
empty: function empty() {
|
|
3
|
+
return 'No results';
|
|
4
|
+
},
|
|
5
|
+
showPreviousText: function showPreviousText() {
|
|
6
|
+
return 'Show previous results';
|
|
7
|
+
},
|
|
8
|
+
showMoreText: function showMoreText() {
|
|
9
|
+
return 'Show more results';
|
|
10
|
+
},
|
|
5
11
|
item: function item(data) {
|
|
6
12
|
return JSON.stringify(data, null, 2);
|
|
7
13
|
}
|
|
@@ -40,9 +40,7 @@ export declare type InfiniteHitsTemplates = Partial<{
|
|
|
40
40
|
/**
|
|
41
41
|
* The template to use when there are no results.
|
|
42
42
|
*/
|
|
43
|
-
empty: Template<
|
|
44
|
-
results: SearchResults;
|
|
45
|
-
}>;
|
|
43
|
+
empty: Template<SearchResults>;
|
|
46
44
|
/**
|
|
47
45
|
* The template to use for the “Show previous” label.
|
|
48
46
|
*/
|
|
@@ -1,5 +1,25 @@
|
|
|
1
|
+
/** @jsx h */
|
|
2
|
+
import { h } from 'preact';
|
|
3
|
+
import { formatNumber } from "../../lib/formatNumber.js";
|
|
4
|
+
import { cx } from "../../lib/utils/index.js";
|
|
1
5
|
var defaultTemplates = {
|
|
2
|
-
item:
|
|
3
|
-
|
|
6
|
+
item: function item(_ref) {
|
|
7
|
+
var cssClasses = _ref.cssClasses,
|
|
8
|
+
url = _ref.url,
|
|
9
|
+
label = _ref.label,
|
|
10
|
+
count = _ref.count;
|
|
11
|
+
return h("a", {
|
|
12
|
+
className: cx(cssClasses.link),
|
|
13
|
+
href: url
|
|
14
|
+
}, h("span", {
|
|
15
|
+
className: cx(cssClasses.label)
|
|
16
|
+
}, label), h("span", {
|
|
17
|
+
className: cx(cssClasses.count)
|
|
18
|
+
}, formatNumber(count)));
|
|
19
|
+
},
|
|
20
|
+
showMoreText: function showMoreText(_ref2) {
|
|
21
|
+
var isShowingMore = _ref2.isShowingMore;
|
|
22
|
+
return isShowingMore ? 'Show less' : 'Show more';
|
|
23
|
+
}
|
|
4
24
|
};
|
|
5
25
|
export default defaultTemplates;
|
|
@@ -1,5 +1,12 @@
|
|
|
1
|
+
import { formatNumber } from "../../lib/formatNumber.js";
|
|
1
2
|
var defaultTemplates = {
|
|
2
|
-
item:
|
|
3
|
-
|
|
3
|
+
item: function item(_ref) {
|
|
4
|
+
var label = _ref.label,
|
|
5
|
+
count = _ref.count;
|
|
6
|
+
return "".concat(label, " (").concat(formatNumber(count), ")");
|
|
7
|
+
},
|
|
8
|
+
defaultOption: function defaultOption() {
|
|
9
|
+
return 'See all';
|
|
10
|
+
}
|
|
4
11
|
};
|
|
5
12
|
export default defaultTemplates;
|
|
@@ -1,4 +1,21 @@
|
|
|
1
|
+
/** @jsx h */
|
|
2
|
+
import { h } from 'preact';
|
|
1
3
|
var defaultTemplates = {
|
|
2
|
-
item:
|
|
4
|
+
item: function item(_ref) {
|
|
5
|
+
var cssClasses = _ref.cssClasses,
|
|
6
|
+
attribute = _ref.attribute,
|
|
7
|
+
label = _ref.label,
|
|
8
|
+
isRefined = _ref.isRefined;
|
|
9
|
+
return h("label", {
|
|
10
|
+
className: cssClasses.label
|
|
11
|
+
}, h("input", {
|
|
12
|
+
type: "radio",
|
|
13
|
+
className: cssClasses.radio,
|
|
14
|
+
name: attribute,
|
|
15
|
+
defaultChecked: isRefined
|
|
16
|
+
}), h("span", {
|
|
17
|
+
className: cssClasses.labelText
|
|
18
|
+
}, label));
|
|
19
|
+
}
|
|
3
20
|
};
|
|
4
21
|
export default defaultTemplates;
|
|
@@ -28,8 +28,12 @@ var withUsage = createDocumentationMessageGenerator({
|
|
|
28
28
|
});
|
|
29
29
|
var suit = component('RangeInput');
|
|
30
30
|
var defaultTemplates = {
|
|
31
|
-
separatorText:
|
|
32
|
-
|
|
31
|
+
separatorText: function separatorText() {
|
|
32
|
+
return 'to';
|
|
33
|
+
},
|
|
34
|
+
submitText: function submitText() {
|
|
35
|
+
return 'Go';
|
|
36
|
+
}
|
|
33
37
|
};
|
|
34
38
|
|
|
35
39
|
var renderer = function renderer(_ref) {
|
|
@@ -1,4 +1,57 @@
|
|
|
1
|
+
/** @jsx h */
|
|
2
|
+
import { h } from 'preact';
|
|
3
|
+
import { formatNumber } from "../../lib/formatNumber.js";
|
|
4
|
+
import { cx } from "../../lib/utils/index.js";
|
|
5
|
+
|
|
6
|
+
function ItemWrapper(_ref) {
|
|
7
|
+
var children = _ref.children,
|
|
8
|
+
count = _ref.count,
|
|
9
|
+
value = _ref.value,
|
|
10
|
+
url = _ref.url,
|
|
11
|
+
cssClasses = _ref.cssClasses;
|
|
12
|
+
|
|
13
|
+
if (count) {
|
|
14
|
+
return h("a", {
|
|
15
|
+
className: cx(cssClasses.link),
|
|
16
|
+
"aria-label": "".concat(value, " & up"),
|
|
17
|
+
href: url
|
|
18
|
+
}, children);
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
return h("div", {
|
|
22
|
+
className: cx(cssClasses.link),
|
|
23
|
+
"aria-label": "".concat(value, " & up"),
|
|
24
|
+
disabled: true
|
|
25
|
+
}, children);
|
|
26
|
+
}
|
|
27
|
+
|
|
1
28
|
var defaultTemplates = {
|
|
2
|
-
item:
|
|
29
|
+
item: function item(_ref2) {
|
|
30
|
+
var count = _ref2.count,
|
|
31
|
+
value = _ref2.value,
|
|
32
|
+
url = _ref2.url,
|
|
33
|
+
stars = _ref2.stars,
|
|
34
|
+
cssClasses = _ref2.cssClasses;
|
|
35
|
+
return h(ItemWrapper, {
|
|
36
|
+
count: count,
|
|
37
|
+
value: value,
|
|
38
|
+
url: url,
|
|
39
|
+
cssClasses: cssClasses
|
|
40
|
+
}, stars.map(function (isFull, index) {
|
|
41
|
+
return h("svg", {
|
|
42
|
+
key: index,
|
|
43
|
+
className: cx([cx(cssClasses.starIcon), cx(isFull ? cssClasses.fullStarIcon : cssClasses.emptyStarIcon)]),
|
|
44
|
+
"aria-hidden": "true",
|
|
45
|
+
width: "24",
|
|
46
|
+
height: "24"
|
|
47
|
+
}, h("use", {
|
|
48
|
+
xlinkHref: isFull ? '#ais-RatingMenu-starSymbol' : '#ais-RatingMenu-starEmptySymbol'
|
|
49
|
+
}));
|
|
50
|
+
}), h("span", {
|
|
51
|
+
className: cx(cssClasses.label)
|
|
52
|
+
}, "& Up"), count && h("span", {
|
|
53
|
+
className: cx(cssClasses.count)
|
|
54
|
+
}, formatNumber(count)));
|
|
55
|
+
}
|
|
3
56
|
};
|
|
4
57
|
export default defaultTemplates;
|
|
@@ -7,9 +7,15 @@ export declare type RatingMenuTemplates = Partial<{
|
|
|
7
7
|
*/
|
|
8
8
|
item: Template<{
|
|
9
9
|
name: string;
|
|
10
|
+
label: string;
|
|
11
|
+
value: string;
|
|
10
12
|
count: number;
|
|
11
13
|
isRefined: boolean;
|
|
12
14
|
url: string;
|
|
15
|
+
stars: [boolean, boolean, boolean, boolean, boolean];
|
|
16
|
+
cssClasses: RatingMenuCSSClasses;
|
|
17
|
+
attribute?: string;
|
|
18
|
+
isFromSearch?: boolean;
|
|
13
19
|
}>;
|
|
14
20
|
}>;
|
|
15
21
|
export declare type RatingMenuCSSClasses = Partial<{
|
|
@@ -1,6 +1,37 @@
|
|
|
1
|
+
/** @jsx h */
|
|
2
|
+
import { h } from 'preact';
|
|
3
|
+
import { formatNumber } from "../../lib/formatNumber.js";
|
|
4
|
+
import { cx } from "../../lib/utils/index.js";
|
|
1
5
|
var defaultTemplates = {
|
|
2
|
-
item:
|
|
3
|
-
|
|
4
|
-
|
|
6
|
+
item: function item(_ref) {
|
|
7
|
+
var cssClasses = _ref.cssClasses,
|
|
8
|
+
count = _ref.count,
|
|
9
|
+
value = _ref.value,
|
|
10
|
+
highlighted = _ref.highlighted,
|
|
11
|
+
isRefined = _ref.isRefined,
|
|
12
|
+
isFromSearch = _ref.isFromSearch;
|
|
13
|
+
return h("label", {
|
|
14
|
+
className: cx(cssClasses.label)
|
|
15
|
+
}, h("input", {
|
|
16
|
+
type: "checkbox",
|
|
17
|
+
className: cx(cssClasses.checkbox),
|
|
18
|
+
value: value,
|
|
19
|
+
defaultChecked: isRefined
|
|
20
|
+
}), h("span", {
|
|
21
|
+
className: cx(cssClasses.labelText),
|
|
22
|
+
dangerouslySetInnerHTML: isFromSearch ? {
|
|
23
|
+
__html: highlighted
|
|
24
|
+
} : undefined
|
|
25
|
+
}, !isFromSearch && highlighted), h("span", {
|
|
26
|
+
className: cx(cssClasses.count)
|
|
27
|
+
}, formatNumber(count)));
|
|
28
|
+
},
|
|
29
|
+
showMoreText: function showMoreText(_ref2) {
|
|
30
|
+
var isShowingMore = _ref2.isShowingMore;
|
|
31
|
+
return isShowingMore ? 'Show less' : 'Show more';
|
|
32
|
+
},
|
|
33
|
+
searchableNoResults: function searchableNoResults() {
|
|
34
|
+
return 'No results';
|
|
35
|
+
}
|
|
5
36
|
};
|
|
6
37
|
export default defaultTemplates;
|
|
@@ -97,6 +97,10 @@ export declare type RefinementListItemData = {
|
|
|
97
97
|
* Object containing all the classes computed for the item.
|
|
98
98
|
*/
|
|
99
99
|
cssClasses: RefinementListCSSClasses;
|
|
100
|
+
/**
|
|
101
|
+
* Whether the `items` prop contains facet values from the global search or from the search inside the items.
|
|
102
|
+
*/
|
|
103
|
+
isFromSearch: boolean;
|
|
100
104
|
};
|
|
101
105
|
export declare type RefinementListOwnTemplates = Partial<{
|
|
102
106
|
/**
|
|
@@ -106,7 +110,9 @@ export declare type RefinementListOwnTemplates = Partial<{
|
|
|
106
110
|
/**
|
|
107
111
|
* Template used for the show more text, provided with `isShowingMore` data property.
|
|
108
112
|
*/
|
|
109
|
-
showMoreText: Template
|
|
113
|
+
showMoreText: Template<{
|
|
114
|
+
isShowingMore: boolean;
|
|
115
|
+
}>;
|
|
110
116
|
/**
|
|
111
117
|
* Templates to use for search for facet values when there are no results.
|
|
112
118
|
*/
|
|
@@ -1,6 +1,64 @@
|
|
|
1
|
+
/** @jsx h */
|
|
2
|
+
import { h } from 'preact';
|
|
3
|
+
|
|
4
|
+
var _ref2 = h("path", {
|
|
5
|
+
d: "M8.114 10L.944 2.83 0 1.885 1.886 0l.943.943L10 8.113l7.17-7.17.944-.943L20 1.886l-.943.943-7.17 7.17 7.17 7.17.943.944L18.114 20l-.943-.943-7.17-7.17-7.17 7.17-.944.943L0 18.114l.943-.943L8.113 10z"
|
|
6
|
+
});
|
|
7
|
+
|
|
8
|
+
var _ref4 = h("path", {
|
|
9
|
+
d: "M26.804 29.01c-2.832 2.34-6.465 3.746-10.426 3.746C7.333 32.756 0 25.424 0 16.378 0 7.333 7.333 0 16.378 0c9.046 0 16.378 7.333 16.378 16.378 0 3.96-1.406 7.594-3.746 10.426l10.534 10.534c.607.607.61 1.59-.004 2.202-.61.61-1.597.61-2.202.004L26.804 29.01zm-10.426.627c7.323 0 13.26-5.936 13.26-13.26 0-7.32-5.937-13.257-13.26-13.257C9.056 3.12 3.12 9.056 3.12 16.378c0 7.323 5.936 13.26 13.258 13.26z"
|
|
10
|
+
});
|
|
11
|
+
|
|
12
|
+
var _ref6 = h("g", {
|
|
13
|
+
fill: "none",
|
|
14
|
+
fillRule: "evenodd"
|
|
15
|
+
}, h("g", {
|
|
16
|
+
transform: "translate(1 1)",
|
|
17
|
+
strokeWidth: "2"
|
|
18
|
+
}, h("circle", {
|
|
19
|
+
strokeOpacity: ".5",
|
|
20
|
+
cx: "18",
|
|
21
|
+
cy: "18",
|
|
22
|
+
r: "18"
|
|
23
|
+
}), h("path", {
|
|
24
|
+
d: "M36 18c0-9.94-8.06-18-18-18"
|
|
25
|
+
}, h("animateTransform", {
|
|
26
|
+
attributeName: "transform",
|
|
27
|
+
type: "rotate",
|
|
28
|
+
from: "0 18 18",
|
|
29
|
+
to: "360 18 18",
|
|
30
|
+
dur: "1s",
|
|
31
|
+
repeatCount: "indefinite"
|
|
32
|
+
}))));
|
|
33
|
+
|
|
1
34
|
var defaultTemplate = {
|
|
2
|
-
reset:
|
|
3
|
-
|
|
4
|
-
|
|
35
|
+
reset: function reset(_ref) {
|
|
36
|
+
var cssClasses = _ref.cssClasses;
|
|
37
|
+
return h("svg", {
|
|
38
|
+
className: cssClasses.resetIcon,
|
|
39
|
+
viewBox: "0 0 20 20",
|
|
40
|
+
width: "10",
|
|
41
|
+
height: "10"
|
|
42
|
+
}, _ref2);
|
|
43
|
+
},
|
|
44
|
+
submit: function submit(_ref3) {
|
|
45
|
+
var cssClasses = _ref3.cssClasses;
|
|
46
|
+
return h("svg", {
|
|
47
|
+
className: cssClasses.submitIcon,
|
|
48
|
+
width: "10",
|
|
49
|
+
height: "10",
|
|
50
|
+
viewBox: "0 0 40 40"
|
|
51
|
+
}, _ref4);
|
|
52
|
+
},
|
|
53
|
+
loadingIndicator: function loadingIndicator(_ref5) {
|
|
54
|
+
var cssClasses = _ref5.cssClasses;
|
|
55
|
+
return h("svg", {
|
|
56
|
+
className: cssClasses.loadingIcon,
|
|
57
|
+
width: "16",
|
|
58
|
+
height: "16",
|
|
59
|
+
viewBox: "0 0 38 38",
|
|
60
|
+
stroke: "#444"
|
|
61
|
+
}, _ref6);
|
|
62
|
+
}
|
|
5
63
|
};
|
|
6
64
|
export default defaultTemplate;
|
|
@@ -1,19 +1,26 @@
|
|
|
1
1
|
/** @jsx h */
|
|
2
2
|
import type { WidgetFactory, Template } from '../../types';
|
|
3
3
|
import type { SearchBoxConnectorParams, SearchBoxWidgetDescription } from '../../connectors/search-box/connectSearchBox';
|
|
4
|
+
import type { SearchBoxComponentCSSClasses } from '../../components/SearchBox/SearchBox';
|
|
4
5
|
export declare type SearchBoxTemplates = Partial<{
|
|
5
6
|
/**
|
|
6
7
|
* Template used for displaying the submit button. Can accept a function or a Hogan string.
|
|
7
8
|
*/
|
|
8
|
-
submit: Template
|
|
9
|
+
submit: Template<{
|
|
10
|
+
cssClasses: SearchBoxComponentCSSClasses;
|
|
11
|
+
}>;
|
|
9
12
|
/**
|
|
10
13
|
* Template used for displaying the reset button. Can accept a function or a Hogan string.
|
|
11
14
|
*/
|
|
12
|
-
reset: Template
|
|
15
|
+
reset: Template<{
|
|
16
|
+
cssClasses: SearchBoxComponentCSSClasses;
|
|
17
|
+
}>;
|
|
13
18
|
/**
|
|
14
19
|
* Template used for displaying the loading indicator. Can accept a function or a Hogan string.
|
|
15
20
|
*/
|
|
16
|
-
loadingIndicator: Template
|
|
21
|
+
loadingIndicator: Template<{
|
|
22
|
+
cssClasses: SearchBoxComponentCSSClasses;
|
|
23
|
+
}>;
|
|
17
24
|
}>;
|
|
18
25
|
export declare type SearchBoxCSSClasses = Partial<{
|
|
19
26
|
/**
|
|
@@ -2,6 +2,14 @@
|
|
|
2
2
|
import type { StatsComponentTemplates } from '../../components/Stats/Stats';
|
|
3
3
|
import type { StatsConnectorParams, StatsRenderState, StatsWidgetDescription } from '../../connectors/stats/connectStats';
|
|
4
4
|
import type { Template, WidgetFactory } from '../../types';
|
|
5
|
+
declare type TextTemplateProps = {
|
|
6
|
+
hasManyResults: boolean;
|
|
7
|
+
hasNoResults: boolean;
|
|
8
|
+
hasOneResult: boolean;
|
|
9
|
+
hasNoSortedResults: boolean;
|
|
10
|
+
hasOneSortedResults: boolean;
|
|
11
|
+
hasManySortedResults: boolean;
|
|
12
|
+
};
|
|
5
13
|
export declare type StatsCSSClasses = Partial<{
|
|
6
14
|
/**
|
|
7
15
|
* CSS class to add to the root element.
|
|
@@ -14,13 +22,9 @@ export declare type StatsCSSClasses = Partial<{
|
|
|
14
22
|
}>;
|
|
15
23
|
export declare type StatsTemplates = Partial<{
|
|
16
24
|
/**
|
|
17
|
-
* Text template, provided with `hasManyResults`, `hasNoResults`, `hasOneResult`, `hitsPerPage`, `nbHits`, `nbSortedHits`, `nbPages`, `areHitsSorted`, `page`, `processingTimeMS`, `query`.
|
|
25
|
+
* Text template, provided with `hasManyResults`, `hasNoResults`, `hasOneResult`, `hasNoSortedResults`, `hasOneSortedResults`, `hasManySortedResults`, `hitsPerPage`, `nbHits`, `nbSortedHits`, `nbPages`, `areHitsSorted`, `page`, `processingTimeMS`, `query`.
|
|
18
26
|
*/
|
|
19
|
-
text: Template<
|
|
20
|
-
hasManyResults: boolean;
|
|
21
|
-
hasNoResults: boolean;
|
|
22
|
-
hasOneResult: boolean;
|
|
23
|
-
} & StatsRenderState>;
|
|
27
|
+
text: Template<TextTemplateProps & StatsRenderState>;
|
|
24
28
|
}>;
|
|
25
29
|
export declare type StatsWidgetParams = {
|
|
26
30
|
/**
|
|
@@ -11,29 +11,76 @@ import Stats from "../../components/Stats/Stats.js";
|
|
|
11
11
|
import connectStats from "../../connectors/stats/connectStats.js";
|
|
12
12
|
import { prepareTemplateProps, getContainerNode, createDocumentationMessageGenerator } from "../../lib/utils/index.js";
|
|
13
13
|
import { component } from "../../lib/suit.js";
|
|
14
|
+
import { formatNumber } from "../../lib/formatNumber.js";
|
|
14
15
|
var withUsage = createDocumentationMessageGenerator({
|
|
15
16
|
name: 'stats'
|
|
16
17
|
});
|
|
17
18
|
var suit = component('Stats');
|
|
18
19
|
export var defaultTemplates = {
|
|
19
|
-
text:
|
|
20
|
+
text: function text(props) {
|
|
21
|
+
return "".concat(props.areHitsSorted ? getSortedResultsSentence(props) : getResultsSentence(props), " found in ").concat(props.processingTimeMS, "ms");
|
|
22
|
+
}
|
|
20
23
|
};
|
|
21
24
|
|
|
22
|
-
|
|
23
|
-
var
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
25
|
+
function getSortedResultsSentence(_ref) {
|
|
26
|
+
var nbHits = _ref.nbHits,
|
|
27
|
+
hasNoSortedResults = _ref.hasNoSortedResults,
|
|
28
|
+
hasOneSortedResults = _ref.hasOneSortedResults,
|
|
29
|
+
hasManySortedResults = _ref.hasManySortedResults,
|
|
30
|
+
nbSortedHits = _ref.nbSortedHits;
|
|
31
|
+
var suffix = "sorted out of ".concat(formatNumber(nbHits));
|
|
32
|
+
|
|
33
|
+
if (hasNoSortedResults) {
|
|
34
|
+
return "No relevant results ".concat(suffix);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
if (hasOneSortedResults) {
|
|
38
|
+
return "1 relevant result ".concat(suffix);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
if (hasManySortedResults) {
|
|
42
|
+
return "".concat(formatNumber(nbSortedHits || 0), " relevant results ").concat(suffix);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
return '';
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
function getResultsSentence(_ref2) {
|
|
49
|
+
var nbHits = _ref2.nbHits,
|
|
50
|
+
hasNoResults = _ref2.hasNoResults,
|
|
51
|
+
hasOneResult = _ref2.hasOneResult,
|
|
52
|
+
hasManyResults = _ref2.hasManyResults;
|
|
53
|
+
|
|
54
|
+
if (hasNoResults) {
|
|
55
|
+
return 'No results';
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
if (hasOneResult) {
|
|
59
|
+
return '1 result';
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
if (hasManyResults) {
|
|
63
|
+
return "".concat(formatNumber(nbHits), " results");
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
return '';
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
var renderer = function renderer(_ref3) {
|
|
70
|
+
var renderState = _ref3.renderState,
|
|
71
|
+
cssClasses = _ref3.cssClasses,
|
|
72
|
+
containerNode = _ref3.containerNode,
|
|
73
|
+
templates = _ref3.templates;
|
|
74
|
+
return function (_ref4, isFirstRendering) {
|
|
75
|
+
var hitsPerPage = _ref4.hitsPerPage,
|
|
76
|
+
nbHits = _ref4.nbHits,
|
|
77
|
+
nbSortedHits = _ref4.nbSortedHits,
|
|
78
|
+
areHitsSorted = _ref4.areHitsSorted,
|
|
79
|
+
nbPages = _ref4.nbPages,
|
|
80
|
+
page = _ref4.page,
|
|
81
|
+
processingTimeMS = _ref4.processingTimeMS,
|
|
82
|
+
query = _ref4.query,
|
|
83
|
+
instantSearchInstance = _ref4.instantSearchInstance;
|
|
37
84
|
|
|
38
85
|
if (isFirstRendering) {
|
|
39
86
|
renderState.templateProps = prepareTemplateProps({
|
|
@@ -67,12 +114,12 @@ var renderer = function renderer(_ref) {
|
|
|
67
114
|
|
|
68
115
|
|
|
69
116
|
var stats = function stats(widgetParams) {
|
|
70
|
-
var
|
|
71
|
-
container =
|
|
72
|
-
|
|
73
|
-
userCssClasses =
|
|
74
|
-
|
|
75
|
-
templates =
|
|
117
|
+
var _ref5 = widgetParams || {},
|
|
118
|
+
container = _ref5.container,
|
|
119
|
+
_ref5$cssClasses = _ref5.cssClasses,
|
|
120
|
+
userCssClasses = _ref5$cssClasses === void 0 ? {} : _ref5$cssClasses,
|
|
121
|
+
_ref5$templates = _ref5.templates,
|
|
122
|
+
templates = _ref5$templates === void 0 ? {} : _ref5$templates;
|
|
76
123
|
|
|
77
124
|
if (!container) {
|
|
78
125
|
throw new Error(withUsage('The `container` option is required.'));
|