instantsearch-ui-components 0.12.0 → 0.13.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.
@@ -13,13 +13,18 @@ function createAutocompleteIndexComponent(_ref) {
13
13
  var createElement = _ref.createElement;
14
14
  return function AutocompleteIndex(userProps) {
15
15
  var items = userProps.items,
16
+ HeaderComponent = userProps.HeaderComponent,
16
17
  ItemComponent = userProps.ItemComponent,
17
18
  getItemProps = userProps.getItemProps,
18
19
  _userProps$classNames = userProps.classNames,
19
20
  classNames = _userProps$classNames === void 0 ? {} : _userProps$classNames;
20
21
  return createElement("div", {
21
22
  className: (0, _cx.cx)('ais-AutocompleteIndex', classNames.root)
22
- }, createElement("ol", {
23
+ }, HeaderComponent && createElement("div", {
24
+ className: (0, _cx.cx)('ais-AutocompleteIndexHeader', classNames.header)
25
+ }, createElement(HeaderComponent, {
26
+ items: items
27
+ })), createElement("ol", {
23
28
  className: (0, _cx.cx)('ais-AutocompleteIndexList', classNames.list)
24
29
  }, items.map(function (item, index) {
25
30
  var _getItemProps = getItemProps(item, index),
@@ -0,0 +1,70 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.createAutocompleteSearchComponent = createAutocompleteSearchComponent;
8
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
+ var _icons = require("./icons");
10
+ function createAutocompleteSearchComponent(_ref) {
11
+ var createElement = _ref.createElement;
12
+ return function AutocompleteSearch(_ref2) {
13
+ var inputProps = _ref2.inputProps,
14
+ onClear = _ref2.onClear,
15
+ query = _ref2.query,
16
+ isSearchStalled = _ref2.isSearchStalled;
17
+ return createElement("form", {
18
+ className: "ais-AutocompleteForm",
19
+ action: "",
20
+ noValidate: true,
21
+ role: "search",
22
+ onSubmit: function onSubmit(e) {
23
+ return e.preventDefault();
24
+ }
25
+ }, createElement("div", {
26
+ className: "ais-AutocompleteInputWrapperPrefix"
27
+ }, createElement("label", {
28
+ className: "ais-AutocompleteLabel",
29
+ "aria-label": "Submit",
30
+ htmlFor: inputProps.id,
31
+ id: "".concat(inputProps.id, "-label")
32
+ }, createElement("button", {
33
+ className: "ais-AutocompleteSubmitButton",
34
+ type: "submit",
35
+ title: "Submit"
36
+ }, createElement(_icons.AutocompleteSubmitIcon, {
37
+ createElement: createElement
38
+ }))), createElement("div", {
39
+ className: "ais-AutocompleteLoadingIndicator",
40
+ hidden: !isSearchStalled
41
+ }, createElement(_icons.AutocompleteLoadingIcon, {
42
+ createElement: createElement
43
+ }))), createElement("div", {
44
+ className: "ais-AutocompleteInputWrapper"
45
+ }, createElement("input", (0, _extends2.default)({
46
+ className: "ais-AutocompleteInput",
47
+ "aria-autocomplete": "both",
48
+ "aria-labelledby": "".concat(inputProps.id, "-label"),
49
+ autoComplete: "off",
50
+ autoCorrect: "off",
51
+ autoCapitalize: "off",
52
+ enterKeyHint: "search",
53
+ spellCheck: "false",
54
+ placeholder: "",
55
+ maxLength: 512,
56
+ type: "search",
57
+ value: query
58
+ }, inputProps))), createElement("div", {
59
+ className: "ais-AutocompleteInputWrapperSuffix"
60
+ }, createElement("button", {
61
+ className: "ais-AutocompleteClearButton",
62
+ type: "reset",
63
+ title: "Clear",
64
+ hidden: query.length === 0 || isSearchStalled,
65
+ onClick: onClear
66
+ }, createElement(_icons.AutocompleteClearIcon, {
67
+ createElement: createElement
68
+ }))));
69
+ };
70
+ }
@@ -0,0 +1,222 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.createAutocompletePropGetters = createAutocompletePropGetters;
8
+ var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
9
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
10
+ function createAutocompletePropGetters(_ref) {
11
+ var useEffect = _ref.useEffect,
12
+ useId = _ref.useId,
13
+ useMemo = _ref.useMemo,
14
+ useRef = _ref.useRef,
15
+ useState = _ref.useState;
16
+ return function usePropGetters(_ref2) {
17
+ var indices = _ref2.indices,
18
+ indicesConfig = _ref2.indicesConfig,
19
+ onRefine = _ref2.onRefine,
20
+ globalOnSelect = _ref2.onSelect;
21
+ var getElementId = createGetElementId(useId());
22
+ var rootRef = useRef(null);
23
+ var _useState = useState(false),
24
+ _useState2 = (0, _slicedToArray2.default)(_useState, 2),
25
+ isOpen = _useState2[0],
26
+ setIsOpen = _useState2[1];
27
+ var _useState3 = useState(undefined),
28
+ _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
29
+ activeDescendant = _useState4[0],
30
+ setActiveDescendant = _useState4[1];
31
+ var _useMemo = useMemo(function () {
32
+ return buildItems({
33
+ indices: indices,
34
+ indicesConfig: indicesConfig,
35
+ getElementId: getElementId
36
+ });
37
+ }, [indices, indicesConfig, getElementId]),
38
+ items = _useMemo.items,
39
+ itemsIds = _useMemo.itemsIds;
40
+ useEffect(function () {
41
+ var onBodyClick = function onBodyClick(event) {
42
+ var _unwrapRef;
43
+ if ((_unwrapRef = unwrapRef(rootRef)) !== null && _unwrapRef !== void 0 && _unwrapRef.contains(event.target)) {
44
+ return;
45
+ }
46
+ setIsOpen(false);
47
+ };
48
+ document.body.addEventListener('click', onBodyClick);
49
+ return function () {
50
+ document.body.removeEventListener('click', onBodyClick);
51
+ };
52
+ }, [rootRef]);
53
+ var getNextActiveDescendent = function getNextActiveDescendent(key) {
54
+ switch (key) {
55
+ case 'ArrowLeft':
56
+ case 'ArrowUp':
57
+ {
58
+ var prevIndex = itemsIds.indexOf(activeDescendant || '') - 1;
59
+ return itemsIds[prevIndex] || itemsIds[itemsIds.length - 1];
60
+ }
61
+ case 'ArrowRight':
62
+ case 'ArrowDown':
63
+ {
64
+ var nextIndex = itemsIds.indexOf(activeDescendant || '') + 1;
65
+ return itemsIds[nextIndex] || itemsIds[0];
66
+ }
67
+ default:
68
+ return undefined;
69
+ }
70
+ };
71
+ var submit = function submit() {
72
+ var actualActiveDescendant = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : activeDescendant;
73
+ setIsOpen(false);
74
+ if (actualActiveDescendant && items.has(actualActiveDescendant)) {
75
+ var _getQuery;
76
+ var _ref3 = items.get(actualActiveDescendant),
77
+ _item = _ref3.item,
78
+ _ref3$config = _ref3.config,
79
+ indexOnSelect = _ref3$config.onSelect,
80
+ getQuery = _ref3$config.getQuery,
81
+ getURL = _ref3$config.getURL;
82
+ var actualOnSelect = indexOnSelect !== null && indexOnSelect !== void 0 ? indexOnSelect : globalOnSelect;
83
+ actualOnSelect({
84
+ item: _item,
85
+ query: (_getQuery = getQuery === null || getQuery === void 0 ? void 0 : getQuery(_item)) !== null && _getQuery !== void 0 ? _getQuery : '',
86
+ url: getURL === null || getURL === void 0 ? void 0 : getURL(_item),
87
+ setQuery: function setQuery(query) {
88
+ return onRefine(query);
89
+ }
90
+ });
91
+ setActiveDescendant(undefined);
92
+ }
93
+ };
94
+ return {
95
+ getInputProps: function getInputProps() {
96
+ return {
97
+ id: getElementId('input'),
98
+ role: 'combobox',
99
+ 'aria-autocomplete': 'list',
100
+ 'aria-expanded': isOpen,
101
+ 'aria-haspopup': 'grid',
102
+ 'aria-controls': getElementId('panel'),
103
+ 'aria-activedescendant': activeDescendant,
104
+ onFocus: function onFocus() {
105
+ return setIsOpen(true);
106
+ },
107
+ onKeyDown: function onKeyDown(event) {
108
+ if (event.key === 'Escape') {
109
+ setActiveDescendant(undefined);
110
+ setIsOpen(false);
111
+ return;
112
+ }
113
+ switch (event.key) {
114
+ case 'ArrowLeft':
115
+ case 'ArrowUp':
116
+ case 'ArrowRight':
117
+ case 'ArrowDown':
118
+ {
119
+ var _document$getElementB;
120
+ var nextActiveDescendent = getNextActiveDescendent(event.key);
121
+ setActiveDescendant(nextActiveDescendent);
122
+ (_document$getElementB = document.getElementById(nextActiveDescendent)) === null || _document$getElementB === void 0 ? void 0 : _document$getElementB.scrollIntoView(false);
123
+ event.preventDefault();
124
+ break;
125
+ }
126
+ case 'Enter':
127
+ {
128
+ submit();
129
+ break;
130
+ }
131
+ case 'Tab':
132
+ setIsOpen(false);
133
+ break;
134
+ default:
135
+ return;
136
+ }
137
+ },
138
+ onKeyUp: function onKeyUp(event) {
139
+ switch (event.key) {
140
+ case 'ArrowLeft':
141
+ case 'ArrowUp':
142
+ case 'ArrowRight':
143
+ case 'ArrowDown':
144
+ case 'Escape':
145
+ case 'Return':
146
+ event.preventDefault();
147
+ return;
148
+ default:
149
+ setActiveDescendant(undefined);
150
+ break;
151
+ }
152
+ }
153
+ };
154
+ },
155
+ getItemProps: function getItemProps(item, index) {
156
+ var id = getElementId('item', item.__indexName, index);
157
+ return {
158
+ id: id,
159
+ role: 'row',
160
+ 'aria-selected': id === activeDescendant,
161
+ onSelect: function onSelect() {
162
+ return submit(id);
163
+ }
164
+ };
165
+ },
166
+ getPanelProps: function getPanelProps() {
167
+ return {
168
+ hidden: !isOpen,
169
+ id: getElementId('panel'),
170
+ role: 'grid',
171
+ 'aria-labelledby': getElementId('input')
172
+ };
173
+ },
174
+ getRootProps: function getRootProps() {
175
+ return {
176
+ ref: rootRef
177
+ };
178
+ }
179
+ };
180
+ };
181
+ }
182
+ function buildItems(_ref4) {
183
+ var indices = _ref4.indices,
184
+ indicesConfig = _ref4.indicesConfig,
185
+ getElementId = _ref4.getElementId;
186
+ var itemsIds = [];
187
+ var items = new Map();
188
+ for (var i = 0; i < indicesConfig.length; i++) {
189
+ var _indices$i;
190
+ var config = indicesConfig[i];
191
+ var hits = ((_indices$i = indices[i]) === null || _indices$i === void 0 ? void 0 : _indices$i.hits) || [];
192
+ for (var position = 0; position < hits.length; position++) {
193
+ var itemId = getElementId('item', config.indexName, position);
194
+ items.set(itemId, {
195
+ item: hits[position],
196
+ config: config
197
+ });
198
+ itemsIds.push(itemId);
199
+ }
200
+ }
201
+ return {
202
+ items: items,
203
+ itemsIds: itemsIds
204
+ };
205
+ }
206
+ function createGetElementId(autocompleteId) {
207
+ return function getElementId() {
208
+ var prefix = 'autocomplete';
209
+ for (var _len = arguments.length, suffixes = new Array(_len), _key = 0; _key < _len; _key++) {
210
+ suffixes[_key] = arguments[_key];
211
+ }
212
+ return "".concat(prefix).concat(autocompleteId).concat(suffixes.join(':'));
213
+ };
214
+ }
215
+
216
+ /**
217
+ * Returns the framework-agnostic value of a ref.
218
+ */
219
+ function unwrapRef(ref) {
220
+ return ref.current && (0, _typeof2.default)(ref.current) === 'object' && 'base' in ref.current ? ref.current.base // Preact
221
+ : ref.current; // React
222
+ }
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.AutocompleteClearIcon = AutocompleteClearIcon;
7
+ exports.AutocompleteLoadingIcon = AutocompleteLoadingIcon;
8
+ exports.AutocompleteSubmitIcon = AutocompleteSubmitIcon;
9
+ function AutocompleteSubmitIcon(_ref) {
10
+ var createElement = _ref.createElement;
11
+ return createElement("svg", {
12
+ className: "ais-AutocompleteSubmitIcon",
13
+ viewBox: "0 0 24 24",
14
+ width: "20",
15
+ height: "20",
16
+ fill: "currentColor"
17
+ }, createElement("path", {
18
+ d: "M16.041 15.856c-0.034 0.026-0.067 0.055-0.099 0.087s-0.060 0.064-0.087 0.099c-1.258 1.213-2.969 1.958-4.855 1.958-1.933 0-3.682-0.782-4.95-2.050s-2.050-3.017-2.050-4.95 0.782-3.682 2.050-4.95 3.017-2.050 4.95-2.050 3.682 0.782 4.95 2.050 2.050 3.017 2.050 4.95c0 1.886-0.745 3.597-1.959 4.856zM21.707 20.293l-3.675-3.675c1.231-1.54 1.968-3.493 1.968-5.618 0-2.485-1.008-4.736-2.636-6.364s-3.879-2.636-6.364-2.636-4.736 1.008-6.364 2.636-2.636 3.879-2.636 6.364 1.008 4.736 2.636 6.364 3.879 2.636 6.364 2.636c2.125 0 4.078-0.737 5.618-1.968l3.675 3.675c0.391 0.391 1.024 0.391 1.414 0s0.391-1.024 0-1.414z"
19
+ }));
20
+ }
21
+ function AutocompleteLoadingIcon(_ref2) {
22
+ var createElement = _ref2.createElement;
23
+ return createElement("svg", {
24
+ className: "ais-AutocompleteLoadingIcon",
25
+ viewBox: "0 0 100 100",
26
+ width: "20",
27
+ height: "20"
28
+ }, createElement("circle", {
29
+ cx: "50",
30
+ cy: "50",
31
+ fill: "none",
32
+ r: "35",
33
+ stroke: "currentColor",
34
+ strokeDasharray: "164.93361431346415 56.97787143782138",
35
+ strokeWidth: "6"
36
+ }, createElement("animateTransform", {
37
+ attributeName: "transform",
38
+ type: "rotate",
39
+ repeatCount: "indefinite",
40
+ dur: "1s",
41
+ values: "0 50 50;90 50 50;180 50 50;360 50 50",
42
+ keyTimes: "0;0.40;0.65;1"
43
+ })));
44
+ }
45
+ function AutocompleteClearIcon(_ref3) {
46
+ var createElement = _ref3.createElement;
47
+ return createElement("svg", {
48
+ className: "ais-AutocompleteClearIcon",
49
+ viewBox: "0 0 24 24",
50
+ width: "18",
51
+ height: "18",
52
+ fill: "currentColor"
53
+ }, createElement("path", {
54
+ d: "M5.293 6.707l5.293 5.293-5.293 5.293c-0.391 0.391-0.391 1.024 0 1.414s1.024 0.391 1.414 0l5.293-5.293 5.293 5.293c0.391 0.391 1.024 0.391 1.414 0s0.391-1.024 0-1.414l-5.293-5.293 5.293-5.293c0.391-0.391 0.391-1.024 0-1.414s-1.024-0.391-1.414 0l-5.293 5.293-5.293-5.293c-0.391-0.391-1.024-0.391-1.414 0s-0.391 1.024 0 1.414z"
55
+ }));
56
+ }
@@ -36,6 +36,17 @@ Object.keys(_AutocompletePanel).forEach(function (key) {
36
36
  }
37
37
  });
38
38
  });
39
+ var _AutocompleteSearch = require("./AutocompleteSearch");
40
+ Object.keys(_AutocompleteSearch).forEach(function (key) {
41
+ if (key === "default" || key === "__esModule") return;
42
+ if (key in exports && exports[key] === _AutocompleteSearch[key]) return;
43
+ Object.defineProperty(exports, key, {
44
+ enumerable: true,
45
+ get: function get() {
46
+ return _AutocompleteSearch[key];
47
+ }
48
+ });
49
+ });
39
50
  var _AutocompleteSuggestion = require("./AutocompleteSuggestion");
40
51
  Object.keys(_AutocompleteSuggestion).forEach(function (key) {
41
52
  if (key === "default" || key === "__esModule") return;
@@ -46,4 +57,15 @@ Object.keys(_AutocompleteSuggestion).forEach(function (key) {
46
57
  return _AutocompleteSuggestion[key];
47
58
  }
48
59
  });
60
+ });
61
+ var _createAutocompletePropGetters = require("./createAutocompletePropGetters");
62
+ Object.keys(_createAutocompletePropGetters).forEach(function (key) {
63
+ if (key === "default" || key === "__esModule") return;
64
+ if (key in exports && exports[key] === _createAutocompletePropGetters[key]) return;
65
+ Object.defineProperty(exports, key, {
66
+ enumerable: true,
67
+ get: function get() {
68
+ return _createAutocompletePropGetters[key];
69
+ }
70
+ });
49
71
  });
@@ -228,12 +228,12 @@ function StopIconComponent(_ref9) {
228
228
  rx: "1"
229
229
  }));
230
230
  }
231
- function ReloadIconComponent(_ref10) {
232
- var createElement = _ref10.createElement,
233
- _ref10$width = _ref10.width,
234
- width = _ref10$width === void 0 ? 16 : _ref10$width,
235
- _ref10$height = _ref10.height,
236
- height = _ref10$height === void 0 ? 16 : _ref10$height;
231
+ function ReloadIconComponent(_ref0) {
232
+ var createElement = _ref0.createElement,
233
+ _ref0$width = _ref0.width,
234
+ width = _ref0$width === void 0 ? 16 : _ref0$width,
235
+ _ref0$height = _ref0.height,
236
+ height = _ref0$height === void 0 ? 16 : _ref0$height;
237
237
  return createElement("svg", {
238
238
  xmlns: "http://www.w3.org/2000/svg",
239
239
  width: width,
@@ -254,12 +254,12 @@ function ReloadIconComponent(_ref10) {
254
254
  d: "M3 21v-5h5"
255
255
  }));
256
256
  }
257
- function CopyIconComponent(_ref11) {
258
- var createElement = _ref11.createElement,
259
- _ref11$width = _ref11.width,
260
- width = _ref11$width === void 0 ? 16 : _ref11$width,
261
- _ref11$height = _ref11.height,
262
- height = _ref11$height === void 0 ? 16 : _ref11$height;
257
+ function CopyIconComponent(_ref1) {
258
+ var createElement = _ref1.createElement,
259
+ _ref1$width = _ref1.width,
260
+ width = _ref1$width === void 0 ? 16 : _ref1$width,
261
+ _ref1$height = _ref1.height,
262
+ height = _ref1$height === void 0 ? 16 : _ref1$height;
263
263
  return createElement("svg", {
264
264
  xmlns: "http://www.w3.org/2000/svg",
265
265
  width: width,
@@ -281,12 +281,12 @@ function CopyIconComponent(_ref11) {
281
281
  d: "M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"
282
282
  }));
283
283
  }
284
- function MenuIconComponent(_ref12) {
285
- var createElement = _ref12.createElement,
286
- _ref12$width = _ref12.width,
287
- width = _ref12$width === void 0 ? 16 : _ref12$width,
288
- _ref12$height = _ref12.height,
289
- height = _ref12$height === void 0 ? 16 : _ref12$height;
284
+ function MenuIconComponent(_ref10) {
285
+ var createElement = _ref10.createElement,
286
+ _ref10$width = _ref10.width,
287
+ width = _ref10$width === void 0 ? 16 : _ref10$width,
288
+ _ref10$height = _ref10.height,
289
+ height = _ref10$height === void 0 ? 16 : _ref10$height;
290
290
  return createElement("svg", {
291
291
  xmlns: "http://www.w3.org/2000/svg",
292
292
  width: width,
@@ -311,12 +311,12 @@ function MenuIconComponent(_ref12) {
311
311
  r: "1"
312
312
  }));
313
313
  }
314
- function LoadingSpinnerIconComponent(_ref13) {
315
- var createElement = _ref13.createElement,
316
- _ref13$width = _ref13.width,
317
- width = _ref13$width === void 0 ? 24 : _ref13$width,
318
- _ref13$height = _ref13.height,
319
- height = _ref13$height === void 0 ? 24 : _ref13$height;
314
+ function LoadingSpinnerIconComponent(_ref11) {
315
+ var createElement = _ref11.createElement,
316
+ _ref11$width = _ref11.width,
317
+ width = _ref11$width === void 0 ? 24 : _ref11$width,
318
+ _ref11$height = _ref11.height,
319
+ height = _ref11$height === void 0 ? 24 : _ref11$height;
320
320
  return createElement("svg", {
321
321
  viewBox: "12 12 24 24",
322
322
  width: width,
@@ -333,12 +333,12 @@ function LoadingSpinnerIconComponent(_ref13) {
333
333
  stroke: "currentColor"
334
334
  }));
335
335
  }
336
- function ChevronLeftIconComponent(_ref14) {
337
- var createElement = _ref14.createElement,
338
- _ref14$width = _ref14.width,
339
- width = _ref14$width === void 0 ? 16 : _ref14$width,
340
- _ref14$height = _ref14.height,
341
- height = _ref14$height === void 0 ? 16 : _ref14$height;
336
+ function ChevronLeftIconComponent(_ref12) {
337
+ var createElement = _ref12.createElement,
338
+ _ref12$width = _ref12.width,
339
+ width = _ref12$width === void 0 ? 16 : _ref12$width,
340
+ _ref12$height = _ref12.height,
341
+ height = _ref12$height === void 0 ? 16 : _ref12$height;
342
342
  return createElement("svg", {
343
343
  xmlns: "http://www.w3.org/2000/svg",
344
344
  width: width,
@@ -353,12 +353,12 @@ function ChevronLeftIconComponent(_ref14) {
353
353
  d: "m15 18-6-6 6-6"
354
354
  }));
355
355
  }
356
- function ChevronRightIconComponent(_ref15) {
357
- var createElement = _ref15.createElement,
358
- _ref15$width = _ref15.width,
359
- width = _ref15$width === void 0 ? 16 : _ref15$width,
360
- _ref15$height = _ref15.height,
361
- height = _ref15$height === void 0 ? 16 : _ref15$height;
356
+ function ChevronRightIconComponent(_ref13) {
357
+ var createElement = _ref13.createElement,
358
+ _ref13$width = _ref13.width,
359
+ width = _ref13$width === void 0 ? 16 : _ref13$width,
360
+ _ref13$height = _ref13.height,
361
+ height = _ref13$height === void 0 ? 16 : _ref13$height;
362
362
  return createElement("svg", {
363
363
  xmlns: "http://www.w3.org/2000/svg",
364
364
  width: width,
@@ -4,4 +4,4 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
- var _default = exports.default = '0.12.0';
7
+ var _default = exports.default = '0.13.0';
@@ -1,6 +1,6 @@
1
1
  /** @jsx createElement */
2
2
  import type { ComponentChildren, ComponentProps, Renderer } from '../../types';
3
- export type AutocompleteProps = ComponentProps<'div'> & {
3
+ export type AutocompleteProps = Omit<ComponentProps<'div'>, 'children'> & {
4
4
  children?: ComponentChildren;
5
5
  classNames?: Partial<AutocompleteClassNames>;
6
6
  };
@@ -5,6 +5,9 @@ export type AutocompleteIndexProps<T = {
5
5
  __indexName: string;
6
6
  } & Record<string, unknown>> = {
7
7
  items: T[];
8
+ HeaderComponent?: (props: {
9
+ items: T[];
10
+ }) => JSX.Element;
8
11
  ItemComponent: (props: {
9
12
  item: T;
10
13
  onSelect: () => void;
@@ -23,6 +26,10 @@ export type AutocompleteIndexClassNames = {
23
26
  * Class names to apply to the list element
24
27
  */
25
28
  list: string | string[];
29
+ /**
30
+ * Class names to apply to the header element
31
+ */
32
+ header: string | string[];
26
33
  /**
27
34
  * Class names to apply to each item element
28
35
  */
@@ -6,13 +6,18 @@ export function createAutocompleteIndexComponent(_ref) {
6
6
  var createElement = _ref.createElement;
7
7
  return function AutocompleteIndex(userProps) {
8
8
  var items = userProps.items,
9
+ HeaderComponent = userProps.HeaderComponent,
9
10
  ItemComponent = userProps.ItemComponent,
10
11
  getItemProps = userProps.getItemProps,
11
12
  _userProps$classNames = userProps.classNames,
12
13
  classNames = _userProps$classNames === void 0 ? {} : _userProps$classNames;
13
14
  return createElement("div", {
14
15
  className: cx('ais-AutocompleteIndex', classNames.root)
15
- }, createElement("ol", {
16
+ }, HeaderComponent && createElement("div", {
17
+ className: cx('ais-AutocompleteIndexHeader', classNames.header)
18
+ }, createElement(HeaderComponent, {
19
+ items: items
20
+ })), createElement("ol", {
16
21
  className: cx('ais-AutocompleteIndexList', classNames.list)
17
22
  }, items.map(function (item, index) {
18
23
  var _getItemProps = getItemProps(item, index),
@@ -1,6 +1,6 @@
1
1
  /** @jsx createElement */
2
2
  import type { ComponentChildren, ComponentProps, Renderer } from '../../types';
3
- export type AutocompletePanelProps = ComponentProps<'div'> & {
3
+ export type AutocompletePanelProps = Omit<ComponentProps<'div'>, 'children'> & {
4
4
  children?: ComponentChildren;
5
5
  classNames?: Partial<AutocompletePanelClassNames>;
6
6
  };
@@ -0,0 +1,8 @@
1
+ import type { ComponentProps, Renderer } from '../..';
2
+ export type AutocompleteSearchProps = {
3
+ inputProps: Partial<ComponentProps<'input'>>;
4
+ onClear: () => void;
5
+ query: string;
6
+ isSearchStalled: boolean;
7
+ };
8
+ export declare function createAutocompleteSearchComponent({ createElement }: Renderer): ({ inputProps, onClear, query, isSearchStalled, }: AutocompleteSearchProps) => JSX.Element;
@@ -0,0 +1,63 @@
1
+ import _extends from "@babel/runtime/helpers/extends";
2
+ import { AutocompleteClearIcon, AutocompleteLoadingIcon, AutocompleteSubmitIcon } from "./icons.js";
3
+ export function createAutocompleteSearchComponent(_ref) {
4
+ var createElement = _ref.createElement;
5
+ return function AutocompleteSearch(_ref2) {
6
+ var inputProps = _ref2.inputProps,
7
+ onClear = _ref2.onClear,
8
+ query = _ref2.query,
9
+ isSearchStalled = _ref2.isSearchStalled;
10
+ return createElement("form", {
11
+ className: "ais-AutocompleteForm",
12
+ action: "",
13
+ noValidate: true,
14
+ role: "search",
15
+ onSubmit: function onSubmit(e) {
16
+ return e.preventDefault();
17
+ }
18
+ }, createElement("div", {
19
+ className: "ais-AutocompleteInputWrapperPrefix"
20
+ }, createElement("label", {
21
+ className: "ais-AutocompleteLabel",
22
+ "aria-label": "Submit",
23
+ htmlFor: inputProps.id,
24
+ id: "".concat(inputProps.id, "-label")
25
+ }, createElement("button", {
26
+ className: "ais-AutocompleteSubmitButton",
27
+ type: "submit",
28
+ title: "Submit"
29
+ }, createElement(AutocompleteSubmitIcon, {
30
+ createElement: createElement
31
+ }))), createElement("div", {
32
+ className: "ais-AutocompleteLoadingIndicator",
33
+ hidden: !isSearchStalled
34
+ }, createElement(AutocompleteLoadingIcon, {
35
+ createElement: createElement
36
+ }))), createElement("div", {
37
+ className: "ais-AutocompleteInputWrapper"
38
+ }, createElement("input", _extends({
39
+ className: "ais-AutocompleteInput",
40
+ "aria-autocomplete": "both",
41
+ "aria-labelledby": "".concat(inputProps.id, "-label"),
42
+ autoComplete: "off",
43
+ autoCorrect: "off",
44
+ autoCapitalize: "off",
45
+ enterKeyHint: "search",
46
+ spellCheck: "false",
47
+ placeholder: "",
48
+ maxLength: 512,
49
+ type: "search",
50
+ value: query
51
+ }, inputProps))), createElement("div", {
52
+ className: "ais-AutocompleteInputWrapperSuffix"
53
+ }, createElement("button", {
54
+ className: "ais-AutocompleteClearButton",
55
+ type: "reset",
56
+ title: "Clear",
57
+ hidden: query.length === 0 || isSearchStalled,
58
+ onClick: onClear
59
+ }, createElement(AutocompleteClearIcon, {
60
+ createElement: createElement
61
+ }))));
62
+ };
63
+ }
@@ -0,0 +1,49 @@
1
+ import type { ComponentProps } from '../../types';
2
+ type BaseHit = Record<string, unknown>;
3
+ export type AutocompleteIndexConfig<TItem extends BaseHit> = {
4
+ indexName: string;
5
+ getQuery?: (item: TItem) => string;
6
+ getURL?: (item: TItem) => string;
7
+ onSelect?: (params: {
8
+ item: TItem;
9
+ query: string;
10
+ setQuery: (query: string) => void;
11
+ url?: string;
12
+ }) => void;
13
+ };
14
+ type GetInputProps = () => Partial<ComponentProps<'input'>>;
15
+ type GetItemProps = (item: {
16
+ __indexName: string;
17
+ } & Record<string, unknown>, index: number) => Pick<ComponentProps<'li'>, 'id' | 'role' | 'aria-selected'> & {
18
+ onSelect: () => void;
19
+ };
20
+ type GetPanelProps = () => Pick<ComponentProps<'div'>, 'id' | 'hidden' | 'role' | 'aria-labelledby'>;
21
+ type GetRootProps = () => Pick<ComponentProps<'div'>, 'ref'>;
22
+ type CreateAutocompletePropGettersParams = {
23
+ useEffect: (effect: () => void, inputs?: readonly unknown[]) => void;
24
+ useId: () => string;
25
+ useMemo: <TType>(factory: () => TType, inputs: readonly unknown[]) => TType;
26
+ useRef: <TType>(initialValue: TType | null) => {
27
+ current: TType | null;
28
+ };
29
+ useState: <TType>(initialState: TType) => [TType, (newState: TType) => unknown];
30
+ };
31
+ type UsePropGetters<TItem extends BaseHit> = (params: {
32
+ indices: Array<{
33
+ indexName: string;
34
+ indexId: string;
35
+ hits: Array<{
36
+ [key: string]: unknown;
37
+ }>;
38
+ }>;
39
+ indicesConfig: Array<AutocompleteIndexConfig<TItem>>;
40
+ onRefine: (query: string) => void;
41
+ onSelect: NonNullable<AutocompleteIndexConfig<TItem>['onSelect']>;
42
+ }) => {
43
+ getInputProps: GetInputProps;
44
+ getItemProps: GetItemProps;
45
+ getPanelProps: GetPanelProps;
46
+ getRootProps: GetRootProps;
47
+ };
48
+ export declare function createAutocompletePropGetters({ useEffect, useId, useMemo, useRef, useState, }: CreateAutocompletePropGettersParams): <TItem extends BaseHit>({ indices, indicesConfig, onRefine, onSelect: globalOnSelect, }: Parameters<UsePropGetters<TItem>>[0]) => ReturnType<UsePropGetters<TItem>>;
49
+ export {};
@@ -0,0 +1,215 @@
1
+ import _typeof from "@babel/runtime/helpers/typeof";
2
+ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
3
+ export function createAutocompletePropGetters(_ref) {
4
+ var useEffect = _ref.useEffect,
5
+ useId = _ref.useId,
6
+ useMemo = _ref.useMemo,
7
+ useRef = _ref.useRef,
8
+ useState = _ref.useState;
9
+ return function usePropGetters(_ref2) {
10
+ var indices = _ref2.indices,
11
+ indicesConfig = _ref2.indicesConfig,
12
+ onRefine = _ref2.onRefine,
13
+ globalOnSelect = _ref2.onSelect;
14
+ var getElementId = createGetElementId(useId());
15
+ var rootRef = useRef(null);
16
+ var _useState = useState(false),
17
+ _useState2 = _slicedToArray(_useState, 2),
18
+ isOpen = _useState2[0],
19
+ setIsOpen = _useState2[1];
20
+ var _useState3 = useState(undefined),
21
+ _useState4 = _slicedToArray(_useState3, 2),
22
+ activeDescendant = _useState4[0],
23
+ setActiveDescendant = _useState4[1];
24
+ var _useMemo = useMemo(function () {
25
+ return buildItems({
26
+ indices: indices,
27
+ indicesConfig: indicesConfig,
28
+ getElementId: getElementId
29
+ });
30
+ }, [indices, indicesConfig, getElementId]),
31
+ items = _useMemo.items,
32
+ itemsIds = _useMemo.itemsIds;
33
+ useEffect(function () {
34
+ var onBodyClick = function onBodyClick(event) {
35
+ var _unwrapRef;
36
+ if ((_unwrapRef = unwrapRef(rootRef)) !== null && _unwrapRef !== void 0 && _unwrapRef.contains(event.target)) {
37
+ return;
38
+ }
39
+ setIsOpen(false);
40
+ };
41
+ document.body.addEventListener('click', onBodyClick);
42
+ return function () {
43
+ document.body.removeEventListener('click', onBodyClick);
44
+ };
45
+ }, [rootRef]);
46
+ var getNextActiveDescendent = function getNextActiveDescendent(key) {
47
+ switch (key) {
48
+ case 'ArrowLeft':
49
+ case 'ArrowUp':
50
+ {
51
+ var prevIndex = itemsIds.indexOf(activeDescendant || '') - 1;
52
+ return itemsIds[prevIndex] || itemsIds[itemsIds.length - 1];
53
+ }
54
+ case 'ArrowRight':
55
+ case 'ArrowDown':
56
+ {
57
+ var nextIndex = itemsIds.indexOf(activeDescendant || '') + 1;
58
+ return itemsIds[nextIndex] || itemsIds[0];
59
+ }
60
+ default:
61
+ return undefined;
62
+ }
63
+ };
64
+ var submit = function submit() {
65
+ var actualActiveDescendant = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : activeDescendant;
66
+ setIsOpen(false);
67
+ if (actualActiveDescendant && items.has(actualActiveDescendant)) {
68
+ var _getQuery;
69
+ var _ref3 = items.get(actualActiveDescendant),
70
+ _item = _ref3.item,
71
+ _ref3$config = _ref3.config,
72
+ indexOnSelect = _ref3$config.onSelect,
73
+ getQuery = _ref3$config.getQuery,
74
+ getURL = _ref3$config.getURL;
75
+ var actualOnSelect = indexOnSelect !== null && indexOnSelect !== void 0 ? indexOnSelect : globalOnSelect;
76
+ actualOnSelect({
77
+ item: _item,
78
+ query: (_getQuery = getQuery === null || getQuery === void 0 ? void 0 : getQuery(_item)) !== null && _getQuery !== void 0 ? _getQuery : '',
79
+ url: getURL === null || getURL === void 0 ? void 0 : getURL(_item),
80
+ setQuery: function setQuery(query) {
81
+ return onRefine(query);
82
+ }
83
+ });
84
+ setActiveDescendant(undefined);
85
+ }
86
+ };
87
+ return {
88
+ getInputProps: function getInputProps() {
89
+ return {
90
+ id: getElementId('input'),
91
+ role: 'combobox',
92
+ 'aria-autocomplete': 'list',
93
+ 'aria-expanded': isOpen,
94
+ 'aria-haspopup': 'grid',
95
+ 'aria-controls': getElementId('panel'),
96
+ 'aria-activedescendant': activeDescendant,
97
+ onFocus: function onFocus() {
98
+ return setIsOpen(true);
99
+ },
100
+ onKeyDown: function onKeyDown(event) {
101
+ if (event.key === 'Escape') {
102
+ setActiveDescendant(undefined);
103
+ setIsOpen(false);
104
+ return;
105
+ }
106
+ switch (event.key) {
107
+ case 'ArrowLeft':
108
+ case 'ArrowUp':
109
+ case 'ArrowRight':
110
+ case 'ArrowDown':
111
+ {
112
+ var _document$getElementB;
113
+ var nextActiveDescendent = getNextActiveDescendent(event.key);
114
+ setActiveDescendant(nextActiveDescendent);
115
+ (_document$getElementB = document.getElementById(nextActiveDescendent)) === null || _document$getElementB === void 0 ? void 0 : _document$getElementB.scrollIntoView(false);
116
+ event.preventDefault();
117
+ break;
118
+ }
119
+ case 'Enter':
120
+ {
121
+ submit();
122
+ break;
123
+ }
124
+ case 'Tab':
125
+ setIsOpen(false);
126
+ break;
127
+ default:
128
+ return;
129
+ }
130
+ },
131
+ onKeyUp: function onKeyUp(event) {
132
+ switch (event.key) {
133
+ case 'ArrowLeft':
134
+ case 'ArrowUp':
135
+ case 'ArrowRight':
136
+ case 'ArrowDown':
137
+ case 'Escape':
138
+ case 'Return':
139
+ event.preventDefault();
140
+ return;
141
+ default:
142
+ setActiveDescendant(undefined);
143
+ break;
144
+ }
145
+ }
146
+ };
147
+ },
148
+ getItemProps: function getItemProps(item, index) {
149
+ var id = getElementId('item', item.__indexName, index);
150
+ return {
151
+ id: id,
152
+ role: 'row',
153
+ 'aria-selected': id === activeDescendant,
154
+ onSelect: function onSelect() {
155
+ return submit(id);
156
+ }
157
+ };
158
+ },
159
+ getPanelProps: function getPanelProps() {
160
+ return {
161
+ hidden: !isOpen,
162
+ id: getElementId('panel'),
163
+ role: 'grid',
164
+ 'aria-labelledby': getElementId('input')
165
+ };
166
+ },
167
+ getRootProps: function getRootProps() {
168
+ return {
169
+ ref: rootRef
170
+ };
171
+ }
172
+ };
173
+ };
174
+ }
175
+ function buildItems(_ref4) {
176
+ var indices = _ref4.indices,
177
+ indicesConfig = _ref4.indicesConfig,
178
+ getElementId = _ref4.getElementId;
179
+ var itemsIds = [];
180
+ var items = new Map();
181
+ for (var i = 0; i < indicesConfig.length; i++) {
182
+ var _indices$i;
183
+ var config = indicesConfig[i];
184
+ var hits = ((_indices$i = indices[i]) === null || _indices$i === void 0 ? void 0 : _indices$i.hits) || [];
185
+ for (var position = 0; position < hits.length; position++) {
186
+ var itemId = getElementId('item', config.indexName, position);
187
+ items.set(itemId, {
188
+ item: hits[position],
189
+ config: config
190
+ });
191
+ itemsIds.push(itemId);
192
+ }
193
+ }
194
+ return {
195
+ items: items,
196
+ itemsIds: itemsIds
197
+ };
198
+ }
199
+ function createGetElementId(autocompleteId) {
200
+ return function getElementId() {
201
+ var prefix = 'autocomplete';
202
+ for (var _len = arguments.length, suffixes = new Array(_len), _key = 0; _key < _len; _key++) {
203
+ suffixes[_key] = arguments[_key];
204
+ }
205
+ return "".concat(prefix).concat(autocompleteId).concat(suffixes.join(':'));
206
+ };
207
+ }
208
+
209
+ /**
210
+ * Returns the framework-agnostic value of a ref.
211
+ */
212
+ function unwrapRef(ref) {
213
+ return ref.current && _typeof(ref.current) === 'object' && 'base' in ref.current ? ref.current.base // Preact
214
+ : ref.current; // React
215
+ }
@@ -0,0 +1,7 @@
1
+ /** @jsx createElement */
2
+ import type { Renderer } from '../../types';
3
+ type IconProps = Pick<Renderer, 'createElement'>;
4
+ export declare function AutocompleteSubmitIcon({ createElement }: IconProps): JSX.Element;
5
+ export declare function AutocompleteLoadingIcon({ createElement }: IconProps): JSX.Element;
6
+ export declare function AutocompleteClearIcon({ createElement }: IconProps): JSX.Element;
7
+ export {};
@@ -0,0 +1,48 @@
1
+ export function AutocompleteSubmitIcon(_ref) {
2
+ var createElement = _ref.createElement;
3
+ return createElement("svg", {
4
+ className: "ais-AutocompleteSubmitIcon",
5
+ viewBox: "0 0 24 24",
6
+ width: "20",
7
+ height: "20",
8
+ fill: "currentColor"
9
+ }, createElement("path", {
10
+ d: "M16.041 15.856c-0.034 0.026-0.067 0.055-0.099 0.087s-0.060 0.064-0.087 0.099c-1.258 1.213-2.969 1.958-4.855 1.958-1.933 0-3.682-0.782-4.95-2.050s-2.050-3.017-2.050-4.95 0.782-3.682 2.050-4.95 3.017-2.050 4.95-2.050 3.682 0.782 4.95 2.050 2.050 3.017 2.050 4.95c0 1.886-0.745 3.597-1.959 4.856zM21.707 20.293l-3.675-3.675c1.231-1.54 1.968-3.493 1.968-5.618 0-2.485-1.008-4.736-2.636-6.364s-3.879-2.636-6.364-2.636-4.736 1.008-6.364 2.636-2.636 3.879-2.636 6.364 1.008 4.736 2.636 6.364 3.879 2.636 6.364 2.636c2.125 0 4.078-0.737 5.618-1.968l3.675 3.675c0.391 0.391 1.024 0.391 1.414 0s0.391-1.024 0-1.414z"
11
+ }));
12
+ }
13
+ export function AutocompleteLoadingIcon(_ref2) {
14
+ var createElement = _ref2.createElement;
15
+ return createElement("svg", {
16
+ className: "ais-AutocompleteLoadingIcon",
17
+ viewBox: "0 0 100 100",
18
+ width: "20",
19
+ height: "20"
20
+ }, createElement("circle", {
21
+ cx: "50",
22
+ cy: "50",
23
+ fill: "none",
24
+ r: "35",
25
+ stroke: "currentColor",
26
+ strokeDasharray: "164.93361431346415 56.97787143782138",
27
+ strokeWidth: "6"
28
+ }, createElement("animateTransform", {
29
+ attributeName: "transform",
30
+ type: "rotate",
31
+ repeatCount: "indefinite",
32
+ dur: "1s",
33
+ values: "0 50 50;90 50 50;180 50 50;360 50 50",
34
+ keyTimes: "0;0.40;0.65;1"
35
+ })));
36
+ }
37
+ export function AutocompleteClearIcon(_ref3) {
38
+ var createElement = _ref3.createElement;
39
+ return createElement("svg", {
40
+ className: "ais-AutocompleteClearIcon",
41
+ viewBox: "0 0 24 24",
42
+ width: "18",
43
+ height: "18",
44
+ fill: "currentColor"
45
+ }, createElement("path", {
46
+ d: "M5.293 6.707l5.293 5.293-5.293 5.293c-0.391 0.391-0.391 1.024 0 1.414s1.024 0.391 1.414 0l5.293-5.293 5.293 5.293c0.391 0.391 1.024 0.391 1.414 0s0.391-1.024 0-1.414l-5.293-5.293 5.293-5.293c0.391-0.391 0.391-1.024 0-1.414s-1.024-0.391-1.414 0l-5.293 5.293-5.293-5.293c-0.391-0.391-1.024-0.391-1.414 0s-0.391 1.024 0 1.414z"
47
+ }));
48
+ }
@@ -1,4 +1,6 @@
1
1
  export * from './Autocomplete';
2
2
  export * from './AutocompleteIndex';
3
3
  export * from './AutocompletePanel';
4
+ export * from './AutocompleteSearch';
4
5
  export * from './AutocompleteSuggestion';
6
+ export * from './createAutocompletePropGetters';
@@ -1,4 +1,6 @@
1
1
  export * from "./Autocomplete.js";
2
2
  export * from "./AutocompleteIndex.js";
3
3
  export * from "./AutocompletePanel.js";
4
- export * from "./AutocompleteSuggestion.js";
4
+ export * from "./AutocompleteSearch.js";
5
+ export * from "./AutocompleteSuggestion.js";
6
+ export * from "./createAutocompletePropGetters.js";
@@ -208,12 +208,12 @@ export function StopIconComponent(_ref9) {
208
208
  rx: "1"
209
209
  }));
210
210
  }
211
- export function ReloadIconComponent(_ref10) {
212
- var createElement = _ref10.createElement,
213
- _ref10$width = _ref10.width,
214
- width = _ref10$width === void 0 ? 16 : _ref10$width,
215
- _ref10$height = _ref10.height,
216
- height = _ref10$height === void 0 ? 16 : _ref10$height;
211
+ export function ReloadIconComponent(_ref0) {
212
+ var createElement = _ref0.createElement,
213
+ _ref0$width = _ref0.width,
214
+ width = _ref0$width === void 0 ? 16 : _ref0$width,
215
+ _ref0$height = _ref0.height,
216
+ height = _ref0$height === void 0 ? 16 : _ref0$height;
217
217
  return createElement("svg", {
218
218
  xmlns: "http://www.w3.org/2000/svg",
219
219
  width: width,
@@ -234,12 +234,12 @@ export function ReloadIconComponent(_ref10) {
234
234
  d: "M3 21v-5h5"
235
235
  }));
236
236
  }
237
- export function CopyIconComponent(_ref11) {
238
- var createElement = _ref11.createElement,
239
- _ref11$width = _ref11.width,
240
- width = _ref11$width === void 0 ? 16 : _ref11$width,
241
- _ref11$height = _ref11.height,
242
- height = _ref11$height === void 0 ? 16 : _ref11$height;
237
+ export function CopyIconComponent(_ref1) {
238
+ var createElement = _ref1.createElement,
239
+ _ref1$width = _ref1.width,
240
+ width = _ref1$width === void 0 ? 16 : _ref1$width,
241
+ _ref1$height = _ref1.height,
242
+ height = _ref1$height === void 0 ? 16 : _ref1$height;
243
243
  return createElement("svg", {
244
244
  xmlns: "http://www.w3.org/2000/svg",
245
245
  width: width,
@@ -261,12 +261,12 @@ export function CopyIconComponent(_ref11) {
261
261
  d: "M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"
262
262
  }));
263
263
  }
264
- export function MenuIconComponent(_ref12) {
265
- var createElement = _ref12.createElement,
266
- _ref12$width = _ref12.width,
267
- width = _ref12$width === void 0 ? 16 : _ref12$width,
268
- _ref12$height = _ref12.height,
269
- height = _ref12$height === void 0 ? 16 : _ref12$height;
264
+ export function MenuIconComponent(_ref10) {
265
+ var createElement = _ref10.createElement,
266
+ _ref10$width = _ref10.width,
267
+ width = _ref10$width === void 0 ? 16 : _ref10$width,
268
+ _ref10$height = _ref10.height,
269
+ height = _ref10$height === void 0 ? 16 : _ref10$height;
270
270
  return createElement("svg", {
271
271
  xmlns: "http://www.w3.org/2000/svg",
272
272
  width: width,
@@ -291,12 +291,12 @@ export function MenuIconComponent(_ref12) {
291
291
  r: "1"
292
292
  }));
293
293
  }
294
- export function LoadingSpinnerIconComponent(_ref13) {
295
- var createElement = _ref13.createElement,
296
- _ref13$width = _ref13.width,
297
- width = _ref13$width === void 0 ? 24 : _ref13$width,
298
- _ref13$height = _ref13.height,
299
- height = _ref13$height === void 0 ? 24 : _ref13$height;
294
+ export function LoadingSpinnerIconComponent(_ref11) {
295
+ var createElement = _ref11.createElement,
296
+ _ref11$width = _ref11.width,
297
+ width = _ref11$width === void 0 ? 24 : _ref11$width,
298
+ _ref11$height = _ref11.height,
299
+ height = _ref11$height === void 0 ? 24 : _ref11$height;
300
300
  return createElement("svg", {
301
301
  viewBox: "12 12 24 24",
302
302
  width: width,
@@ -313,12 +313,12 @@ export function LoadingSpinnerIconComponent(_ref13) {
313
313
  stroke: "currentColor"
314
314
  }));
315
315
  }
316
- export function ChevronLeftIconComponent(_ref14) {
317
- var createElement = _ref14.createElement,
318
- _ref14$width = _ref14.width,
319
- width = _ref14$width === void 0 ? 16 : _ref14$width,
320
- _ref14$height = _ref14.height,
321
- height = _ref14$height === void 0 ? 16 : _ref14$height;
316
+ export function ChevronLeftIconComponent(_ref12) {
317
+ var createElement = _ref12.createElement,
318
+ _ref12$width = _ref12.width,
319
+ width = _ref12$width === void 0 ? 16 : _ref12$width,
320
+ _ref12$height = _ref12.height,
321
+ height = _ref12$height === void 0 ? 16 : _ref12$height;
322
322
  return createElement("svg", {
323
323
  xmlns: "http://www.w3.org/2000/svg",
324
324
  width: width,
@@ -333,12 +333,12 @@ export function ChevronLeftIconComponent(_ref14) {
333
333
  d: "m15 18-6-6 6-6"
334
334
  }));
335
335
  }
336
- export function ChevronRightIconComponent(_ref15) {
337
- var createElement = _ref15.createElement,
338
- _ref15$width = _ref15.width,
339
- width = _ref15$width === void 0 ? 16 : _ref15$width,
340
- _ref15$height = _ref15.height,
341
- height = _ref15$height === void 0 ? 16 : _ref15$height;
336
+ export function ChevronRightIconComponent(_ref13) {
337
+ var createElement = _ref13.createElement,
338
+ _ref13$width = _ref13.width,
339
+ width = _ref13$width === void 0 ? 16 : _ref13$width,
340
+ _ref13$height = _ref13.height,
341
+ height = _ref13$height === void 0 ? 16 : _ref13$height;
342
342
  return createElement("svg", {
343
343
  xmlns: "http://www.w3.org/2000/svg",
344
344
  width: width,
@@ -1,2 +1,2 @@
1
- declare const _default: "0.12.0";
1
+ declare const _default: "0.13.0";
2
2
  export default _default;
@@ -1 +1 @@
1
- export default '0.12.0';
1
+ export default '0.13.0';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "instantsearch-ui-components",
3
- "version": "0.12.0",
3
+ "version": "0.13.0",
4
4
  "description": "Common UI components for InstantSearch.",
5
5
  "types": "dist/es/index.d.ts",
6
6
  "main": "dist/cjs/index.js",
@@ -53,5 +53,5 @@
53
53
  "zod": "^3.25.76 || ^4",
54
54
  "zod-to-json-schema": "3.24.6"
55
55
  },
56
- "gitHead": "7cc565086f06a9ec74155002c26596b68efc53bc"
56
+ "gitHead": "89dc58afb61fbabb29e326d18543e51907eaea88"
57
57
  }