react-instantsearch 7.23.2 → 7.24.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/components/AutocompleteSearch.js +8 -7
- package/dist/cjs/widgets/Autocomplete.js +250 -12
- package/dist/cjs/widgets/chat/tools/SearchIndexTool.js +14 -29
- package/dist/es/components/AutocompleteSearch.d.ts +5 -1
- package/dist/es/components/AutocompleteSearch.js +8 -7
- package/dist/es/widgets/Autocomplete.d.ts +18 -1
- package/dist/es/widgets/Autocomplete.js +251 -13
- package/dist/es/widgets/chat/tools/SearchIndexTool.d.ts +2 -2
- package/dist/es/widgets/chat/tools/SearchIndexTool.js +14 -30
- package/dist/umd/ReactInstantSearch.js +620 -208
- package/dist/umd/ReactInstantSearch.js.map +1 -1
- package/dist/umd/ReactInstantSearch.min.js +1 -1
- package/dist/umd/ReactInstantSearch.min.js.map +1 -1
- package/package.json +5 -5
|
@@ -6,7 +6,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.AutocompleteSearch = AutocompleteSearch;
|
|
7
7
|
var _instantsearchUiComponents = require("instantsearch-ui-components");
|
|
8
8
|
var _react = _interopRequireWildcard(require("react"));
|
|
9
|
-
var _reactInstantsearchCore = require("react-instantsearch-core");
|
|
10
9
|
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
|
|
11
10
|
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
12
11
|
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; }
|
|
@@ -20,15 +19,17 @@ var AutocompleteSearchComponent = (0, _instantsearchUiComponents.createAutocompl
|
|
|
20
19
|
});
|
|
21
20
|
function AutocompleteSearch(_ref) {
|
|
22
21
|
var inputProps = _ref.inputProps,
|
|
23
|
-
clearQuery = _ref.clearQuery
|
|
24
|
-
|
|
25
|
-
query =
|
|
26
|
-
refine =
|
|
27
|
-
isSearchStalled =
|
|
22
|
+
clearQuery = _ref.clearQuery,
|
|
23
|
+
onQueryChange = _ref.onQueryChange,
|
|
24
|
+
query = _ref.query,
|
|
25
|
+
refine = _ref.refine,
|
|
26
|
+
isSearchStalled = _ref.isSearchStalled;
|
|
28
27
|
return /*#__PURE__*/_react.default.createElement(AutocompleteSearchComponent, {
|
|
29
28
|
inputProps: _objectSpread(_objectSpread({}, inputProps), {}, {
|
|
30
29
|
onChange: function onChange(event) {
|
|
31
|
-
|
|
30
|
+
var value = event.currentTarget.value;
|
|
31
|
+
refine(value);
|
|
32
|
+
onQueryChange === null || onQueryChange === void 0 ? void 0 : onQueryChange(value);
|
|
32
33
|
}
|
|
33
34
|
}),
|
|
34
35
|
onClear: clearQuery,
|
|
@@ -9,17 +9,15 @@ var _react = _interopRequireWildcard(require("react"));
|
|
|
9
9
|
var _reactInstantsearchCore = require("react-instantsearch-core");
|
|
10
10
|
var _AutocompleteSearch = require("../components/AutocompleteSearch");
|
|
11
11
|
var _ReverseHighlight = require("./ReverseHighlight");
|
|
12
|
-
var _excluded = ["indices", "showSuggestions", "showRecent", "searchParameters"],
|
|
13
|
-
_excluded2 = ["indicesConfig", "refineSearchBox", "getSearchPageURL", "onSelect", "indexUiState", "isSearchPage", "panelComponent", "showRecent", "recentSearchConfig", "showSuggestions", "transformItems", "placeholder"];
|
|
12
|
+
var _excluded = ["indices", "showSuggestions", "showRecent", "searchParameters", "detachedMediaQuery", "translations"],
|
|
13
|
+
_excluded2 = ["indicesConfig", "refineSearchBox", "isSearchStalled", "getSearchPageURL", "onSelect", "indexUiState", "isSearchPage", "panelComponent", "showRecent", "recentSearchConfig", "showSuggestions", "transformItems", "placeholder", "detachedMediaQuery", "translations", "classNames"];
|
|
14
14
|
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
|
|
15
15
|
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
|
|
16
16
|
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
17
17
|
function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }
|
|
18
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 _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; } }
|
|
20
19
|
function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); }
|
|
21
20
|
function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }
|
|
22
|
-
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; }
|
|
23
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; }
|
|
24
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; }
|
|
25
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; }
|
|
@@ -27,6 +25,12 @@ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol"
|
|
|
27
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); }
|
|
28
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; }
|
|
29
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; }
|
|
30
34
|
var Autocomplete = (0, _instantsearchUiComponents.createAutocompleteComponent)({
|
|
31
35
|
createElement: _react.createElement,
|
|
32
36
|
Fragment: _react.Fragment
|
|
@@ -47,6 +51,22 @@ var AutocompleteRecentSearch = (0, _instantsearchUiComponents.createAutocomplete
|
|
|
47
51
|
createElement: _react.createElement,
|
|
48
52
|
Fragment: _react.Fragment
|
|
49
53
|
});
|
|
54
|
+
var AutocompleteDetachedContainer = (0, _instantsearchUiComponents.createAutocompleteDetachedContainerComponent)({
|
|
55
|
+
createElement: _react.createElement,
|
|
56
|
+
Fragment: _react.Fragment
|
|
57
|
+
});
|
|
58
|
+
var AutocompleteDetachedOverlay = (0, _instantsearchUiComponents.createAutocompleteDetachedOverlayComponent)({
|
|
59
|
+
createElement: _react.createElement,
|
|
60
|
+
Fragment: _react.Fragment
|
|
61
|
+
});
|
|
62
|
+
var AutocompleteDetachedFormContainer = (0, _instantsearchUiComponents.createAutocompleteDetachedFormContainerComponent)({
|
|
63
|
+
createElement: _react.createElement,
|
|
64
|
+
Fragment: _react.Fragment
|
|
65
|
+
});
|
|
66
|
+
var AutocompleteDetachedSearchButton = (0, _instantsearchUiComponents.createAutocompleteDetachedSearchButtonComponent)({
|
|
67
|
+
createElement: _react.createElement,
|
|
68
|
+
Fragment: _react.Fragment
|
|
69
|
+
});
|
|
50
70
|
var usePropGetters = (0, _instantsearchUiComponents.createAutocompletePropGetters)({
|
|
51
71
|
useEffect: _react.useEffect,
|
|
52
72
|
useId: _react.useId,
|
|
@@ -59,6 +79,127 @@ var useStorage = (0, _instantsearchUiComponents.createAutocompleteStorage)({
|
|
|
59
79
|
useMemo: _react.useMemo,
|
|
60
80
|
useState: _react.useState
|
|
61
81
|
});
|
|
82
|
+
var DEFAULT_DETACHED_MEDIA_QUERY = '(max-width: 680px)';
|
|
83
|
+
var DEFAULT_DETACHED_MODAL_MEDIA_QUERY = '(min-width: 680px)';
|
|
84
|
+
var DETACHED_MEDIA_QUERY_CSS_VAR = '--ais-autocomplete-detached-media-query';
|
|
85
|
+
var DETACHED_MODAL_MEDIA_QUERY_CSS_VAR = '--ais-autocomplete-detached-modal-media-query';
|
|
86
|
+
var DEFAULT_TRANSLATIONS = {
|
|
87
|
+
detachedCancelButtonText: 'Cancel',
|
|
88
|
+
detachedSearchButtonTitle: 'Search',
|
|
89
|
+
detachedClearButtonTitle: 'Clear'
|
|
90
|
+
};
|
|
91
|
+
function getCssMediaQueryValue(name) {
|
|
92
|
+
if (typeof window === 'undefined' || typeof document === 'undefined') {
|
|
93
|
+
return '';
|
|
94
|
+
}
|
|
95
|
+
return getComputedStyle(document.documentElement).getPropertyValue(name).trim();
|
|
96
|
+
}
|
|
97
|
+
function resolveMediaQuery(value, cssVarName, fallback) {
|
|
98
|
+
if (value === '') {
|
|
99
|
+
return '';
|
|
100
|
+
}
|
|
101
|
+
if (value) {
|
|
102
|
+
return value;
|
|
103
|
+
}
|
|
104
|
+
return getCssMediaQueryValue(cssVarName) || fallback;
|
|
105
|
+
}
|
|
106
|
+
function getMediaQueryList(mediaQuery) {
|
|
107
|
+
if (typeof window === 'undefined' || typeof window.matchMedia !== 'function') {
|
|
108
|
+
return null;
|
|
109
|
+
}
|
|
110
|
+
return window.matchMedia(mediaQuery);
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
/**
|
|
114
|
+
* Hook to manage detached (mobile) mode state
|
|
115
|
+
*/
|
|
116
|
+
function useDetachedMode(mediaQuery) {
|
|
117
|
+
var resolvedMediaQuery = (0, _react.useMemo)(function () {
|
|
118
|
+
return resolveMediaQuery(mediaQuery, DETACHED_MEDIA_QUERY_CSS_VAR, DEFAULT_DETACHED_MEDIA_QUERY);
|
|
119
|
+
}, [mediaQuery]);
|
|
120
|
+
var _useState = (0, _react.useState)(function () {
|
|
121
|
+
var _getMediaQueryList;
|
|
122
|
+
return resolvedMediaQuery ? Boolean((_getMediaQueryList = getMediaQueryList(resolvedMediaQuery)) === null || _getMediaQueryList === void 0 ? void 0 : _getMediaQueryList.matches) : false;
|
|
123
|
+
}),
|
|
124
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
125
|
+
isDetached = _useState2[0],
|
|
126
|
+
setIsDetached = _useState2[1];
|
|
127
|
+
var _useState3 = (0, _react.useState)(false),
|
|
128
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
129
|
+
isModalOpen = _useState4[0],
|
|
130
|
+
setIsModalOpen = _useState4[1];
|
|
131
|
+
var _useState5 = (0, _react.useState)(false),
|
|
132
|
+
_useState6 = _slicedToArray(_useState5, 2),
|
|
133
|
+
isModalDetached = _useState6[0],
|
|
134
|
+
setIsModalDetached = _useState6[1];
|
|
135
|
+
(0, _react.useEffect)(function () {
|
|
136
|
+
if (!resolvedMediaQuery) {
|
|
137
|
+
setIsDetached(false);
|
|
138
|
+
return function () {};
|
|
139
|
+
}
|
|
140
|
+
var mql = getMediaQueryList(resolvedMediaQuery);
|
|
141
|
+
if (!mql) {
|
|
142
|
+
setIsDetached(false);
|
|
143
|
+
return function () {};
|
|
144
|
+
}
|
|
145
|
+
var handler = function handler(event) {
|
|
146
|
+
var wasDetached = isDetached;
|
|
147
|
+
setIsDetached(event.matches);
|
|
148
|
+
// Close modal if switching from detached to non-detached
|
|
149
|
+
if (wasDetached && !event.matches) {
|
|
150
|
+
setIsModalOpen(false);
|
|
151
|
+
}
|
|
152
|
+
};
|
|
153
|
+
mql.addEventListener('change', handler);
|
|
154
|
+
return function () {
|
|
155
|
+
return mql.removeEventListener('change', handler);
|
|
156
|
+
};
|
|
157
|
+
}, [resolvedMediaQuery, isDetached]);
|
|
158
|
+
(0, _react.useEffect)(function () {
|
|
159
|
+
if (!isDetached) {
|
|
160
|
+
setIsModalDetached(false);
|
|
161
|
+
return function () {};
|
|
162
|
+
}
|
|
163
|
+
var modalMediaQuery = resolveMediaQuery(undefined, DETACHED_MODAL_MEDIA_QUERY_CSS_VAR, DEFAULT_DETACHED_MODAL_MEDIA_QUERY);
|
|
164
|
+
if (!modalMediaQuery) {
|
|
165
|
+
setIsModalDetached(false);
|
|
166
|
+
return function () {};
|
|
167
|
+
}
|
|
168
|
+
var mql = getMediaQueryList(modalMediaQuery);
|
|
169
|
+
if (!mql) {
|
|
170
|
+
setIsModalDetached(false);
|
|
171
|
+
return function () {};
|
|
172
|
+
}
|
|
173
|
+
var handler = function handler(event) {
|
|
174
|
+
setIsModalDetached(event.matches);
|
|
175
|
+
};
|
|
176
|
+
setIsModalDetached(mql.matches);
|
|
177
|
+
mql.addEventListener('change', handler);
|
|
178
|
+
return function () {
|
|
179
|
+
return mql.removeEventListener('change', handler);
|
|
180
|
+
};
|
|
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
|
+
}
|
|
62
203
|
function EXPERIMENTAL_Autocomplete(_ref) {
|
|
63
204
|
var _showRecent$className, _showRecent$className2, _showRecent$className3, _showRecent$className4;
|
|
64
205
|
var _ref$indices = _ref.indices,
|
|
@@ -66,15 +207,21 @@ function EXPERIMENTAL_Autocomplete(_ref) {
|
|
|
66
207
|
showSuggestions = _ref.showSuggestions,
|
|
67
208
|
showRecent = _ref.showRecent,
|
|
68
209
|
userSearchParameters = _ref.searchParameters,
|
|
210
|
+
detachedMediaQuery = _ref.detachedMediaQuery,
|
|
211
|
+
_ref$translations = _ref.translations,
|
|
212
|
+
userTranslations = _ref$translations === void 0 ? {} : _ref$translations,
|
|
69
213
|
props = _objectWithoutProperties(_ref, _excluded);
|
|
214
|
+
var translations = _objectSpread(_objectSpread({}, DEFAULT_TRANSLATIONS), userTranslations);
|
|
70
215
|
var _useInstantSearch = (0, _reactInstantsearchCore.useInstantSearch)(),
|
|
71
216
|
indexUiState = _useInstantSearch.indexUiState,
|
|
72
|
-
indexRenderState = _useInstantSearch.indexRenderState
|
|
217
|
+
indexRenderState = _useInstantSearch.indexRenderState,
|
|
218
|
+
status = _useInstantSearch.status;
|
|
73
219
|
var _useSearchBox = (0, _reactInstantsearchCore.useSearchBox)({}, {
|
|
74
220
|
$$type: 'ais.autocomplete',
|
|
75
221
|
$$widgetType: 'ais.autocomplete'
|
|
76
222
|
}),
|
|
77
223
|
refine = _useSearchBox.refine;
|
|
224
|
+
var isSearchStalled = status === 'stalled';
|
|
78
225
|
var searchParameters = _objectSpread({
|
|
79
226
|
hitsPerPage: 5
|
|
80
227
|
}, userSearchParameters);
|
|
@@ -131,16 +278,20 @@ function EXPERIMENTAL_Autocomplete(_ref) {
|
|
|
131
278
|
}), /*#__PURE__*/_react.default.createElement(InnerAutocomplete, _extends({}, props, {
|
|
132
279
|
indicesConfig: indicesConfig,
|
|
133
280
|
refineSearchBox: refine,
|
|
281
|
+
isSearchStalled: isSearchStalled,
|
|
134
282
|
indexUiState: indexUiState,
|
|
135
283
|
isSearchPage: isSearchPage,
|
|
136
284
|
showRecent: showRecent,
|
|
137
285
|
recentSearchConfig: recentSearchConfig,
|
|
138
|
-
showSuggestions: showSuggestions
|
|
286
|
+
showSuggestions: showSuggestions,
|
|
287
|
+
detachedMediaQuery: detachedMediaQuery,
|
|
288
|
+
translations: translations
|
|
139
289
|
}))));
|
|
140
290
|
}
|
|
141
291
|
function InnerAutocomplete(_ref3) {
|
|
142
292
|
var indicesConfig = _ref3.indicesConfig,
|
|
143
293
|
refineSearchBox = _ref3.refineSearchBox,
|
|
294
|
+
isSearchStalled = _ref3.isSearchStalled,
|
|
144
295
|
getSearchPageURL = _ref3.getSearchPageURL,
|
|
145
296
|
userOnSelect = _ref3.onSelect,
|
|
146
297
|
indexUiState = _ref3.indexUiState,
|
|
@@ -151,6 +302,10 @@ function InnerAutocomplete(_ref3) {
|
|
|
151
302
|
showSuggestions = _ref3.showSuggestions,
|
|
152
303
|
transformItems = _ref3.transformItems,
|
|
153
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,
|
|
154
309
|
props = _objectWithoutProperties(_ref3, _excluded2);
|
|
155
310
|
var _useAutocomplete = (0, _reactInstantsearchCore.useAutocomplete)({
|
|
156
311
|
transformItems: transformItems
|
|
@@ -158,6 +313,12 @@ function InnerAutocomplete(_ref3) {
|
|
|
158
313
|
indices = _useAutocomplete.indices,
|
|
159
314
|
refineAutocomplete = _useAutocomplete.refine,
|
|
160
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);
|
|
161
322
|
var _useStorage = useStorage({
|
|
162
323
|
showRecent: showRecent,
|
|
163
324
|
query: currentRefinement,
|
|
@@ -196,12 +357,41 @@ function InnerAutocomplete(_ref3) {
|
|
|
196
357
|
}
|
|
197
358
|
setQuery(query);
|
|
198
359
|
},
|
|
199
|
-
|
|
360
|
+
onSubmit: function onSubmit() {
|
|
361
|
+
// Close the detached modal when form is submitted
|
|
362
|
+
if (isDetached) {
|
|
363
|
+
setIsModalOpen(false);
|
|
364
|
+
}
|
|
365
|
+
},
|
|
366
|
+
placeholder: placeholder,
|
|
367
|
+
isDetached: isDetached
|
|
200
368
|
}),
|
|
201
369
|
getInputProps = _usePropGetters.getInputProps,
|
|
202
370
|
getItemProps = _usePropGetters.getItemProps,
|
|
203
371
|
getPanelProps = _usePropGetters.getPanelProps,
|
|
204
|
-
getRootProps = _usePropGetters.getRootProps
|
|
372
|
+
getRootProps = _usePropGetters.getRootProps,
|
|
373
|
+
isOpen = _usePropGetters.isOpen,
|
|
374
|
+
setIsOpen = _usePropGetters.setIsOpen,
|
|
375
|
+
focusInput = _usePropGetters.focusInput;
|
|
376
|
+
|
|
377
|
+
// Open panel and focus input when modal opens
|
|
378
|
+
(0, _react.useEffect)(function () {
|
|
379
|
+
if (isDetached && isModalOpen) {
|
|
380
|
+
setIsOpen(true);
|
|
381
|
+
// Focus input to show the keyboard on mobile
|
|
382
|
+
focusInput();
|
|
383
|
+
}
|
|
384
|
+
}, [isDetached, isModalOpen, setIsOpen, focusInput]);
|
|
385
|
+
|
|
386
|
+
// Keep the modal open if the panel was open before switching to detached
|
|
387
|
+
(0, _react.useEffect)(function () {
|
|
388
|
+
var wasDetached = previousIsDetachedRef.current;
|
|
389
|
+
var switchedToDetached = !wasDetached && isDetached;
|
|
390
|
+
if (switchedToDetached && isOpen) {
|
|
391
|
+
setIsModalOpen(true);
|
|
392
|
+
}
|
|
393
|
+
previousIsDetachedRef.current = isDetached;
|
|
394
|
+
}, [isDetached, isOpen, setIsModalOpen]);
|
|
205
395
|
var elements = {};
|
|
206
396
|
if (showRecent && recentSearchConfig) {
|
|
207
397
|
var RecentSearchItemComponent = recentSearchConfig.itemComponent;
|
|
@@ -263,18 +453,66 @@ function InnerAutocomplete(_ref3) {
|
|
|
263
453
|
classNames: currentIndexConfig.classNames
|
|
264
454
|
});
|
|
265
455
|
});
|
|
266
|
-
|
|
456
|
+
var searchBoxContent = /*#__PURE__*/_react.default.createElement(_AutocompleteSearch.AutocompleteSearch, {
|
|
267
457
|
inputProps: getInputProps(),
|
|
268
458
|
clearQuery: function clearQuery() {
|
|
269
459
|
refineSearchBox('');
|
|
270
460
|
refineAutocomplete('');
|
|
271
|
-
}
|
|
272
|
-
|
|
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, {
|
|
273
470
|
elements: elements,
|
|
274
471
|
indices: indices
|
|
275
472
|
}) : Object.keys(elements).map(function (elementId) {
|
|
276
473
|
return elements[elementId];
|
|
277
|
-
}))
|
|
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);
|
|
278
516
|
}
|
|
279
517
|
function ConditionalReverseHighlight(_ref7) {
|
|
280
518
|
var _item$_highlightResul;
|
|
@@ -9,11 +9,6 @@ var _instantsearchUiComponents = require("instantsearch-ui-components");
|
|
|
9
9
|
var _react = _interopRequireWildcard(require("react"));
|
|
10
10
|
var _components = require("../../../components");
|
|
11
11
|
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
|
|
12
|
-
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; }
|
|
13
|
-
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; }
|
|
14
|
-
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; }
|
|
15
|
-
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
|
|
16
|
-
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); }
|
|
17
12
|
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
|
|
18
13
|
function createCarouselTool(showViewAll, itemComponent, getSearchPageURL) {
|
|
19
14
|
var Button = (0, _instantsearchUiComponents.createButtonComponent)({
|
|
@@ -21,8 +16,7 @@ function createCarouselTool(showViewAll, itemComponent, getSearchPageURL) {
|
|
|
21
16
|
});
|
|
22
17
|
function SearchLayoutComponent(_ref) {
|
|
23
18
|
var message = _ref.message,
|
|
24
|
-
|
|
25
|
-
setIndexUiState = _ref.setIndexUiState,
|
|
19
|
+
applyFilters = _ref.applyFilters,
|
|
26
20
|
onClose = _ref.onClose;
|
|
27
21
|
var input = message === null || message === void 0 ? void 0 : message.input;
|
|
28
22
|
var output = message === null || message === void 0 ? void 0 : message.output;
|
|
@@ -31,15 +25,13 @@ function createCarouselTool(showViewAll, itemComponent, getSearchPageURL) {
|
|
|
31
25
|
return function (props) {
|
|
32
26
|
return /*#__PURE__*/_react.default.createElement(HeaderComponent, _extends({
|
|
33
27
|
nbHits: output === null || output === void 0 ? void 0 : output.nbHits,
|
|
34
|
-
|
|
28
|
+
input: input,
|
|
35
29
|
hitsPerPage: items.length,
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
getSearchPageURL: getSearchPageURL,
|
|
39
|
-
onClose: onClose
|
|
30
|
+
onClose: onClose,
|
|
31
|
+
applyFilters: applyFilters
|
|
40
32
|
}, props));
|
|
41
33
|
};
|
|
42
|
-
}, [items.length, input
|
|
34
|
+
}, [items.length, input, output === null || output === void 0 ? void 0 : output.nbHits, applyFilters, onClose]);
|
|
43
35
|
return /*#__PURE__*/_react.default.createElement(_components.Carousel, {
|
|
44
36
|
items: items,
|
|
45
37
|
itemComponent: itemComponent,
|
|
@@ -54,11 +46,9 @@ function createCarouselTool(showViewAll, itemComponent, getSearchPageURL) {
|
|
|
54
46
|
scrollLeft = _ref2.scrollLeft,
|
|
55
47
|
scrollRight = _ref2.scrollRight,
|
|
56
48
|
nbHits = _ref2.nbHits,
|
|
57
|
-
|
|
49
|
+
input = _ref2.input,
|
|
58
50
|
hitsPerPage = _ref2.hitsPerPage,
|
|
59
|
-
|
|
60
|
-
indexUiState = _ref2.indexUiState,
|
|
61
|
-
getSearchPageURL = _ref2.getSearchPageURL,
|
|
51
|
+
applyFilters = _ref2.applyFilters,
|
|
62
52
|
onClose = _ref2.onClose;
|
|
63
53
|
if ((hitsPerPage !== null && hitsPerPage !== void 0 ? hitsPerPage : 0) < 1) {
|
|
64
54
|
return null;
|
|
@@ -73,20 +63,15 @@ function createCarouselTool(showViewAll, itemComponent, getSearchPageURL) {
|
|
|
73
63
|
variant: "ghost",
|
|
74
64
|
size: "sm",
|
|
75
65
|
onClick: function onClick() {
|
|
76
|
-
if (!
|
|
77
|
-
var
|
|
78
|
-
query: query
|
|
66
|
+
if (!input || !applyFilters) return;
|
|
67
|
+
var params = applyFilters({
|
|
68
|
+
query: input.query,
|
|
69
|
+
facetFilters: input.facet_filters
|
|
79
70
|
});
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
if (!getSearchPageURL || getSearchPageURL && new URL(getSearchPageURL(nextUiState)).pathname === window.location.pathname) {
|
|
83
|
-
setIndexUiState(nextUiState);
|
|
84
|
-
onClose();
|
|
85
|
-
return;
|
|
71
|
+
if (getSearchPageURL && new URL(getSearchPageURL(params)).pathname !== window.location.pathname) {
|
|
72
|
+
window.location.href = getSearchPageURL(params);
|
|
86
73
|
}
|
|
87
|
-
|
|
88
|
-
// Navigate to different page
|
|
89
|
-
window.location.href = getSearchPageURL(nextUiState);
|
|
74
|
+
onClose();
|
|
90
75
|
},
|
|
91
76
|
className: "ais-ChatToolSearchIndexCarouselHeaderViewAll"
|
|
92
77
|
}, "View all", /*#__PURE__*/_react.default.createElement(_instantsearchUiComponents.ArrowRightIcon, {
|
|
@@ -3,5 +3,9 @@ import type { ComponentProps } from 'instantsearch-ui-components';
|
|
|
3
3
|
export type AutocompleteSearchProps = {
|
|
4
4
|
inputProps: ComponentProps<'input'>;
|
|
5
5
|
clearQuery: () => void;
|
|
6
|
+
onQueryChange?: (query: string) => void;
|
|
7
|
+
query: string;
|
|
8
|
+
refine: (query: string) => void;
|
|
9
|
+
isSearchStalled: boolean;
|
|
6
10
|
};
|
|
7
|
-
export declare function AutocompleteSearch({ inputProps, clearQuery, }: AutocompleteSearchProps): React.JSX.Element;
|
|
11
|
+
export declare function AutocompleteSearch({ inputProps, clearQuery, onQueryChange, query, refine, isSearchStalled, }: AutocompleteSearchProps): React.JSX.Element;
|
|
@@ -6,22 +6,23 @@ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol"
|
|
|
6
6
|
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); }
|
|
7
7
|
import { createAutocompleteSearchComponent } from 'instantsearch-ui-components';
|
|
8
8
|
import React, { createElement, Fragment } from 'react';
|
|
9
|
-
import { useSearchBox } from 'react-instantsearch-core';
|
|
10
9
|
var AutocompleteSearchComponent = createAutocompleteSearchComponent({
|
|
11
10
|
createElement: createElement,
|
|
12
11
|
Fragment: Fragment
|
|
13
12
|
});
|
|
14
13
|
export function AutocompleteSearch(_ref) {
|
|
15
14
|
var inputProps = _ref.inputProps,
|
|
16
|
-
clearQuery = _ref.clearQuery
|
|
17
|
-
|
|
18
|
-
query =
|
|
19
|
-
refine =
|
|
20
|
-
isSearchStalled =
|
|
15
|
+
clearQuery = _ref.clearQuery,
|
|
16
|
+
onQueryChange = _ref.onQueryChange,
|
|
17
|
+
query = _ref.query,
|
|
18
|
+
refine = _ref.refine,
|
|
19
|
+
isSearchStalled = _ref.isSearchStalled;
|
|
21
20
|
return /*#__PURE__*/React.createElement(AutocompleteSearchComponent, {
|
|
22
21
|
inputProps: _objectSpread(_objectSpread({}, inputProps), {}, {
|
|
23
22
|
onChange: function onChange(event) {
|
|
24
|
-
|
|
23
|
+
var value = event.currentTarget.value;
|
|
24
|
+
refine(value);
|
|
25
|
+
onQueryChange === null || onQueryChange === void 0 ? void 0 : onQueryChange(value);
|
|
25
26
|
}
|
|
26
27
|
}),
|
|
27
28
|
onClear: clearQuery,
|
|
@@ -13,6 +13,11 @@ type IndexConfig<TItem extends BaseHit> = AutocompleteIndexConfig<TItem> & {
|
|
|
13
13
|
classNames?: Partial<AutocompleteIndexClassNames>;
|
|
14
14
|
};
|
|
15
15
|
type PanelElements = Partial<Record<'recent' | 'suggestions' | (string & {}), React.JSX.Element>>;
|
|
16
|
+
type AutocompleteTranslations = {
|
|
17
|
+
detachedCancelButtonText: string;
|
|
18
|
+
detachedSearchButtonTitle: string;
|
|
19
|
+
detachedClearButtonTitle: string;
|
|
20
|
+
};
|
|
16
21
|
export type AutocompleteProps<TItem extends BaseHit> = ComponentProps<'div'> & {
|
|
17
22
|
indices?: Array<IndexConfig<TItem>>;
|
|
18
23
|
showSuggestions?: Partial<Pick<IndexConfig<{
|
|
@@ -49,6 +54,18 @@ export type AutocompleteProps<TItem extends BaseHit> = ComponentProps<'div'> & {
|
|
|
49
54
|
searchParameters?: AutocompleteSearchParameters;
|
|
50
55
|
classNames?: Partial<AutocompleteClassNames>;
|
|
51
56
|
placeholder?: string;
|
|
57
|
+
/**
|
|
58
|
+
* Media query to enable detached (mobile) mode.
|
|
59
|
+
* When the media query matches, the autocomplete switches to a full-screen overlay.
|
|
60
|
+
* Set to empty string to disable detached mode.
|
|
61
|
+
* When omitted, defaults to `--ais-autocomplete-detached-media-query`.
|
|
62
|
+
* @default "(max-width: 680px)"
|
|
63
|
+
*/
|
|
64
|
+
detachedMediaQuery?: string;
|
|
65
|
+
/**
|
|
66
|
+
* Translations for the Autocomplete widget.
|
|
67
|
+
*/
|
|
68
|
+
translations?: Partial<AutocompleteTranslations>;
|
|
52
69
|
};
|
|
53
|
-
export declare function EXPERIMENTAL_Autocomplete<TItem extends BaseHit = BaseHit>({ indices, showSuggestions, showRecent, searchParameters: userSearchParameters, ...props }: AutocompleteProps<TItem>): React.JSX.Element;
|
|
70
|
+
export declare function EXPERIMENTAL_Autocomplete<TItem extends BaseHit = BaseHit>({ indices, showSuggestions, showRecent, searchParameters: userSearchParameters, detachedMediaQuery, translations: userTranslations, ...props }: AutocompleteProps<TItem>): React.JSX.Element;
|
|
54
71
|
export {};
|