react-instantsearch 7.25.0 → 7.26.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/dist/cjs/components/AutocompleteSearch.js +25 -36
- package/dist/cjs/components/Carousel.js +25 -39
- package/dist/cjs/components/index.js +6 -15
- package/dist/cjs/index.js +85 -44
- package/dist/cjs/lib/useStickToBottom.js +11 -17
- package/dist/cjs/package.json +4 -1
- package/dist/cjs/types/PartialKeys.js +2 -1
- package/dist/cjs/types/Translatable.js +2 -1
- package/dist/cjs/types/index.js +1 -26
- package/dist/cjs/ui/Breadcrumb.js +52 -57
- package/dist/cjs/ui/ClearRefinements.js +23 -28
- package/dist/cjs/ui/CurrentRefinements.js +48 -50
- package/dist/cjs/ui/HierarchicalMenu.js +71 -79
- package/dist/cjs/ui/Highlight.js +21 -25
- package/dist/cjs/ui/HitsPerPage.js +31 -34
- package/dist/cjs/ui/InfiniteHits.js +83 -88
- package/dist/cjs/ui/InternalHighlight.js +9 -10
- package/dist/cjs/ui/Menu.js +53 -56
- package/dist/cjs/ui/Pagination.js +117 -124
- package/dist/cjs/ui/PoweredBy.js +33 -37
- package/dist/cjs/ui/RangeInput.js +96 -116
- package/dist/cjs/ui/RefinementList.js +66 -67
- package/dist/cjs/ui/ReverseHighlight.js +21 -25
- package/dist/cjs/ui/SearchBox.js +141 -151
- package/dist/cjs/ui/ShowMoreButton.js +14 -17
- package/dist/cjs/ui/Snippet.js +21 -25
- package/dist/cjs/ui/SortBy.js +32 -36
- package/dist/cjs/ui/Stats.js +29 -32
- package/dist/cjs/ui/ToggleRefinement.js +30 -33
- package/dist/cjs/ui/lib/capitalize.js +5 -7
- package/dist/cjs/ui/lib/index.js +8 -26
- package/dist/cjs/ui/lib/isModifierClick.js +6 -8
- package/dist/cjs/widgets/Autocomplete.js +450 -491
- package/dist/cjs/widgets/Breadcrumb.js +34 -47
- package/dist/cjs/widgets/Chat.js +174 -221
- package/dist/cjs/widgets/ClearRefinements.js +31 -42
- package/dist/cjs/widgets/CurrentRefinements.js +27 -32
- package/dist/cjs/widgets/FilterSuggestions.js +46 -53
- package/dist/cjs/widgets/FrequentlyBoughtTogether.js +66 -74
- package/dist/cjs/widgets/HierarchicalMenu.js +53 -68
- package/dist/cjs/widgets/Highlight.js +31 -31
- package/dist/cjs/widgets/Hits.js +59 -64
- package/dist/cjs/widgets/HitsPerPage.js +32 -38
- package/dist/cjs/widgets/InfiniteHits.js +44 -61
- package/dist/cjs/widgets/LookingSimilar.js +66 -74
- package/dist/cjs/widgets/Menu.js +48 -62
- package/dist/cjs/widgets/Pagination.js +59 -74
- package/dist/cjs/widgets/PoweredBy.js +14 -17
- package/dist/cjs/widgets/RangeInput.js +38 -51
- package/dist/cjs/widgets/RefinementList.js +100 -125
- package/dist/cjs/widgets/RelatedProducts.js +66 -74
- package/dist/cjs/widgets/ReverseHighlight.js +38 -44
- package/dist/cjs/widgets/SearchBox.js +63 -86
- package/dist/cjs/widgets/Snippet.js +31 -31
- package/dist/cjs/widgets/SortBy.js +26 -32
- package/dist/cjs/widgets/Stats.js +54 -68
- package/dist/cjs/widgets/ToggleRefinement.js +33 -38
- package/dist/cjs/widgets/TrendingItems.js +70 -78
- package/dist/cjs/widgets/chat/tools/SearchIndexTool.js +92 -99
- package/dist/cjs/widgets/index.js +77 -289
- package/dist/cjs/widgets/index.umd.js +68 -322
- package/dist/es/components/AutocompleteSearch.js +22 -28
- package/dist/es/components/Carousel.js +23 -31
- package/dist/es/components/index.js +1 -1
- package/dist/es/index.js +29 -4
- package/dist/es/lib/useStickToBottom.js +10 -12
- package/dist/es/package.json +4 -0
- package/dist/es/types/PartialKeys.js +1 -1
- package/dist/es/types/Translatable.js +1 -1
- package/dist/es/types/index.js +1 -2
- package/dist/es/ui/Breadcrumb.js +49 -49
- package/dist/es/ui/ClearRefinements.js +21 -21
- package/dist/es/ui/CurrentRefinements.js +46 -43
- package/dist/es/ui/HierarchicalMenu.js +68 -71
- package/dist/es/ui/Highlight.js +19 -18
- package/dist/es/ui/HitsPerPage.js +29 -27
- package/dist/es/ui/InfiniteHits.js +80 -80
- package/dist/es/ui/InternalHighlight.js +7 -4
- package/dist/es/ui/Menu.js +51 -49
- package/dist/es/ui/Pagination.js +114 -116
- package/dist/es/ui/PoweredBy.js +31 -30
- package/dist/es/ui/RangeInput.js +93 -107
- package/dist/es/ui/RefinementList.js +64 -60
- package/dist/es/ui/ReverseHighlight.js +19 -18
- package/dist/es/ui/SearchBox.js +138 -143
- package/dist/es/ui/ShowMoreButton.js +13 -11
- package/dist/es/ui/Snippet.js +19 -18
- package/dist/es/ui/SortBy.js +30 -29
- package/dist/es/ui/Stats.js +27 -25
- package/dist/es/ui/ToggleRefinement.js +28 -26
- package/dist/es/ui/lib/capitalize.js +5 -3
- package/dist/es/ui/lib/index.js +2 -2
- package/dist/es/ui/lib/isModifierClick.js +6 -4
- package/dist/es/widgets/Autocomplete.js +438 -474
- package/dist/es/widgets/Breadcrumb.js +31 -39
- package/dist/es/widgets/Chat.js +164 -196
- package/dist/es/widgets/ClearRefinements.js +28 -34
- package/dist/es/widgets/CurrentRefinements.js +24 -24
- package/dist/es/widgets/FilterSuggestions.js +41 -42
- package/dist/es/widgets/FrequentlyBoughtTogether.js +62 -65
- package/dist/es/widgets/HierarchicalMenu.js +50 -60
- package/dist/es/widgets/Highlight.js +30 -25
- package/dist/es/widgets/Hits.js +54 -53
- package/dist/es/widgets/HitsPerPage.js +29 -30
- package/dist/es/widgets/InfiniteHits.js +41 -53
- package/dist/es/widgets/LookingSimilar.js +62 -65
- package/dist/es/widgets/Menu.js +45 -54
- package/dist/es/widgets/Pagination.js +56 -66
- package/dist/es/widgets/PoweredBy.js +12 -10
- package/dist/es/widgets/RangeInput.js +35 -43
- package/dist/es/widgets/RefinementList.js +98 -118
- package/dist/es/widgets/RelatedProducts.js +61 -64
- package/dist/es/widgets/ReverseHighlight.js +36 -37
- package/dist/es/widgets/SearchBox.js +61 -79
- package/dist/es/widgets/Snippet.js +30 -25
- package/dist/es/widgets/SortBy.js +23 -24
- package/dist/es/widgets/Stats.js +51 -60
- package/dist/es/widgets/ToggleRefinement.js +30 -30
- package/dist/es/widgets/TrendingItems.js +65 -68
- package/dist/es/widgets/chat/tools/SearchIndexTool.js +89 -91
- package/dist/es/widgets/index.js +27 -26
- package/dist/es/widgets/index.umd.js +36 -33
- package/dist/umd/ReactInstantSearch.js +23411 -30098
- package/dist/umd/ReactInstantSearch.min.js +3 -3
- package/package.json +8 -12
- package/dist/umd/ReactInstantSearch.js.map +0 -1
- package/dist/umd/ReactInstantSearch.min.js.map +0 -1
|
@@ -1,529 +1,488 @@
|
|
|
1
|
-
|
|
1
|
+
'use strict';
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
var
|
|
8
|
-
var
|
|
9
|
-
var
|
|
10
|
-
var
|
|
11
|
-
var
|
|
12
|
-
var
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
19
|
-
function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); }
|
|
20
|
-
function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }
|
|
21
|
-
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
22
|
-
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
23
|
-
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
|
24
|
-
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
|
|
25
|
-
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
26
|
-
function _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }
|
|
27
|
-
function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }
|
|
28
|
-
function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
|
|
29
|
-
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
30
|
-
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
|
|
31
|
-
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
32
|
-
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
|
|
33
|
-
function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
|
|
34
|
-
var Autocomplete = (0, _instantsearchUiComponents.createAutocompleteComponent)({
|
|
35
|
-
createElement: _react.createElement,
|
|
36
|
-
Fragment: _react.Fragment
|
|
3
|
+
var _object_spread = require('@swc/helpers/_/_object_spread');
|
|
4
|
+
var _object_spread_props = require('@swc/helpers/_/_object_spread_props');
|
|
5
|
+
var _object_without_properties = require('@swc/helpers/_/_object_without_properties');
|
|
6
|
+
var _sliced_to_array = require('@swc/helpers/_/_sliced_to_array');
|
|
7
|
+
var _to_consumable_array = require('@swc/helpers/_/_to_consumable_array');
|
|
8
|
+
var _type_of = require('@swc/helpers/_/_type_of');
|
|
9
|
+
var instantsearchUiComponents = require('instantsearch-ui-components');
|
|
10
|
+
var React = require('react');
|
|
11
|
+
var reactInstantsearchCore = require('react-instantsearch-core');
|
|
12
|
+
var AutocompleteSearch = require('../components/AutocompleteSearch.js');
|
|
13
|
+
var ReverseHighlight = require('./ReverseHighlight.js');
|
|
14
|
+
|
|
15
|
+
var Autocomplete = instantsearchUiComponents.createAutocompleteComponent({
|
|
16
|
+
createElement: React.createElement,
|
|
17
|
+
Fragment: React.Fragment
|
|
37
18
|
});
|
|
38
|
-
var AutocompletePanel =
|
|
39
|
-
|
|
40
|
-
|
|
19
|
+
var AutocompletePanel = instantsearchUiComponents.createAutocompletePanelComponent({
|
|
20
|
+
createElement: React.createElement,
|
|
21
|
+
Fragment: React.Fragment
|
|
41
22
|
});
|
|
42
|
-
var AutocompleteIndex =
|
|
43
|
-
|
|
44
|
-
|
|
23
|
+
var AutocompleteIndex = instantsearchUiComponents.createAutocompleteIndexComponent({
|
|
24
|
+
createElement: React.createElement,
|
|
25
|
+
Fragment: React.Fragment
|
|
45
26
|
});
|
|
46
|
-
var AutocompleteSuggestion =
|
|
47
|
-
|
|
48
|
-
|
|
27
|
+
var AutocompleteSuggestion = instantsearchUiComponents.createAutocompleteSuggestionComponent({
|
|
28
|
+
createElement: React.createElement,
|
|
29
|
+
Fragment: React.Fragment
|
|
49
30
|
});
|
|
50
|
-
var AutocompleteRecentSearch =
|
|
51
|
-
|
|
52
|
-
|
|
31
|
+
var AutocompleteRecentSearch = instantsearchUiComponents.createAutocompleteRecentSearchComponent({
|
|
32
|
+
createElement: React.createElement,
|
|
33
|
+
Fragment: React.Fragment
|
|
53
34
|
});
|
|
54
|
-
var AutocompleteDetachedContainer =
|
|
55
|
-
|
|
56
|
-
|
|
35
|
+
var AutocompleteDetachedContainer = instantsearchUiComponents.createAutocompleteDetachedContainerComponent({
|
|
36
|
+
createElement: React.createElement,
|
|
37
|
+
Fragment: React.Fragment
|
|
57
38
|
});
|
|
58
|
-
var AutocompleteDetachedOverlay =
|
|
59
|
-
|
|
60
|
-
|
|
39
|
+
var AutocompleteDetachedOverlay = instantsearchUiComponents.createAutocompleteDetachedOverlayComponent({
|
|
40
|
+
createElement: React.createElement,
|
|
41
|
+
Fragment: React.Fragment
|
|
61
42
|
});
|
|
62
|
-
var AutocompleteDetachedFormContainer =
|
|
63
|
-
|
|
64
|
-
|
|
43
|
+
var AutocompleteDetachedFormContainer = instantsearchUiComponents.createAutocompleteDetachedFormContainerComponent({
|
|
44
|
+
createElement: React.createElement,
|
|
45
|
+
Fragment: React.Fragment
|
|
65
46
|
});
|
|
66
|
-
var AutocompleteDetachedSearchButton =
|
|
67
|
-
|
|
68
|
-
|
|
47
|
+
var AutocompleteDetachedSearchButton = instantsearchUiComponents.createAutocompleteDetachedSearchButtonComponent({
|
|
48
|
+
createElement: React.createElement,
|
|
49
|
+
Fragment: React.Fragment
|
|
69
50
|
});
|
|
70
|
-
var
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
51
|
+
var id = 0;
|
|
52
|
+
var usePropGetters = instantsearchUiComponents.createAutocompletePropGetters({
|
|
53
|
+
useEffect: React.useEffect,
|
|
54
|
+
useId: React.useId || function() {
|
|
55
|
+
return React.useState(function() {
|
|
56
|
+
return (id++).toString();
|
|
57
|
+
});
|
|
58
|
+
},
|
|
59
|
+
useMemo: React.useMemo,
|
|
60
|
+
useRef: React.useRef,
|
|
61
|
+
useState: React.useState
|
|
76
62
|
});
|
|
77
|
-
var useStorage =
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
63
|
+
var useStorage = instantsearchUiComponents.createAutocompleteStorage({
|
|
64
|
+
useEffect: React.useEffect,
|
|
65
|
+
useMemo: React.useMemo,
|
|
66
|
+
useState: React.useState
|
|
81
67
|
});
|
|
82
68
|
var DEFAULT_DETACHED_MEDIA_QUERY = '(max-width: 680px)';
|
|
83
69
|
var DEFAULT_DETACHED_MODAL_MEDIA_QUERY = '(min-width: 680px)';
|
|
84
70
|
var DETACHED_MEDIA_QUERY_CSS_VAR = '--ais-autocomplete-detached-media-query';
|
|
85
71
|
var DETACHED_MODAL_MEDIA_QUERY_CSS_VAR = '--ais-autocomplete-detached-modal-media-query';
|
|
86
72
|
var DEFAULT_TRANSLATIONS = {
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
73
|
+
detachedCancelButtonText: 'Cancel',
|
|
74
|
+
detachedSearchButtonTitle: 'Search',
|
|
75
|
+
detachedClearButtonTitle: 'Clear'
|
|
90
76
|
};
|
|
91
77
|
function getCssMediaQueryValue(name) {
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
78
|
+
if (typeof window === 'undefined' || typeof document === 'undefined') {
|
|
79
|
+
return '';
|
|
80
|
+
}
|
|
81
|
+
return getComputedStyle(document.documentElement).getPropertyValue(name).trim();
|
|
96
82
|
}
|
|
97
83
|
function resolveMediaQuery(value, cssVarName, fallback) {
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
84
|
+
if (value === '') {
|
|
85
|
+
return '';
|
|
86
|
+
}
|
|
87
|
+
if (value) {
|
|
88
|
+
return value;
|
|
89
|
+
}
|
|
90
|
+
return getCssMediaQueryValue(cssVarName) || fallback;
|
|
105
91
|
}
|
|
106
92
|
function getMediaQueryList(mediaQuery) {
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
93
|
+
if (typeof window === 'undefined' || typeof window.matchMedia !== 'function') {
|
|
94
|
+
return null;
|
|
95
|
+
}
|
|
96
|
+
return window.matchMedia(mediaQuery);
|
|
111
97
|
}
|
|
112
|
-
|
|
113
98
|
/**
|
|
114
99
|
* Hook to manage detached (mobile) mode state
|
|
115
|
-
*/
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
100
|
+
*/ function useDetachedMode(mediaQuery) {
|
|
101
|
+
var resolvedMediaQuery = React.useMemo(function() {
|
|
102
|
+
return resolveMediaQuery(mediaQuery, DETACHED_MEDIA_QUERY_CSS_VAR, DEFAULT_DETACHED_MEDIA_QUERY);
|
|
103
|
+
}, [
|
|
104
|
+
mediaQuery
|
|
105
|
+
]);
|
|
106
|
+
var _useState = _sliced_to_array._(React.useState(function() {
|
|
107
|
+
var _getMediaQueryList;
|
|
108
|
+
return resolvedMediaQuery ? Boolean((_getMediaQueryList = getMediaQueryList(resolvedMediaQuery)) === null || _getMediaQueryList === void 0 ? void 0 : _getMediaQueryList.matches) : false;
|
|
109
|
+
}), 2), isDetached = _useState[0], setIsDetached = _useState[1];
|
|
110
|
+
var _useState1 = _sliced_to_array._(React.useState(false), 2), isModalOpen = _useState1[0], setIsModalOpen = _useState1[1];
|
|
111
|
+
var _useState2 = _sliced_to_array._(React.useState(false), 2), isModalDetached = _useState2[0], setIsModalDetached = _useState2[1];
|
|
112
|
+
React.useEffect(function() {
|
|
113
|
+
if (!resolvedMediaQuery) {
|
|
114
|
+
setIsDetached(false);
|
|
115
|
+
return function() {};
|
|
116
|
+
}
|
|
117
|
+
var mql = getMediaQueryList(resolvedMediaQuery);
|
|
118
|
+
if (!mql) {
|
|
119
|
+
setIsDetached(false);
|
|
120
|
+
return function() {};
|
|
121
|
+
}
|
|
122
|
+
var handler = function handler(event) {
|
|
123
|
+
var wasDetached = isDetached;
|
|
124
|
+
setIsDetached(event.matches);
|
|
125
|
+
// Close modal if switching from detached to non-detached
|
|
126
|
+
if (wasDetached && !event.matches) {
|
|
127
|
+
setIsModalOpen(false);
|
|
128
|
+
}
|
|
129
|
+
};
|
|
130
|
+
mql.addEventListener('change', handler);
|
|
131
|
+
return function() {
|
|
132
|
+
return mql.removeEventListener('change', handler);
|
|
133
|
+
};
|
|
134
|
+
}, [
|
|
135
|
+
resolvedMediaQuery,
|
|
136
|
+
isDetached
|
|
137
|
+
]);
|
|
138
|
+
React.useEffect(function() {
|
|
139
|
+
if (!isDetached) {
|
|
140
|
+
setIsModalDetached(false);
|
|
141
|
+
return function() {};
|
|
142
|
+
}
|
|
143
|
+
var modalMediaQuery = resolveMediaQuery(undefined, DETACHED_MODAL_MEDIA_QUERY_CSS_VAR, DEFAULT_DETACHED_MODAL_MEDIA_QUERY);
|
|
144
|
+
if (!modalMediaQuery) {
|
|
145
|
+
setIsModalDetached(false);
|
|
146
|
+
return function() {};
|
|
147
|
+
}
|
|
148
|
+
var mql = getMediaQueryList(modalMediaQuery);
|
|
149
|
+
if (!mql) {
|
|
150
|
+
setIsModalDetached(false);
|
|
151
|
+
return function() {};
|
|
152
|
+
}
|
|
153
|
+
var handler = function handler(event) {
|
|
154
|
+
setIsModalDetached(event.matches);
|
|
155
|
+
};
|
|
156
|
+
setIsModalDetached(mql.matches);
|
|
157
|
+
mql.addEventListener('change', handler);
|
|
158
|
+
return function() {
|
|
159
|
+
return mql.removeEventListener('change', handler);
|
|
160
|
+
};
|
|
161
|
+
}, [
|
|
162
|
+
isDetached
|
|
163
|
+
]);
|
|
164
|
+
React.useEffect(function() {
|
|
165
|
+
if (typeof document === 'undefined') return function() {};
|
|
166
|
+
if (isModalOpen) {
|
|
167
|
+
var scrollY = window.scrollY;
|
|
168
|
+
document.body.style.top = "-".concat(scrollY, "px");
|
|
169
|
+
document.body.classList.add('ais-Autocomplete--detached');
|
|
170
|
+
return function() {
|
|
171
|
+
document.body.classList.remove('ais-Autocomplete--detached');
|
|
172
|
+
document.body.style.top = '';
|
|
173
|
+
window.scrollTo(0, scrollY);
|
|
174
|
+
};
|
|
175
|
+
}
|
|
176
|
+
return function() {};
|
|
177
|
+
}, [
|
|
178
|
+
isModalOpen
|
|
179
|
+
]);
|
|
180
|
+
return {
|
|
181
|
+
isDetached: isDetached,
|
|
182
|
+
isModalDetached: isModalDetached,
|
|
183
|
+
isModalOpen: isModalOpen,
|
|
184
|
+
setIsModalOpen: setIsModalOpen
|
|
180
185
|
};
|
|
181
|
-
}, [isDetached]);
|
|
182
|
-
(0, _react.useEffect)(function () {
|
|
183
|
-
if (typeof document === 'undefined') return function () {};
|
|
184
|
-
if (isModalOpen) {
|
|
185
|
-
var scrollY = window.scrollY;
|
|
186
|
-
document.body.style.top = "-".concat(scrollY, "px");
|
|
187
|
-
document.body.classList.add('ais-Autocomplete--detached');
|
|
188
|
-
return function () {
|
|
189
|
-
document.body.classList.remove('ais-Autocomplete--detached');
|
|
190
|
-
document.body.style.top = '';
|
|
191
|
-
window.scrollTo(0, scrollY);
|
|
192
|
-
};
|
|
193
|
-
}
|
|
194
|
-
return function () {};
|
|
195
|
-
}, [isModalOpen]);
|
|
196
|
-
return {
|
|
197
|
-
isDetached: isDetached,
|
|
198
|
-
isModalDetached: isModalDetached,
|
|
199
|
-
isModalOpen: isModalOpen,
|
|
200
|
-
setIsModalOpen: setIsModalOpen
|
|
201
|
-
};
|
|
202
186
|
}
|
|
203
|
-
function EXPERIMENTAL_Autocomplete(
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
})
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
item: (0, _instantsearchUiComponents.cx)('ais-AutocompleteSuggestionsItem', showSuggestions === null || showSuggestions === void 0 ? void 0 : (_showSuggestions$clas4 = showSuggestions.classNames) === null || _showSuggestions$clas4 === void 0 ? void 0 : _showSuggestions$clas4.item)
|
|
251
|
-
},
|
|
252
|
-
getQuery: function getQuery(item) {
|
|
253
|
-
return item.query;
|
|
254
|
-
},
|
|
255
|
-
getURL: showSuggestions.getURL
|
|
256
|
-
});
|
|
257
|
-
}
|
|
258
|
-
var recentSearchConfig = showRecent ? {
|
|
259
|
-
headerComponent: _typeof(showRecent) === 'object' ? showRecent.headerComponent : undefined,
|
|
260
|
-
itemComponent: _typeof(showRecent) === 'object' && showRecent.itemComponent ? showRecent.itemComponent : AutocompleteRecentSearch,
|
|
261
|
-
classNames: {
|
|
262
|
-
root: (0, _instantsearchUiComponents.cx)('ais-AutocompleteRecentSearches', _typeof(showRecent) === 'object' ? (_showRecent$className = showRecent.classNames) === null || _showRecent$className === void 0 ? void 0 : _showRecent$className.root : undefined),
|
|
263
|
-
list: (0, _instantsearchUiComponents.cx)('ais-AutocompleteRecentSearchesList', _typeof(showRecent) === 'object' ? (_showRecent$className2 = showRecent.classNames) === null || _showRecent$className2 === void 0 ? void 0 : _showRecent$className2.list : undefined),
|
|
264
|
-
header: (0, _instantsearchUiComponents.cx)('ais-AutocompleteRecentSearchesHeader', _typeof(showRecent) === 'object' ? (_showRecent$className3 = showRecent.classNames) === null || _showRecent$className3 === void 0 ? void 0 : _showRecent$className3.header : undefined),
|
|
265
|
-
item: (0, _instantsearchUiComponents.cx)('ais-AutocompleteRecentSearchesItem', _typeof(showRecent) === 'object' ? (_showRecent$className4 = showRecent.classNames) === null || _showRecent$className4 === void 0 ? void 0 : _showRecent$className4.item : undefined)
|
|
187
|
+
function EXPERIMENTAL_Autocomplete(_0) {
|
|
188
|
+
var _0_indices = _0.indices, indices = _0_indices === void 0 ? [] : _0_indices, showSuggestions = _0.showSuggestions, showRecent = _0.showRecent, userSearchParameters = _0.searchParameters, detachedMediaQuery = _0.detachedMediaQuery, tmp = _0.translations, userTranslations = tmp === void 0 ? {} : tmp, props = _object_without_properties._(_0, [
|
|
189
|
+
"indices",
|
|
190
|
+
"showSuggestions",
|
|
191
|
+
"showRecent",
|
|
192
|
+
"searchParameters",
|
|
193
|
+
"detachedMediaQuery",
|
|
194
|
+
"translations"
|
|
195
|
+
]);
|
|
196
|
+
var _showRecent_classNames, _showRecent_classNames1, _showRecent_classNames2, _showRecent_classNames3;
|
|
197
|
+
var translations = _object_spread._({}, DEFAULT_TRANSLATIONS, userTranslations);
|
|
198
|
+
var _useInstantSearch = reactInstantsearchCore.useInstantSearch(), indexUiState = _useInstantSearch.indexUiState, indexRenderState = _useInstantSearch.indexRenderState, status = _useInstantSearch.status;
|
|
199
|
+
var refine = reactInstantsearchCore.useSearchBox({}, {
|
|
200
|
+
$$type: 'ais.autocomplete',
|
|
201
|
+
$$widgetType: 'ais.autocomplete'
|
|
202
|
+
}).refine;
|
|
203
|
+
var isSearchStalled = status === 'stalled';
|
|
204
|
+
var searchParameters = _object_spread._({
|
|
205
|
+
hitsPerPage: 5
|
|
206
|
+
}, userSearchParameters);
|
|
207
|
+
var indicesConfig = _to_consumable_array._(indices);
|
|
208
|
+
if (showSuggestions === null || showSuggestions === void 0 ? void 0 : showSuggestions.indexName) {
|
|
209
|
+
var _showSuggestions_classNames, _showSuggestions_classNames1, _showSuggestions_classNames2, _showSuggestions_classNames3;
|
|
210
|
+
indicesConfig.unshift({
|
|
211
|
+
indexName: showSuggestions.indexName,
|
|
212
|
+
headerComponent: showSuggestions.headerComponent,
|
|
213
|
+
itemComponent: showSuggestions.itemComponent || function(param) {
|
|
214
|
+
var item = param.item, onSelect = param.onSelect, onApply = param.onApply;
|
|
215
|
+
return /*#__PURE__*/ React.createElement(AutocompleteSuggestion, {
|
|
216
|
+
item: item,
|
|
217
|
+
onSelect: onSelect,
|
|
218
|
+
onApply: onApply
|
|
219
|
+
}, /*#__PURE__*/ React.createElement(ConditionalReverseHighlight, {
|
|
220
|
+
item: item
|
|
221
|
+
}));
|
|
222
|
+
},
|
|
223
|
+
classNames: {
|
|
224
|
+
root: instantsearchUiComponents.cx('ais-AutocompleteSuggestions', showSuggestions === null || showSuggestions === void 0 ? void 0 : (_showSuggestions_classNames = showSuggestions.classNames) === null || _showSuggestions_classNames === void 0 ? void 0 : _showSuggestions_classNames.root),
|
|
225
|
+
list: instantsearchUiComponents.cx('ais-AutocompleteSuggestionsList', showSuggestions === null || showSuggestions === void 0 ? void 0 : (_showSuggestions_classNames1 = showSuggestions.classNames) === null || _showSuggestions_classNames1 === void 0 ? void 0 : _showSuggestions_classNames1.list),
|
|
226
|
+
header: instantsearchUiComponents.cx('ais-AutocompleteSuggestionsHeader', showSuggestions === null || showSuggestions === void 0 ? void 0 : (_showSuggestions_classNames2 = showSuggestions.classNames) === null || _showSuggestions_classNames2 === void 0 ? void 0 : _showSuggestions_classNames2.header),
|
|
227
|
+
item: instantsearchUiComponents.cx('ais-AutocompleteSuggestionsItem', showSuggestions === null || showSuggestions === void 0 ? void 0 : (_showSuggestions_classNames3 = showSuggestions.classNames) === null || _showSuggestions_classNames3 === void 0 ? void 0 : _showSuggestions_classNames3.item)
|
|
228
|
+
},
|
|
229
|
+
getQuery: function getQuery(item) {
|
|
230
|
+
return item.query;
|
|
231
|
+
},
|
|
232
|
+
getURL: showSuggestions.getURL
|
|
233
|
+
});
|
|
266
234
|
}
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
key: index.indexName,
|
|
276
|
-
indexName: index.indexName
|
|
277
|
-
}, /*#__PURE__*/_react.default.createElement(_reactInstantsearchCore.Configure, index.searchParameters));
|
|
278
|
-
}), /*#__PURE__*/_react.default.createElement(InnerAutocomplete, _extends({}, props, {
|
|
279
|
-
indicesConfig: indicesConfig,
|
|
280
|
-
refineSearchBox: refine,
|
|
281
|
-
isSearchStalled: isSearchStalled,
|
|
282
|
-
indexUiState: indexUiState,
|
|
283
|
-
isSearchPage: isSearchPage,
|
|
284
|
-
showRecent: showRecent,
|
|
285
|
-
recentSearchConfig: recentSearchConfig,
|
|
286
|
-
showSuggestions: showSuggestions,
|
|
287
|
-
detachedMediaQuery: detachedMediaQuery,
|
|
288
|
-
translations: translations
|
|
289
|
-
}))));
|
|
290
|
-
}
|
|
291
|
-
function InnerAutocomplete(_ref3) {
|
|
292
|
-
var indicesConfig = _ref3.indicesConfig,
|
|
293
|
-
refineSearchBox = _ref3.refineSearchBox,
|
|
294
|
-
isSearchStalled = _ref3.isSearchStalled,
|
|
295
|
-
getSearchPageURL = _ref3.getSearchPageURL,
|
|
296
|
-
userOnSelect = _ref3.onSelect,
|
|
297
|
-
indexUiState = _ref3.indexUiState,
|
|
298
|
-
isSearchPage = _ref3.isSearchPage,
|
|
299
|
-
PanelComponent = _ref3.panelComponent,
|
|
300
|
-
showRecent = _ref3.showRecent,
|
|
301
|
-
recentSearchConfig = _ref3.recentSearchConfig,
|
|
302
|
-
showSuggestions = _ref3.showSuggestions,
|
|
303
|
-
transformItems = _ref3.transformItems,
|
|
304
|
-
placeholder = _ref3.placeholder,
|
|
305
|
-
_ref3$detachedMediaQu = _ref3.detachedMediaQuery,
|
|
306
|
-
detachedMediaQuery = _ref3$detachedMediaQu === void 0 ? DEFAULT_DETACHED_MEDIA_QUERY : _ref3$detachedMediaQu,
|
|
307
|
-
translations = _ref3.translations,
|
|
308
|
-
classNames = _ref3.classNames,
|
|
309
|
-
props = _objectWithoutProperties(_ref3, _excluded2);
|
|
310
|
-
var _useAutocomplete = (0, _reactInstantsearchCore.useAutocomplete)({
|
|
311
|
-
transformItems: transformItems
|
|
312
|
-
}),
|
|
313
|
-
indices = _useAutocomplete.indices,
|
|
314
|
-
refineAutocomplete = _useAutocomplete.refine,
|
|
315
|
-
currentRefinement = _useAutocomplete.currentRefinement;
|
|
316
|
-
var _useDetachedMode = useDetachedMode(detachedMediaQuery),
|
|
317
|
-
isDetached = _useDetachedMode.isDetached,
|
|
318
|
-
isModalDetached = _useDetachedMode.isModalDetached,
|
|
319
|
-
isModalOpen = _useDetachedMode.isModalOpen,
|
|
320
|
-
setIsModalOpen = _useDetachedMode.setIsModalOpen;
|
|
321
|
-
var previousIsDetachedRef = (0, _react.useRef)(isDetached);
|
|
322
|
-
var _useStorage = useStorage({
|
|
323
|
-
showRecent: showRecent,
|
|
324
|
-
query: currentRefinement,
|
|
325
|
-
indices: indices,
|
|
326
|
-
indicesConfig: indicesConfig,
|
|
327
|
-
suggestionsIndexName: showSuggestions === null || showSuggestions === void 0 ? void 0 : showSuggestions.indexName
|
|
328
|
-
}),
|
|
329
|
-
storage = _useStorage.storage,
|
|
330
|
-
storageHits = _useStorage.storageHits,
|
|
331
|
-
indicesForPropGetters = _useStorage.indicesForPropGetters,
|
|
332
|
-
indicesConfigForPropGetters = _useStorage.indicesConfigForPropGetters;
|
|
333
|
-
var _usePropGetters = usePropGetters({
|
|
334
|
-
indices: indicesForPropGetters,
|
|
335
|
-
indicesConfig: indicesConfigForPropGetters,
|
|
336
|
-
onRefine: function onRefine(query) {
|
|
337
|
-
refineAutocomplete(query);
|
|
338
|
-
refineSearchBox(query);
|
|
339
|
-
storage.onAdd(query);
|
|
340
|
-
},
|
|
341
|
-
onApply: function onApply(query) {
|
|
342
|
-
refineAutocomplete(query);
|
|
343
|
-
},
|
|
344
|
-
onSelect: userOnSelect !== null && userOnSelect !== void 0 ? userOnSelect : function (_ref4) {
|
|
345
|
-
var query = _ref4.query,
|
|
346
|
-
setQuery = _ref4.setQuery,
|
|
347
|
-
url = _ref4.url;
|
|
348
|
-
if (url) {
|
|
349
|
-
window.location.href = url;
|
|
350
|
-
return;
|
|
235
|
+
var recentSearchConfig = showRecent ? {
|
|
236
|
+
headerComponent: (typeof showRecent === "undefined" ? "undefined" : _type_of._(showRecent)) === 'object' ? showRecent.headerComponent : undefined,
|
|
237
|
+
itemComponent: (typeof showRecent === "undefined" ? "undefined" : _type_of._(showRecent)) === 'object' && showRecent.itemComponent ? showRecent.itemComponent : AutocompleteRecentSearch,
|
|
238
|
+
classNames: {
|
|
239
|
+
root: instantsearchUiComponents.cx('ais-AutocompleteRecentSearches', (typeof showRecent === "undefined" ? "undefined" : _type_of._(showRecent)) === 'object' ? (_showRecent_classNames = showRecent.classNames) === null || _showRecent_classNames === void 0 ? void 0 : _showRecent_classNames.root : undefined),
|
|
240
|
+
list: instantsearchUiComponents.cx('ais-AutocompleteRecentSearchesList', (typeof showRecent === "undefined" ? "undefined" : _type_of._(showRecent)) === 'object' ? (_showRecent_classNames1 = showRecent.classNames) === null || _showRecent_classNames1 === void 0 ? void 0 : _showRecent_classNames1.list : undefined),
|
|
241
|
+
header: instantsearchUiComponents.cx('ais-AutocompleteRecentSearchesHeader', (typeof showRecent === "undefined" ? "undefined" : _type_of._(showRecent)) === 'object' ? (_showRecent_classNames2 = showRecent.classNames) === null || _showRecent_classNames2 === void 0 ? void 0 : _showRecent_classNames2.header : undefined),
|
|
242
|
+
item: instantsearchUiComponents.cx('ais-AutocompleteRecentSearchesItem', (typeof showRecent === "undefined" ? "undefined" : _type_of._(showRecent)) === 'object' ? (_showRecent_classNames3 = showRecent.classNames) === null || _showRecent_classNames3 === void 0 ? void 0 : _showRecent_classNames3.item : undefined)
|
|
351
243
|
}
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
244
|
+
} : undefined;
|
|
245
|
+
var isSearchPage = React.useMemo(function() {
|
|
246
|
+
return typeof indexRenderState.hits !== 'undefined' || typeof indexRenderState.infiniteHits !== 'undefined';
|
|
247
|
+
}, [
|
|
248
|
+
indexRenderState
|
|
249
|
+
]);
|
|
250
|
+
return /*#__PURE__*/ React.createElement(React.Fragment, null, /*#__PURE__*/ React.createElement(reactInstantsearchCore.Index, {
|
|
251
|
+
EXPERIMENTAL_isolated: true
|
|
252
|
+
}, /*#__PURE__*/ React.createElement(reactInstantsearchCore.Configure, searchParameters), indicesConfig.map(function(index) {
|
|
253
|
+
return /*#__PURE__*/ React.createElement(reactInstantsearchCore.Index, {
|
|
254
|
+
key: index.indexName,
|
|
255
|
+
indexName: index.indexName
|
|
256
|
+
}, /*#__PURE__*/ React.createElement(reactInstantsearchCore.Configure, index.searchParameters));
|
|
257
|
+
}), /*#__PURE__*/ React.createElement(InnerAutocomplete, _object_spread_props._(_object_spread._({}, props), {
|
|
258
|
+
indicesConfig: indicesConfig,
|
|
259
|
+
refineSearchBox: refine,
|
|
260
|
+
isSearchStalled: isSearchStalled,
|
|
261
|
+
indexUiState: indexUiState,
|
|
262
|
+
isSearchPage: isSearchPage,
|
|
263
|
+
showRecent: showRecent,
|
|
264
|
+
recentSearchConfig: recentSearchConfig,
|
|
265
|
+
showSuggestions: showSuggestions,
|
|
266
|
+
detachedMediaQuery: detachedMediaQuery,
|
|
267
|
+
translations: translations
|
|
268
|
+
}))));
|
|
269
|
+
}
|
|
270
|
+
function InnerAutocomplete(_0) {
|
|
271
|
+
var indicesConfig = _0.indicesConfig, refineSearchBox = _0.refineSearchBox, isSearchStalled = _0.isSearchStalled, getSearchPageURL = _0.getSearchPageURL, userOnSelect = _0.onSelect, indexUiState = _0.indexUiState, isSearchPage = _0.isSearchPage, PanelComponent = _0.panelComponent, showRecent = _0.showRecent, recentSearchConfig = _0.recentSearchConfig, showSuggestions = _0.showSuggestions, transformItems = _0.transformItems, placeholder = _0.placeholder, _0_detachedMediaQuery = _0.detachedMediaQuery, detachedMediaQuery = _0_detachedMediaQuery === void 0 ? DEFAULT_DETACHED_MEDIA_QUERY : _0_detachedMediaQuery, translations = _0.translations, classNames = _0.classNames, props = _object_without_properties._(_0, [
|
|
272
|
+
"indicesConfig",
|
|
273
|
+
"refineSearchBox",
|
|
274
|
+
"isSearchStalled",
|
|
275
|
+
"getSearchPageURL",
|
|
276
|
+
"onSelect",
|
|
277
|
+
"indexUiState",
|
|
278
|
+
"isSearchPage",
|
|
279
|
+
"panelComponent",
|
|
280
|
+
"showRecent",
|
|
281
|
+
"recentSearchConfig",
|
|
282
|
+
"showSuggestions",
|
|
283
|
+
"transformItems",
|
|
284
|
+
"placeholder",
|
|
285
|
+
"detachedMediaQuery",
|
|
286
|
+
"translations",
|
|
287
|
+
"classNames"
|
|
288
|
+
]);
|
|
289
|
+
var _useAutocomplete = reactInstantsearchCore.useAutocomplete({
|
|
290
|
+
transformItems: transformItems
|
|
291
|
+
}), indices = _useAutocomplete.indices, refineAutocomplete = _useAutocomplete.refine, currentRefinement = _useAutocomplete.currentRefinement;
|
|
292
|
+
var _useDetachedMode = useDetachedMode(detachedMediaQuery), isDetached = _useDetachedMode.isDetached, isModalDetached = _useDetachedMode.isModalDetached, isModalOpen = _useDetachedMode.isModalOpen, setIsModalOpen = _useDetachedMode.setIsModalOpen;
|
|
293
|
+
var previousIsDetachedRef = React.useRef(isDetached);
|
|
294
|
+
var _useStorage = useStorage({
|
|
295
|
+
showRecent: showRecent,
|
|
296
|
+
query: currentRefinement,
|
|
297
|
+
indices: indices,
|
|
298
|
+
indicesConfig: indicesConfig,
|
|
299
|
+
suggestionsIndexName: showSuggestions === null || showSuggestions === void 0 ? void 0 : showSuggestions.indexName
|
|
300
|
+
}), storage = _useStorage.storage, storageHits = _useStorage.storageHits, indicesForPropGetters = _useStorage.indicesForPropGetters, indicesConfigForPropGetters = _useStorage.indicesConfigForPropGetters;
|
|
301
|
+
var _usePropGetters = usePropGetters({
|
|
302
|
+
indices: indicesForPropGetters,
|
|
303
|
+
indicesConfig: indicesConfigForPropGetters,
|
|
304
|
+
onRefine: function onRefine(query) {
|
|
305
|
+
refineAutocomplete(query);
|
|
306
|
+
refineSearchBox(query);
|
|
307
|
+
storage.onAdd(query);
|
|
308
|
+
},
|
|
309
|
+
onApply: function onApply(query) {
|
|
310
|
+
refineAutocomplete(query);
|
|
311
|
+
},
|
|
312
|
+
onSelect: userOnSelect !== null && userOnSelect !== void 0 ? userOnSelect : function(param) {
|
|
313
|
+
var query = param.query, setQuery = param.setQuery, url = param.url;
|
|
314
|
+
if (url) {
|
|
315
|
+
window.location.href = url;
|
|
316
|
+
return;
|
|
317
|
+
}
|
|
318
|
+
if (!isSearchPage && typeof getSearchPageURL !== 'undefined') {
|
|
319
|
+
window.location.href = getSearchPageURL(_object_spread_props._(_object_spread._({}, indexUiState), {
|
|
320
|
+
query: query
|
|
321
|
+
}));
|
|
322
|
+
return;
|
|
323
|
+
}
|
|
324
|
+
setQuery(query);
|
|
325
|
+
},
|
|
326
|
+
onSubmit: function onSubmit() {
|
|
327
|
+
// Close the detached modal when form is submitted
|
|
328
|
+
if (isDetached) {
|
|
329
|
+
setIsModalOpen(false);
|
|
330
|
+
}
|
|
331
|
+
},
|
|
332
|
+
placeholder: placeholder,
|
|
333
|
+
isDetached: isDetached
|
|
334
|
+
}), getInputProps = _usePropGetters.getInputProps, getItemProps = _usePropGetters.getItemProps, getPanelProps = _usePropGetters.getPanelProps, getRootProps = _usePropGetters.getRootProps, isOpen = _usePropGetters.isOpen, setIsOpen = _usePropGetters.setIsOpen, focusInput = _usePropGetters.focusInput;
|
|
335
|
+
// Open panel and focus input when modal opens
|
|
336
|
+
React.useEffect(function() {
|
|
337
|
+
if (isDetached && isModalOpen) {
|
|
338
|
+
setIsOpen(true);
|
|
339
|
+
// Focus input to show the keyboard on mobile
|
|
340
|
+
focusInput();
|
|
357
341
|
}
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
342
|
+
}, [
|
|
343
|
+
isDetached,
|
|
344
|
+
isModalOpen,
|
|
345
|
+
setIsOpen,
|
|
346
|
+
focusInput
|
|
347
|
+
]);
|
|
348
|
+
// Keep the modal open if the panel was open before switching to detached
|
|
349
|
+
React.useEffect(function() {
|
|
350
|
+
var wasDetached = previousIsDetachedRef.current;
|
|
351
|
+
var switchedToDetached = !wasDetached && isDetached;
|
|
352
|
+
if (switchedToDetached && isOpen) {
|
|
353
|
+
setIsModalOpen(true);
|
|
364
354
|
}
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
355
|
+
previousIsDetachedRef.current = isDetached;
|
|
356
|
+
}, [
|
|
357
|
+
isDetached,
|
|
358
|
+
isOpen,
|
|
359
|
+
setIsModalOpen
|
|
360
|
+
]);
|
|
361
|
+
var elements = {};
|
|
362
|
+
if (showRecent && recentSearchConfig) {
|
|
363
|
+
var RecentSearchItemComponent = recentSearchConfig.itemComponent;
|
|
364
|
+
elements.recent = /*#__PURE__*/ React.createElement(AutocompleteIndex, {
|
|
365
|
+
HeaderComponent: recentSearchConfig.headerComponent,
|
|
366
|
+
// @ts-ignore - there seems to be problems with React.ComponentType and this, but it's actually correct
|
|
367
|
+
ItemComponent: function ItemComponent(param) {
|
|
368
|
+
var item = param.item, onSelect = param.onSelect, onApply = param.onApply;
|
|
369
|
+
return /*#__PURE__*/ React.createElement(RecentSearchItemComponent, {
|
|
370
|
+
item: item,
|
|
371
|
+
onSelect: onSelect,
|
|
372
|
+
onRemoveRecentSearch: function onRemoveRecentSearch() {
|
|
373
|
+
return storage.onRemove(item.query);
|
|
374
|
+
},
|
|
375
|
+
onApply: onApply
|
|
376
|
+
}, /*#__PURE__*/ React.createElement(ConditionalReverseHighlight, {
|
|
377
|
+
item: item
|
|
378
|
+
}));
|
|
379
|
+
},
|
|
380
|
+
classNames: recentSearchConfig.classNames,
|
|
381
|
+
items: storageHits,
|
|
382
|
+
getItemProps: getItemProps,
|
|
383
|
+
key: "recentSearches"
|
|
384
|
+
});
|
|
392
385
|
}
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
386
|
+
indices.forEach(function(param) {
|
|
387
|
+
var indexId = param.indexId, indexName = param.indexName, hits = param.hits;
|
|
388
|
+
var elementId = indexName === (showSuggestions === null || showSuggestions === void 0 ? void 0 : showSuggestions.indexName) ? 'suggestions' : indexName;
|
|
389
|
+
var filteredHits = elementId === 'suggestions' && showRecent ? hits.filter(function(suggestionHit) {
|
|
390
|
+
return !storageHits.find(function(storageHit) {
|
|
391
|
+
return storageHit.query === suggestionHit.query;
|
|
392
|
+
});
|
|
393
|
+
}) : hits;
|
|
394
|
+
var currentIndexConfig = indicesConfig.find(function(config) {
|
|
395
|
+
return config.indexName === indexName;
|
|
396
|
+
});
|
|
397
|
+
if (!currentIndexConfig) {
|
|
398
|
+
return;
|
|
399
|
+
}
|
|
400
|
+
elements[elementId] = /*#__PURE__*/ React.createElement(AutocompleteIndex, {
|
|
401
|
+
key: indexId,
|
|
402
|
+
// @ts-expect-error - there seems to be problems with React.ComponentType and this, but it's actually correct
|
|
403
|
+
HeaderComponent: currentIndexConfig.headerComponent,
|
|
404
|
+
// @ts-expect-error - there seems to be problems with React.ComponentType and this, but it's actually correct
|
|
405
|
+
ItemComponent: currentIndexConfig.itemComponent,
|
|
406
|
+
items: filteredHits.map(function(item) {
|
|
407
|
+
return _object_spread_props._(_object_spread._({}, item), {
|
|
408
|
+
__indexName: indexId
|
|
409
|
+
});
|
|
410
|
+
}),
|
|
411
|
+
getItemProps: getItemProps,
|
|
412
|
+
classNames: currentIndexConfig.classNames
|
|
413
|
+
});
|
|
421
414
|
});
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
return config.indexName === indexName;
|
|
415
|
+
var searchBoxContent = /*#__PURE__*/ React.createElement(AutocompleteSearch.AutocompleteSearch, {
|
|
416
|
+
inputProps: getInputProps(),
|
|
417
|
+
clearQuery: function clearQuery() {
|
|
418
|
+
refineSearchBox('');
|
|
419
|
+
refineAutocomplete('');
|
|
420
|
+
},
|
|
421
|
+
onQueryChange: function onQueryChange(query) {
|
|
422
|
+
refineAutocomplete(query);
|
|
423
|
+
},
|
|
424
|
+
query: currentRefinement || indexUiState.query || '',
|
|
425
|
+
refine: refineSearchBox,
|
|
426
|
+
isSearchStalled: isSearchStalled
|
|
435
427
|
});
|
|
436
|
-
|
|
437
|
-
|
|
428
|
+
var panelContent = /*#__PURE__*/ React.createElement(AutocompletePanel, getPanelProps(), PanelComponent ? /*#__PURE__*/ React.createElement(PanelComponent, {
|
|
429
|
+
elements: elements,
|
|
430
|
+
indices: indices
|
|
431
|
+
}) : Object.keys(elements).map(function(elementId) {
|
|
432
|
+
return elements[elementId];
|
|
433
|
+
}));
|
|
434
|
+
var detachedContainerClassNames = isModalDetached ? _object_spread_props._(_object_spread._({}, classNames), {
|
|
435
|
+
detachedContainer: instantsearchUiComponents.cx('ais-AutocompleteDetachedContainer--modal', classNames === null || classNames === void 0 ? void 0 : classNames.detachedContainer)
|
|
436
|
+
}) : classNames;
|
|
437
|
+
if (isDetached) {
|
|
438
|
+
return /*#__PURE__*/ React.createElement(Autocomplete, _object_spread_props._(_object_spread._({}, props, getRootProps()), {
|
|
439
|
+
classNames: classNames
|
|
440
|
+
}), /*#__PURE__*/ React.createElement(AutocompleteDetachedSearchButton, {
|
|
441
|
+
query: currentRefinement || indexUiState.query || '',
|
|
442
|
+
placeholder: placeholder,
|
|
443
|
+
classNames: classNames,
|
|
444
|
+
onClick: function onClick() {
|
|
445
|
+
setIsModalOpen(true);
|
|
446
|
+
setIsOpen(true);
|
|
447
|
+
},
|
|
448
|
+
onClear: function onClear() {
|
|
449
|
+
refineSearchBox('');
|
|
450
|
+
refineAutocomplete('');
|
|
451
|
+
},
|
|
452
|
+
translations: translations
|
|
453
|
+
}), isModalOpen && /*#__PURE__*/ React.createElement(AutocompleteDetachedOverlay, {
|
|
454
|
+
classNames: classNames,
|
|
455
|
+
onClose: function onClose() {
|
|
456
|
+
setIsModalOpen(false);
|
|
457
|
+
setIsOpen(false);
|
|
458
|
+
}
|
|
459
|
+
}, /*#__PURE__*/ React.createElement(AutocompleteDetachedContainer, {
|
|
460
|
+
classNames: detachedContainerClassNames
|
|
461
|
+
}, /*#__PURE__*/ React.createElement(AutocompleteDetachedFormContainer, {
|
|
462
|
+
classNames: classNames,
|
|
463
|
+
onCancel: function onCancel() {
|
|
464
|
+
setIsModalOpen(false);
|
|
465
|
+
setIsOpen(false);
|
|
466
|
+
},
|
|
467
|
+
translations: translations
|
|
468
|
+
}, searchBoxContent), panelContent)));
|
|
438
469
|
}
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
470
|
+
// Normal (non-detached) rendering
|
|
471
|
+
return /*#__PURE__*/ React.createElement(Autocomplete, _object_spread_props._(_object_spread._({}, props, getRootProps()), {
|
|
472
|
+
classNames: classNames
|
|
473
|
+
}), searchBoxContent, panelContent);
|
|
474
|
+
}
|
|
475
|
+
function ConditionalReverseHighlight(param) {
|
|
476
|
+
var item = param.item;
|
|
477
|
+
var _item__highlightResult;
|
|
478
|
+
if (!((_item__highlightResult = item._highlightResult) === null || _item__highlightResult === void 0 ? void 0 : _item__highlightResult.query) || // @ts-expect-error - we should not have matchLevel as arrays here
|
|
479
|
+
item._highlightResult.query.matchLevel === 'none') {
|
|
480
|
+
return item.query;
|
|
481
|
+
}
|
|
482
|
+
return /*#__PURE__*/ React.createElement(ReverseHighlight.ReverseHighlight, {
|
|
483
|
+
attribute: "query",
|
|
484
|
+
hit: item
|
|
454
485
|
});
|
|
455
|
-
});
|
|
456
|
-
var searchBoxContent = /*#__PURE__*/_react.default.createElement(_AutocompleteSearch.AutocompleteSearch, {
|
|
457
|
-
inputProps: getInputProps(),
|
|
458
|
-
clearQuery: function clearQuery() {
|
|
459
|
-
refineSearchBox('');
|
|
460
|
-
refineAutocomplete('');
|
|
461
|
-
},
|
|
462
|
-
onQueryChange: function onQueryChange(query) {
|
|
463
|
-
refineAutocomplete(query);
|
|
464
|
-
},
|
|
465
|
-
query: currentRefinement || indexUiState.query || '',
|
|
466
|
-
refine: refineSearchBox,
|
|
467
|
-
isSearchStalled: isSearchStalled
|
|
468
|
-
});
|
|
469
|
-
var panelContent = /*#__PURE__*/_react.default.createElement(AutocompletePanel, getPanelProps(), PanelComponent ? /*#__PURE__*/_react.default.createElement(PanelComponent, {
|
|
470
|
-
elements: elements,
|
|
471
|
-
indices: indices
|
|
472
|
-
}) : Object.keys(elements).map(function (elementId) {
|
|
473
|
-
return elements[elementId];
|
|
474
|
-
}));
|
|
475
|
-
var detachedContainerClassNames = isModalDetached ? _objectSpread(_objectSpread({}, classNames), {}, {
|
|
476
|
-
detachedContainer: (0, _instantsearchUiComponents.cx)('ais-AutocompleteDetachedContainer--modal', classNames === null || classNames === void 0 ? void 0 : classNames.detachedContainer)
|
|
477
|
-
}) : classNames;
|
|
478
|
-
if (isDetached) {
|
|
479
|
-
return /*#__PURE__*/_react.default.createElement(Autocomplete, _extends({}, props, getRootProps(), {
|
|
480
|
-
classNames: classNames
|
|
481
|
-
}), /*#__PURE__*/_react.default.createElement(AutocompleteDetachedSearchButton, {
|
|
482
|
-
query: currentRefinement || indexUiState.query || '',
|
|
483
|
-
placeholder: placeholder,
|
|
484
|
-
classNames: classNames,
|
|
485
|
-
onClick: function onClick() {
|
|
486
|
-
setIsModalOpen(true);
|
|
487
|
-
setIsOpen(true);
|
|
488
|
-
},
|
|
489
|
-
onClear: function onClear() {
|
|
490
|
-
refineSearchBox('');
|
|
491
|
-
refineAutocomplete('');
|
|
492
|
-
},
|
|
493
|
-
translations: translations
|
|
494
|
-
}), isModalOpen && /*#__PURE__*/_react.default.createElement(AutocompleteDetachedOverlay, {
|
|
495
|
-
classNames: classNames,
|
|
496
|
-
onClose: function onClose() {
|
|
497
|
-
setIsModalOpen(false);
|
|
498
|
-
setIsOpen(false);
|
|
499
|
-
}
|
|
500
|
-
}, /*#__PURE__*/_react.default.createElement(AutocompleteDetachedContainer, {
|
|
501
|
-
classNames: detachedContainerClassNames
|
|
502
|
-
}, /*#__PURE__*/_react.default.createElement(AutocompleteDetachedFormContainer, {
|
|
503
|
-
classNames: classNames,
|
|
504
|
-
onCancel: function onCancel() {
|
|
505
|
-
setIsModalOpen(false);
|
|
506
|
-
setIsOpen(false);
|
|
507
|
-
},
|
|
508
|
-
translations: translations
|
|
509
|
-
}, searchBoxContent), panelContent)));
|
|
510
|
-
}
|
|
511
|
-
|
|
512
|
-
// Normal (non-detached) rendering
|
|
513
|
-
return /*#__PURE__*/_react.default.createElement(Autocomplete, _extends({}, props, getRootProps(), {
|
|
514
|
-
classNames: classNames
|
|
515
|
-
}), searchBoxContent, panelContent);
|
|
516
486
|
}
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
var item = _ref7.item;
|
|
520
|
-
if (!((_item$_highlightResul = item._highlightResult) !== null && _item$_highlightResul !== void 0 && _item$_highlightResul.query) ||
|
|
521
|
-
// @ts-expect-error - we should not have matchLevel as arrays here
|
|
522
|
-
item._highlightResult.query.matchLevel === 'none') {
|
|
523
|
-
return item.query;
|
|
524
|
-
}
|
|
525
|
-
return /*#__PURE__*/_react.default.createElement(_ReverseHighlight.ReverseHighlight, {
|
|
526
|
-
attribute: "query",
|
|
527
|
-
hit: item
|
|
528
|
-
});
|
|
529
|
-
}
|
|
487
|
+
|
|
488
|
+
exports.EXPERIMENTAL_Autocomplete = EXPERIMENTAL_Autocomplete;
|