instantsearch.js 4.45.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.
Files changed (85) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/cjs/components/Hits/Hits.js +3 -1
  3. package/cjs/components/InfiniteHits/InfiniteHits.js +3 -1
  4. package/cjs/components/Template/Template.js +13 -3
  5. package/cjs/lib/createHelpers.js +3 -1
  6. package/cjs/lib/formatNumber.js +10 -0
  7. package/cjs/lib/utils/cx.js +10 -0
  8. package/cjs/lib/utils/index.js +10 -1
  9. package/cjs/lib/utils/renderTemplate.js +17 -2
  10. package/cjs/lib/version.js +1 -1
  11. package/cjs/widgets/answers/defaultTemplates.js +6 -2
  12. package/cjs/widgets/breadcrumb/defaultTemplates.js +6 -2
  13. package/cjs/widgets/clear-refinements/defaultTemplates.js +3 -1
  14. package/cjs/widgets/geo-search/createHTMLMarker.js +10 -4
  15. package/cjs/widgets/geo-search/defaultTemplates.js +18 -4
  16. package/cjs/widgets/hierarchical-menu/defaultTemplates.js +26 -2
  17. package/cjs/widgets/hits/defaultTemplates.js +3 -1
  18. package/cjs/widgets/infinite-hits/defaultTemplates.js +9 -3
  19. package/cjs/widgets/menu/defaultTemplates.js +26 -2
  20. package/cjs/widgets/menu-select/defaultTemplates.js +11 -2
  21. package/cjs/widgets/numeric-menu/defaultTemplates.js +20 -1
  22. package/cjs/widgets/range-input/range-input.js +6 -2
  23. package/cjs/widgets/rating-menu/defaultTemplates.js +57 -1
  24. package/cjs/widgets/refinement-list/defaultTemplates.js +38 -3
  25. package/cjs/widgets/relevant-sort/defaultTemplates.js +3 -1
  26. package/cjs/widgets/search-box/defaultTemplates.js +62 -3
  27. package/cjs/widgets/stats/stats.js +70 -22
  28. package/cjs/widgets/toggle-refinement/defaultTemplates.js +4 -1
  29. package/cjs/widgets/voice-search/defaultTemplates.js +81 -9
  30. package/dist/instantsearch.development.d.ts +142 -19
  31. package/dist/instantsearch.development.js +1232 -563
  32. package/dist/instantsearch.development.js.map +1 -1
  33. package/dist/instantsearch.production.d.ts +142 -19
  34. package/dist/instantsearch.production.min.d.ts +142 -19
  35. package/dist/instantsearch.production.min.js +2 -2
  36. package/dist/instantsearch.production.min.js.map +1 -1
  37. package/es/components/Hits/Hits.d.ts +1 -1
  38. package/es/components/Hits/Hits.js +3 -1
  39. package/es/components/InfiniteHits/InfiniteHits.d.ts +1 -1
  40. package/es/components/InfiniteHits/InfiniteHits.js +3 -1
  41. package/es/components/Template/Template.d.ts +4 -2
  42. package/es/components/Template/Template.js +14 -4
  43. package/es/lib/createHelpers.js +2 -1
  44. package/es/lib/formatNumber.d.ts +1 -0
  45. package/es/lib/formatNumber.js +3 -0
  46. package/es/lib/utils/cx.d.ts +1 -0
  47. package/es/lib/utils/cx.js +3 -0
  48. package/es/lib/utils/index.d.ts +1 -0
  49. package/es/lib/utils/index.js +2 -1
  50. package/es/lib/utils/renderTemplate.d.ts +4 -3
  51. package/es/lib/utils/renderTemplate.js +15 -2
  52. package/es/lib/version.d.ts +1 -1
  53. package/es/lib/version.js +1 -1
  54. package/es/types/templates.d.ts +16 -3
  55. package/es/widgets/answers/defaultTemplates.js +6 -2
  56. package/es/widgets/breadcrumb/defaultTemplates.js +6 -2
  57. package/es/widgets/clear-refinements/clear-refinements.d.ts +3 -1
  58. package/es/widgets/clear-refinements/defaultTemplates.js +3 -1
  59. package/es/widgets/geo-search/createHTMLMarker.d.ts +2 -1
  60. package/es/widgets/geo-search/createHTMLMarker.js +8 -1
  61. package/es/widgets/geo-search/defaultTemplates.d.ts +1 -0
  62. package/es/widgets/geo-search/defaultTemplates.js +17 -4
  63. package/es/widgets/hierarchical-menu/defaultTemplates.js +22 -2
  64. package/es/widgets/hierarchical-menu/hierarchical-menu.d.ts +2 -0
  65. package/es/widgets/hits/defaultTemplates.js +3 -1
  66. package/es/widgets/hits/hits.d.ts +2 -1
  67. package/es/widgets/infinite-hits/defaultTemplates.js +9 -3
  68. package/es/widgets/infinite-hits/infinite-hits.d.ts +1 -3
  69. package/es/widgets/menu/defaultTemplates.js +22 -2
  70. package/es/widgets/menu-select/defaultTemplates.js +9 -2
  71. package/es/widgets/numeric-menu/defaultTemplates.js +18 -1
  72. package/es/widgets/range-input/range-input.js +6 -2
  73. package/es/widgets/rating-menu/defaultTemplates.js +54 -1
  74. package/es/widgets/rating-menu/rating-menu.d.ts +6 -0
  75. package/es/widgets/refinement-list/defaultTemplates.js +34 -3
  76. package/es/widgets/refinement-list/refinement-list.d.ts +7 -1
  77. package/es/widgets/relevant-sort/defaultTemplates.js +3 -1
  78. package/es/widgets/search-box/defaultTemplates.js +61 -3
  79. package/es/widgets/search-box/search-box.d.ts +10 -3
  80. package/es/widgets/stats/stats.d.ts +10 -6
  81. package/es/widgets/stats/stats.js +69 -22
  82. package/es/widgets/toggle-refinement/defaultTemplates.js +4 -1
  83. package/es/widgets/toggle-refinement/toggle-refinement.d.ts +3 -1
  84. package/es/widgets/voice-search/defaultTemplates.js +81 -9
  85. package/package.json +6 -5
@@ -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: "<label class=\"{{cssClasses.label}}\">\n <input type=\"checkbox\"\n class=\"{{cssClasses.checkbox}}\"\n value=\"{{value}}\"\n {{#isRefined}}checked{{/isRefined}} />\n <span class=\"{{cssClasses.labelText}}\">{{#isFromSearch}}{{{highlighted}}}{{/isFromSearch}}{{^isFromSearch}}{{highlighted}}{{/isFromSearch}}</span>\n <span class=\"{{cssClasses.count}}\">{{#helpers.formatNumber}}{{count}}{{/helpers.formatNumber}}</span>\n</label>",
3
- showMoreText: "\n {{#isShowingMore}}\n Show less\n {{/isShowingMore}}\n {{^isShowingMore}}\n Show more\n {{/isShowingMore}}\n ",
4
- searchableNoResults: 'No results'
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,5 +1,7 @@
1
1
  var defaultTemplates = {
2
- text: '',
2
+ text: function text() {
3
+ return '';
4
+ },
3
5
  button: function button(_ref) {
4
6
  var isRelevantSorted = _ref.isRelevantSorted;
5
7
  return isRelevantSorted ? 'See all results' : 'See relevant results';
@@ -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: "\n<svg class=\"{{cssClasses.resetIcon}}\" viewBox=\"0 0 20 20\" width=\"10\" height=\"10\">\n <path 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\"></path>\n</svg>\n ",
3
- submit: "\n<svg class=\"{{cssClasses.submitIcon}}\" width=\"10\" height=\"10\" viewBox=\"0 0 40 40\">\n <path 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\"></path>\n</svg>\n ",
4
- loadingIndicator: "\n<svg class=\"{{cssClasses.loadingIcon}}\" width=\"16\" height=\"16\" viewBox=\"0 0 38 38\" stroke=\"#444\">\n <g fill=\"none\" fillRule=\"evenodd\">\n <g transform=\"translate(1 1)\" strokeWidth=\"2\">\n <circle strokeOpacity=\".5\" cx=\"18\" cy=\"18\" r=\"18\" />\n <path d=\"M36 18c0-9.94-8.06-18-18-18\">\n <animateTransform\n attributeName=\"transform\"\n type=\"rotate\"\n from=\"0 18 18\"\n to=\"360 18 18\"\n dur=\"1s\"\n repeatCount=\"indefinite\"\n />\n </path>\n </g>\n </g>\n</svg>\n "
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: "\n {{#areHitsSorted}}\n {{#hasNoSortedResults}}No relevant results{{/hasNoSortedResults}}\n {{#hasOneSortedResults}}1 relevant result{{/hasOneSortedResults}}\n {{#hasManySortedResults}}{{#helpers.formatNumber}}{{nbSortedHits}}{{/helpers.formatNumber}} relevant results{{/hasManySortedResults}}\n sorted out of {{#helpers.formatNumber}}{{nbHits}}{{/helpers.formatNumber}}\n {{/areHitsSorted}}\n {{^areHitsSorted}}\n {{#hasNoResults}}No results{{/hasNoResults}}\n {{#hasOneResult}}1 result{{/hasOneResult}}\n {{#hasManyResults}}{{#helpers.formatNumber}}{{nbHits}}{{/helpers.formatNumber}} results{{/hasManyResults}}\n {{/areHitsSorted}}\n found in {{processingTimeMS}}ms"
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
- var renderer = function renderer(_ref) {
23
- var renderState = _ref.renderState,
24
- cssClasses = _ref.cssClasses,
25
- containerNode = _ref.containerNode,
26
- templates = _ref.templates;
27
- return function (_ref2, isFirstRendering) {
28
- var hitsPerPage = _ref2.hitsPerPage,
29
- nbHits = _ref2.nbHits,
30
- nbSortedHits = _ref2.nbSortedHits,
31
- areHitsSorted = _ref2.areHitsSorted,
32
- nbPages = _ref2.nbPages,
33
- page = _ref2.page,
34
- processingTimeMS = _ref2.processingTimeMS,
35
- query = _ref2.query,
36
- instantSearchInstance = _ref2.instantSearchInstance;
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 _ref3 = widgetParams || {},
71
- container = _ref3.container,
72
- _ref3$cssClasses = _ref3.cssClasses,
73
- userCssClasses = _ref3$cssClasses === void 0 ? {} : _ref3$cssClasses,
74
- _ref3$templates = _ref3.templates,
75
- templates = _ref3$templates === void 0 ? {} : _ref3$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.'));
@@ -1,4 +1,7 @@
1
1
  var defaultTemplates = {
2
- labelText: '{{name}}'
2
+ labelText: function labelText(_ref) {
3
+ var name = _ref.name;
4
+ return name;
5
+ }
3
6
  };
4
7
  export default defaultTemplates;
@@ -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
  /**
@@ -1,18 +1,90 @@
1
- var getButtonInnerElement = function getButtonInnerElement(status, errorCode, isListening) {
1
+ /** @jsx h */
2
+ import { Fragment, h } from 'preact';
3
+
4
+ var _ref2 = h(Fragment, null, h("line", {
5
+ x1: "1",
6
+ y1: "1",
7
+ x2: "23",
8
+ y2: "23"
9
+ }), h("path", {
10
+ d: "M9 9v3a3 3 0 0 0 5.12 2.12M15 9.34V4a3 3 0 0 0-5.94-.6"
11
+ }), h("path", {
12
+ d: "M17 16.95A7 7 0 0 1 5 12v-2m14 0v2a7 7 0 0 1-.11 1.23"
13
+ }), h("line", {
14
+ x1: "12",
15
+ y1: "19",
16
+ x2: "12",
17
+ y2: "23"
18
+ }), h("line", {
19
+ x1: "8",
20
+ y1: "23",
21
+ x2: "16",
22
+ y2: "23"
23
+ }));
24
+
25
+ var _ref3 = h("path", {
26
+ d: "M19 10v2a7 7 0 0 1-14 0v-2"
27
+ });
28
+
29
+ var _ref4 = h("line", {
30
+ x1: "12",
31
+ y1: "19",
32
+ x2: "12",
33
+ y2: "23"
34
+ });
35
+
36
+ var _ref5 = h("line", {
37
+ x1: "8",
38
+ y1: "23",
39
+ x2: "16",
40
+ y2: "23"
41
+ });
42
+
43
+ var ButtonInnerElement = function ButtonInnerElement(_ref) {
44
+ var status = _ref.status,
45
+ errorCode = _ref.errorCode,
46
+ isListening = _ref.isListening;
47
+
2
48
  if (status === 'error' && errorCode === 'not-allowed') {
3
- return "<line x1=\"1\" y1=\"1\" x2=\"23\" y2=\"23\"></line>\n <path d=\"M9 9v3a3 3 0 0 0 5.12 2.12M15 9.34V4a3 3 0 0 0-5.94-.6\"></path>\n <path d=\"M17 16.95A7 7 0 0 1 5 12v-2m14 0v2a7 7 0 0 1-.11 1.23\"></path>\n <line x1=\"12\" y1=\"19\" x2=\"12\" y2=\"23\"></line>\n <line x1=\"8\" y1=\"23\" x2=\"16\" y2=\"23\"></line>";
49
+ return _ref2;
4
50
  }
5
51
 
6
- return "<path\n d=\"M12 1a3 3 0 0 0-3 3v8a3 3 0 0 0 6 0V4a3 3 0 0 0-3-3z\"\n fill=\"".concat(isListening ? 'currentColor' : 'none', "\">\n </path>\n <path d=\"M19 10v2a7 7 0 0 1-14 0v-2\"></path>\n <line x1=\"12\" y1=\"19\" x2=\"12\" y2=\"23\"></line>\n <line x1=\"8\" y1=\"23\" x2=\"16\" y2=\"23\"></line>");
52
+ return h(Fragment, null, h("path", {
53
+ d: "M12 1a3 3 0 0 0-3 3v8a3 3 0 0 0 6 0V4a3 3 0 0 0-3-3z",
54
+ fill: isListening ? 'currentColor' : 'none'
55
+ }), _ref3, _ref4, _ref5);
7
56
  };
8
57
 
9
58
  var defaultTemplates = {
10
- buttonText: function buttonText(_ref) {
11
- var status = _ref.status,
12
- errorCode = _ref.errorCode,
13
- isListening = _ref.isListening;
14
- return "<svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n >\n ".concat(getButtonInnerElement(status, errorCode, isListening), "\n </svg>");
59
+ buttonText: function buttonText(_ref6) {
60
+ var status = _ref6.status,
61
+ errorCode = _ref6.errorCode,
62
+ isListening = _ref6.isListening;
63
+ return h("svg", {
64
+ width: "16",
65
+ height: "16",
66
+ viewBox: "0 0 24 24",
67
+ fill: "none",
68
+ stroke: "currentColor"
69
+ /* eslint-disable react/no-unknown-property */
70
+ // Preact supports kebab case attributes, and using camel case would
71
+ // require using `preact/compat`.
72
+ // @TODO: reconsider using the `react` ESLint preset
73
+ ,
74
+ "stroke-width": "2",
75
+ "stroke-linecap": "round",
76
+ "stroke-linejoin": "round"
77
+ /* eslint-enable react/no-unknown-property */
78
+
79
+ }, h(ButtonInnerElement, {
80
+ status: status,
81
+ errorCode: errorCode,
82
+ isListening: isListening
83
+ }));
15
84
  },
16
- status: "<p>{{transcript}}</p>"
85
+ status: function status(_ref7) {
86
+ var transcript = _ref7.transcript;
87
+ return h("p", null, transcript);
88
+ }
17
89
  };
18
90
  export default defaultTemplates;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "instantsearch.js",
3
- "version": "4.45.1",
3
+ "version": "4.46.0",
4
4
  "description": "InstantSearch.js is a JavaScript library for building performant and instant search experiences with Algolia.",
5
5
  "homepage": "https://www.algolia.com/doc/guides/building-search-ui/what-is-instantsearch/js/",
6
6
  "types": "es/index.d.ts",
@@ -63,7 +63,7 @@
63
63
  "classnames": "^2.2.5",
64
64
  "hogan.js": "^3.0.2",
65
65
  "htm": "^3.0.0",
66
- "preact": "^10.6.0",
66
+ "preact": "^10.10.0",
67
67
  "qs": "^6.5.1 < 6.10",
68
68
  "search-insights": "^2.1.0"
69
69
  },
@@ -76,12 +76,13 @@
76
76
  "@babel/preset-env": "7.9.6",
77
77
  "@babel/preset-react": "7.9.4",
78
78
  "@babel/preset-typescript": "7.9.0",
79
+ "@googlemaps/jest-mocks": "2.7.5",
79
80
  "@microsoft/api-extractor": "7.18.0",
80
81
  "@storybook/addon-actions": "5.3.9",
81
82
  "@storybook/html": "5.3.9",
82
83
  "@storybook/theming": "5.3.9",
83
84
  "@testing-library/dom": "7.9.0",
84
- "@testing-library/jest-dom": "4.1.0",
85
+ "@testing-library/jest-dom": "4.2.0",
85
86
  "@testing-library/preact": "1.0.2",
86
87
  "@types/classnames": "^2.2.7",
87
88
  "@types/enzyme": "^3.1.15",
@@ -158,11 +159,11 @@
158
159
  "bundlesize": [
159
160
  {
160
161
  "path": "./dist/instantsearch.production.min.js",
161
- "maxSize": "70.50 kB"
162
+ "maxSize": "72.25 kB"
162
163
  },
163
164
  {
164
165
  "path": "./dist/instantsearch.development.js",
165
- "maxSize": "152.00 kB"
166
+ "maxSize": "155.25 kB"
166
167
  }
167
168
  ]
168
169
  }