instantsearch.js 4.45.1 → 4.46.1
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 +21 -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/toggle-refinement/connectToggleRefinement.js +3 -1
- package/cjs/helpers/components/Highlight.js +7 -7
- package/cjs/helpers/components/ReverseHighlight.js +7 -7
- package/cjs/helpers/components/ReverseSnippet.js +7 -7
- package/cjs/helpers/components/Snippet.js +7 -7
- package/cjs/lib/InstantSearch.js +33 -24
- package/cjs/lib/createHelpers.js +3 -1
- package/cjs/lib/formatNumber.js +10 -0
- package/cjs/lib/utils/capitalize.js +2 -5
- package/cjs/lib/utils/checkIndexUiState.js +3 -5
- package/cjs/lib/utils/checkRendering.js +4 -9
- package/cjs/lib/utils/clearRefinements.js +3 -9
- package/cjs/lib/utils/concatHighlightedParts.js +1 -1
- package/cjs/lib/utils/createSendEventForFacet.js +2 -4
- package/cjs/lib/utils/cx.js +10 -0
- package/cjs/lib/utils/defer.js +3 -6
- package/cjs/lib/utils/detect-insights-client.js +1 -1
- package/cjs/lib/utils/documentation.js +6 -9
- package/cjs/lib/utils/escape-highlight.js +4 -6
- package/cjs/lib/utils/escape-html.js +60 -0
- package/cjs/lib/utils/find.js +2 -5
- package/cjs/lib/utils/findIndex.js +2 -5
- package/cjs/lib/utils/getContainerNode.js +4 -9
- package/cjs/lib/utils/getHighlightFromSiblings.js +3 -5
- package/cjs/lib/utils/getHighlightedParts.js +1 -1
- package/cjs/lib/utils/getObjectType.js +2 -5
- package/cjs/lib/utils/getPropertyByPath.js +2 -5
- package/cjs/lib/utils/getRefinements.js +4 -6
- package/cjs/lib/utils/index.js +563 -432
- package/cjs/lib/utils/isDomElement.js +2 -5
- package/cjs/lib/utils/isEqual.js +2 -5
- package/cjs/lib/utils/isFacetRefined.js +1 -1
- package/cjs/lib/utils/isFiniteNumber.js +3 -5
- package/cjs/lib/utils/isIndexWidget.js +10 -0
- package/cjs/lib/utils/isPlainObject.js +2 -5
- package/cjs/lib/utils/isSpecialClick.js +2 -5
- package/cjs/lib/utils/logger.js +3 -5
- package/cjs/lib/utils/mergeSearchParameters.js +7 -10
- package/cjs/lib/utils/noop.js +2 -5
- package/cjs/lib/utils/prepareTemplateProps.js +4 -9
- package/cjs/lib/utils/range.js +2 -5
- package/cjs/lib/utils/renderTemplate.js +19 -7
- package/cjs/lib/utils/resolveSearchParameters.js +3 -6
- package/cjs/lib/utils/reverseHighlightedParts.js +3 -5
- package/cjs/lib/utils/setIndexHelperState.js +28 -0
- package/cjs/lib/utils/toArray.js +2 -5
- package/cjs/lib/utils/uniq.js +2 -5
- package/cjs/lib/version.js +1 -1
- package/cjs/middlewares/createInsightsMiddleware.js +23 -30
- package/cjs/middlewares/createMetadataMiddleware.js +1 -0
- package/cjs/middlewares/createRouterMiddleware.js +1 -0
- package/cjs/widgets/answers/defaultTemplates.js +6 -2
- package/cjs/widgets/breadcrumb/defaultTemplates.js +6 -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/index/index.js +8 -12
- 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 +153 -22
- package/dist/instantsearch.development.js +2842 -2112
- package/dist/instantsearch.development.js.map +1 -1
- package/dist/instantsearch.production.d.ts +153 -22
- package/dist/instantsearch.production.min.d.ts +153 -22
- package/dist/instantsearch.production.min.js +2 -2
- package/dist/instantsearch.production.min.js.map +1 -1
- package/es/components/Breadcrumb/Breadcrumb.d.ts +1 -1
- package/es/components/ClearRefinements/ClearRefinements.d.ts +1 -1
- package/es/components/GeoSearchControls/GeoSearchControls.d.ts +1 -1
- package/es/components/Hits/Hits.d.ts +2 -3
- package/es/components/Hits/Hits.js +3 -1
- package/es/components/InfiniteHits/InfiniteHits.d.ts +1 -1
- package/es/components/InfiniteHits/InfiniteHits.js +3 -1
- package/es/components/RefinementList/RefinementList.d.ts +1 -1
- package/es/components/Template/Template.d.ts +4 -3
- package/es/components/Template/Template.js +14 -4
- package/es/components/ToggleRefinement/ToggleRefinement.d.ts +1 -4
- package/es/components/ToggleRefinement/ToggleRefinement.js +0 -4
- package/es/connectors/toggle-refinement/connectToggleRefinement.d.ts +3 -2
- package/es/connectors/toggle-refinement/connectToggleRefinement.js +3 -1
- package/es/helpers/components/Highlight.js +7 -5
- package/es/helpers/components/ReverseHighlight.js +7 -5
- package/es/helpers/components/ReverseSnippet.js +7 -5
- package/es/helpers/components/Snippet.js +7 -5
- package/es/lib/InstantSearch.d.ts +6 -1
- package/es/lib/InstantSearch.js +34 -21
- 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/utils/capitalize.d.ts +1 -2
- package/es/lib/utils/capitalize.js +2 -4
- package/es/lib/utils/checkIndexUiState.js +1 -1
- package/es/lib/utils/checkRendering.d.ts +1 -2
- package/es/lib/utils/checkRendering.js +3 -6
- package/es/lib/utils/clearRefinements.d.ts +4 -8
- package/es/lib/utils/clearRefinements.js +3 -8
- package/es/lib/utils/concatHighlightedParts.d.ts +1 -1
- package/es/lib/utils/concatHighlightedParts.js +1 -1
- package/es/lib/utils/createSendEventForFacet.js +1 -1
- package/es/lib/utils/createSendEventForHits.d.ts +0 -3
- package/es/lib/utils/createSendEventForHits.js +0 -3
- package/es/lib/utils/cx.d.ts +1 -0
- package/es/lib/utils/cx.js +3 -0
- package/es/lib/utils/defer.d.ts +2 -2
- package/es/lib/utils/defer.js +2 -5
- package/es/lib/utils/detect-insights-client.d.ts +1 -1
- package/es/lib/utils/detect-insights-client.js +1 -1
- package/es/lib/utils/documentation.d.ts +2 -2
- package/es/lib/utils/documentation.js +4 -4
- package/es/lib/utils/escape-highlight.js +2 -2
- package/es/lib/utils/{escape.d.ts → escape-html.d.ts} +6 -2
- package/es/lib/utils/escape-html.js +51 -0
- package/es/lib/utils/escapeFacetValue.d.ts +1 -1
- package/es/lib/utils/find.d.ts +1 -2
- package/es/lib/utils/find.js +2 -4
- package/es/lib/utils/findIndex.d.ts +1 -2
- package/es/lib/utils/findIndex.js +2 -4
- package/es/lib/utils/getContainerNode.d.ts +1 -2
- package/es/lib/utils/getContainerNode.js +3 -5
- package/es/lib/utils/getHighlightFromSiblings.d.ts +1 -1
- package/es/lib/utils/getHighlightFromSiblings.js +2 -2
- package/es/lib/utils/getHighlightedParts.d.ts +1 -1
- package/es/lib/utils/getHighlightedParts.js +1 -1
- package/es/lib/utils/getObjectType.d.ts +1 -2
- package/es/lib/utils/getObjectType.js +2 -4
- package/es/lib/utils/getPropertyByPath.d.ts +1 -2
- package/es/lib/utils/getPropertyByPath.js +2 -4
- package/es/lib/utils/getRefinements.d.ts +1 -1
- package/es/lib/utils/getRefinements.js +2 -2
- package/es/lib/utils/index.d.ts +46 -45
- package/es/lib/utils/index.js +46 -45
- package/es/lib/utils/isDomElement.d.ts +1 -2
- package/es/lib/utils/isDomElement.js +2 -4
- package/es/lib/utils/isEqual.d.ts +1 -2
- package/es/lib/utils/isEqual.js +2 -4
- package/es/lib/utils/isFacetRefined.d.ts +1 -1
- package/es/lib/utils/isFacetRefined.js +1 -1
- package/es/lib/utils/isFiniteNumber.d.ts +1 -2
- package/es/lib/utils/isFiniteNumber.js +3 -4
- package/es/lib/utils/isIndexWidget.d.ts +3 -0
- package/es/lib/utils/isIndexWidget.js +3 -0
- package/es/lib/utils/isPlainObject.d.ts +1 -2
- package/es/lib/utils/isPlainObject.js +2 -4
- package/es/lib/utils/isSpecialClick.d.ts +1 -2
- package/es/lib/utils/isSpecialClick.js +2 -4
- package/es/lib/utils/logger.js +1 -1
- package/es/lib/utils/mergeSearchParameters.d.ts +1 -2
- package/es/lib/utils/mergeSearchParameters.js +4 -6
- package/es/lib/utils/noop.d.ts +1 -2
- package/es/lib/utils/noop.js +1 -3
- package/es/lib/utils/prepareTemplateProps.d.ts +2 -2
- package/es/lib/utils/prepareTemplateProps.js +3 -5
- package/es/lib/utils/range.d.ts +2 -2
- package/es/lib/utils/range.js +2 -4
- package/es/lib/utils/renderTemplate.d.ts +4 -4
- package/es/lib/utils/renderTemplate.js +17 -6
- package/es/lib/utils/resolveSearchParameters.d.ts +1 -2
- package/es/lib/utils/resolveSearchParameters.js +2 -4
- package/es/lib/utils/reverseHighlightedParts.d.ts +1 -1
- package/es/lib/utils/reverseHighlightedParts.js +2 -2
- package/es/lib/utils/setIndexHelperState.d.ts +3 -0
- package/es/lib/utils/setIndexHelperState.js +19 -0
- package/es/lib/utils/toArray.d.ts +3 -2
- package/es/lib/utils/toArray.js +2 -4
- package/es/lib/utils/uniq.d.ts +1 -2
- package/es/lib/utils/uniq.js +2 -4
- package/es/lib/version.d.ts +1 -1
- package/es/lib/version.js +1 -1
- package/es/middlewares/createInsightsMiddleware.js +23 -27
- package/es/middlewares/createMetadataMiddleware.js +1 -0
- package/es/middlewares/createRouterMiddleware.js +1 -0
- package/es/types/middleware.d.ts +1 -0
- 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/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/index/index.d.ts +0 -1
- package/es/widgets/index/index.js +5 -6
- 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 +8 -7
- package/cjs/lib/utils/convertNumericRefinementsToFilters.js +0 -31
- package/cjs/lib/utils/escape.js +0 -35
- package/cjs/lib/utils/unescape.js +0 -32
- package/es/lib/utils/convertNumericRefinementsToFilters.d.ts +0 -2
- package/es/lib/utils/convertNumericRefinementsToFilters.js +0 -24
- package/es/lib/utils/escape.js +0 -27
- package/es/lib/utils/unescape.d.ts +0 -9
- package/es/lib/utils/unescape.js +0 -25
|
@@ -21,19 +21,16 @@ function _objectWithoutProperties(source, excluded) { if (source == null) return
|
|
|
21
21
|
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
|
|
22
22
|
|
|
23
23
|
import algoliasearchHelper from 'algoliasearch-helper';
|
|
24
|
-
import { checkIndexUiState, createDocumentationMessageGenerator, resolveSearchParameters, mergeSearchParameters, warning } from "../../lib/utils/index.js";
|
|
24
|
+
import { checkIndexUiState, createDocumentationMessageGenerator, resolveSearchParameters, mergeSearchParameters, warning, isIndexWidget } from "../../lib/utils/index.js";
|
|
25
25
|
var withUsage = createDocumentationMessageGenerator({
|
|
26
26
|
name: 'index-widget'
|
|
27
27
|
});
|
|
28
|
-
|
|
29
|
-
return widget.$$type === 'ais.index';
|
|
30
|
-
}
|
|
28
|
+
|
|
31
29
|
/**
|
|
32
30
|
* This is the same content as helper._change / setState, but allowing for extra
|
|
33
31
|
* UiState to be synchronized.
|
|
34
32
|
* see: https://github.com/algolia/algoliasearch-helper-js/blob/6b835ffd07742f2d6b314022cce6848f5cfecd4a/src/algoliasearch.helper.js#L1311-L1324
|
|
35
33
|
*/
|
|
36
|
-
|
|
37
34
|
function privateHelperSetState(helper, _ref) {
|
|
38
35
|
var state = _ref.state,
|
|
39
36
|
isPageReset = _ref.isPageReset,
|
|
@@ -312,7 +309,9 @@ var index = function index(widgetParams) {
|
|
|
312
309
|
if (instantSearchInstance.onStateChange) {
|
|
313
310
|
instantSearchInstance.onStateChange({
|
|
314
311
|
uiState: instantSearchInstance.mainIndex.getWidgetUiState({}),
|
|
315
|
-
setUiState:
|
|
312
|
+
setUiState: function setUiState(nextState) {
|
|
313
|
+
return instantSearchInstance.setUiState(nextState, false);
|
|
314
|
+
}
|
|
316
315
|
}); // We don't trigger a search when controlled because it becomes the
|
|
317
316
|
// responsibility of `setUiState`.
|
|
318
317
|
|
|
@@ -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.'));
|
|
@@ -23,7 +23,9 @@ export declare type ToggleRefinementTemplates = Partial<{
|
|
|
23
23
|
/**
|
|
24
24
|
* the text that describes the toggle action
|
|
25
25
|
*/
|
|
26
|
-
labelText: Template<ToggleRefinementValue
|
|
26
|
+
labelText: Template<ToggleRefinementValue & {
|
|
27
|
+
name: string;
|
|
28
|
+
}>;
|
|
27
29
|
}>;
|
|
28
30
|
export declare type ToggleRefinementWidgetParams = {
|
|
29
31
|
/**
|