instantsearch-ui-components 0.14.0 → 0.15.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/autocomplete/AutocompleteRecentSearch.js +2 -1
- package/dist/cjs/components/autocomplete/AutocompleteSearch.js +5 -0
- package/dist/cjs/components/autocomplete/AutocompleteSuggestion.js +2 -2
- package/dist/cjs/components/autocomplete/createAutocompletePropGetters.js +38 -15
- package/dist/cjs/components/autocomplete/createAutocompleteStorage.js +29 -5
- package/dist/cjs/version.js +1 -1
- package/dist/es/components/autocomplete/AutocompleteRecentSearch.d.ts +3 -2
- package/dist/es/components/autocomplete/AutocompleteRecentSearch.js +2 -1
- package/dist/es/components/autocomplete/AutocompleteSearch.js +5 -0
- package/dist/es/components/autocomplete/AutocompleteSuggestion.d.ts +3 -2
- package/dist/es/components/autocomplete/AutocompleteSuggestion.js +2 -2
- package/dist/es/components/autocomplete/createAutocompletePropGetters.js +38 -15
- package/dist/es/components/autocomplete/createAutocompleteStorage.d.ts +11 -0
- package/dist/es/components/autocomplete/createAutocompleteStorage.js +29 -5
- package/dist/es/version.d.ts +1 -1
- package/dist/es/version.js +1 -1
- package/package.json +2 -2
|
@@ -10,6 +10,7 @@ function createAutocompleteRecentSearchComponent(_ref) {
|
|
|
10
10
|
var createElement = _ref.createElement;
|
|
11
11
|
return function AutocompleteRecentSearch(_ref2) {
|
|
12
12
|
var item = _ref2.item,
|
|
13
|
+
children = _ref2.children,
|
|
13
14
|
onSelect = _ref2.onSelect,
|
|
14
15
|
onRemoveRecentSearch = _ref2.onRemoveRecentSearch,
|
|
15
16
|
_ref2$classNames = _ref2.classNames,
|
|
@@ -25,7 +26,7 @@ function createAutocompleteRecentSearchComponent(_ref) {
|
|
|
25
26
|
createElement: createElement
|
|
26
27
|
})), createElement("div", {
|
|
27
28
|
className: (0, _lib.cx)('ais-AutocompleteItemContentBody', 'ais-AutocompleteRecentSearchItemContentBody', classNames.content)
|
|
28
|
-
},
|
|
29
|
+
}, children)), createElement("div", {
|
|
29
30
|
className: (0, _lib.cx)('ais-AutocompleteItemActions', 'ais-AutocompleteRecentSearchItemActions', classNames.actions)
|
|
30
31
|
}, createElement("button", {
|
|
31
32
|
className: (0, _lib.cx)('ais-AutocompleteItemActionButton', 'ais-AutocompleteRecentSearchItemDeleteButton', classNames.deleteButton),
|
|
@@ -14,6 +14,7 @@ function createAutocompleteSearchComponent(_ref) {
|
|
|
14
14
|
onClear = _ref2.onClear,
|
|
15
15
|
query = _ref2.query,
|
|
16
16
|
isSearchStalled = _ref2.isSearchStalled;
|
|
17
|
+
var inputRef = inputProps.ref;
|
|
17
18
|
return createElement("form", {
|
|
18
19
|
className: "ais-AutocompleteForm",
|
|
19
20
|
action: "",
|
|
@@ -21,6 +22,10 @@ function createAutocompleteSearchComponent(_ref) {
|
|
|
21
22
|
role: "search",
|
|
22
23
|
onSubmit: function onSubmit(e) {
|
|
23
24
|
return e.preventDefault();
|
|
25
|
+
},
|
|
26
|
+
onReset: function onReset() {
|
|
27
|
+
var _inputRef$current;
|
|
28
|
+
return (_inputRef$current = inputRef.current) === null || _inputRef$current === void 0 ? void 0 : _inputRef$current.focus();
|
|
24
29
|
}
|
|
25
30
|
}, createElement("div", {
|
|
26
31
|
className: "ais-AutocompleteInputWrapperPrefix"
|
|
@@ -9,7 +9,7 @@ var _icons = require("./icons");
|
|
|
9
9
|
function createAutocompleteSuggestionComponent(_ref) {
|
|
10
10
|
var createElement = _ref.createElement;
|
|
11
11
|
return function AutocompleteSuggestion(_ref2) {
|
|
12
|
-
var
|
|
12
|
+
var children = _ref2.children,
|
|
13
13
|
onSelect = _ref2.onSelect,
|
|
14
14
|
_ref2$classNames = _ref2.classNames,
|
|
15
15
|
classNames = _ref2$classNames === void 0 ? {} : _ref2$classNames;
|
|
@@ -24,6 +24,6 @@ function createAutocompleteSuggestionComponent(_ref) {
|
|
|
24
24
|
createElement: createElement
|
|
25
25
|
})), createElement("div", {
|
|
26
26
|
className: (0, _lib.cx)('ais-AutocompleteItemContentBody', 'ais-AutocompleteSuggestionItemContentBody', classNames.content)
|
|
27
|
-
},
|
|
27
|
+
}, children)));
|
|
28
28
|
};
|
|
29
29
|
}
|
|
@@ -19,6 +19,7 @@ function createAutocompletePropGetters(_ref) {
|
|
|
19
19
|
onRefine = _ref2.onRefine,
|
|
20
20
|
globalOnSelect = _ref2.onSelect;
|
|
21
21
|
var getElementId = createGetElementId(useId());
|
|
22
|
+
var inputRef = useRef(null);
|
|
22
23
|
var rootRef = useRef(null);
|
|
23
24
|
var _useState = useState(false),
|
|
24
25
|
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
|
@@ -50,7 +51,7 @@ function createAutocompletePropGetters(_ref) {
|
|
|
50
51
|
document.body.removeEventListener('click', onBodyClick);
|
|
51
52
|
};
|
|
52
53
|
}, [rootRef]);
|
|
53
|
-
var
|
|
54
|
+
var getNextActiveDescendant = function getNextActiveDescendant(key) {
|
|
54
55
|
switch (key) {
|
|
55
56
|
case 'ArrowLeft':
|
|
56
57
|
case 'ArrowUp':
|
|
@@ -69,11 +70,21 @@ function createAutocompletePropGetters(_ref) {
|
|
|
69
70
|
}
|
|
70
71
|
};
|
|
71
72
|
var submit = function submit() {
|
|
72
|
-
var
|
|
73
|
-
|
|
74
|
-
if (
|
|
73
|
+
var _override$activeDesce;
|
|
74
|
+
var override = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
75
|
+
if (isOpen) {
|
|
76
|
+
setIsOpen(false);
|
|
77
|
+
} else {
|
|
78
|
+
var _inputRef$current;
|
|
79
|
+
(_inputRef$current = inputRef.current) === null || _inputRef$current === void 0 ? void 0 : _inputRef$current.blur();
|
|
80
|
+
}
|
|
81
|
+
var actualDescendant = (_override$activeDesce = override.activeDescendant) !== null && _override$activeDesce !== void 0 ? _override$activeDesce : activeDescendant;
|
|
82
|
+
if (!actualDescendant && override.query) {
|
|
83
|
+
onRefine(override.query);
|
|
84
|
+
}
|
|
85
|
+
if (actualDescendant && items.has(actualDescendant)) {
|
|
75
86
|
var _getQuery;
|
|
76
|
-
var _ref3 = items.get(
|
|
87
|
+
var _ref3 = items.get(actualDescendant),
|
|
77
88
|
_item = _ref3.item,
|
|
78
89
|
_ref3$config = _ref3.config,
|
|
79
90
|
indexOnSelect = _ref3$config.onSelect,
|
|
@@ -95,6 +106,7 @@ function createAutocompletePropGetters(_ref) {
|
|
|
95
106
|
getInputProps: function getInputProps() {
|
|
96
107
|
return {
|
|
97
108
|
id: getElementId('input'),
|
|
109
|
+
ref: inputRef,
|
|
98
110
|
role: 'combobox',
|
|
99
111
|
'aria-autocomplete': 'list',
|
|
100
112
|
'aria-expanded': isOpen,
|
|
@@ -105,33 +117,42 @@ function createAutocompletePropGetters(_ref) {
|
|
|
105
117
|
return setIsOpen(true);
|
|
106
118
|
},
|
|
107
119
|
onKeyDown: function onKeyDown(event) {
|
|
108
|
-
if (event.key === 'Escape') {
|
|
109
|
-
setActiveDescendant(undefined);
|
|
110
|
-
setIsOpen(false);
|
|
111
|
-
return;
|
|
112
|
-
}
|
|
113
120
|
switch (event.key) {
|
|
121
|
+
case 'Escape':
|
|
122
|
+
{
|
|
123
|
+
if (isOpen) {
|
|
124
|
+
setIsOpen(false);
|
|
125
|
+
event.preventDefault();
|
|
126
|
+
} else {
|
|
127
|
+
setActiveDescendant(undefined);
|
|
128
|
+
}
|
|
129
|
+
break;
|
|
130
|
+
}
|
|
114
131
|
case 'ArrowLeft':
|
|
115
132
|
case 'ArrowUp':
|
|
116
133
|
case 'ArrowRight':
|
|
117
134
|
case 'ArrowDown':
|
|
118
135
|
{
|
|
119
136
|
var _document$getElementB;
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
(
|
|
137
|
+
setIsOpen(true);
|
|
138
|
+
var nextActiveDescendant = getNextActiveDescendant(event.key);
|
|
139
|
+
setActiveDescendant(nextActiveDescendant);
|
|
140
|
+
(_document$getElementB = document.getElementById(nextActiveDescendant)) === null || _document$getElementB === void 0 ? void 0 : _document$getElementB.scrollIntoView(false);
|
|
123
141
|
event.preventDefault();
|
|
124
142
|
break;
|
|
125
143
|
}
|
|
126
144
|
case 'Enter':
|
|
127
145
|
{
|
|
128
|
-
submit(
|
|
146
|
+
submit({
|
|
147
|
+
query: event.target.value
|
|
148
|
+
});
|
|
129
149
|
break;
|
|
130
150
|
}
|
|
131
151
|
case 'Tab':
|
|
132
152
|
setIsOpen(false);
|
|
133
153
|
break;
|
|
134
154
|
default:
|
|
155
|
+
setIsOpen(true);
|
|
135
156
|
return;
|
|
136
157
|
}
|
|
137
158
|
},
|
|
@@ -159,7 +180,9 @@ function createAutocompletePropGetters(_ref) {
|
|
|
159
180
|
role: 'row',
|
|
160
181
|
'aria-selected': id === activeDescendant,
|
|
161
182
|
onSelect: function onSelect() {
|
|
162
|
-
return submit(
|
|
183
|
+
return submit({
|
|
184
|
+
activeDescendant: id
|
|
185
|
+
});
|
|
163
186
|
}
|
|
164
187
|
};
|
|
165
188
|
},
|
|
@@ -52,7 +52,13 @@ function createAutocompleteStorage(_ref) {
|
|
|
52
52
|
return {
|
|
53
53
|
objectID: value,
|
|
54
54
|
query: value,
|
|
55
|
-
__indexName: 'recent-searches'
|
|
55
|
+
__indexName: 'recent-searches',
|
|
56
|
+
_highlightResult: getHighlightedAttribute({
|
|
57
|
+
item: {
|
|
58
|
+
query: value
|
|
59
|
+
},
|
|
60
|
+
query: query || ''
|
|
61
|
+
})
|
|
56
62
|
};
|
|
57
63
|
});
|
|
58
64
|
var indicesForPropGetters = (0, _toConsumableArray2.default)(indices);
|
|
@@ -88,6 +94,24 @@ function isLocalStorageSupported() {
|
|
|
88
94
|
return false;
|
|
89
95
|
}
|
|
90
96
|
}
|
|
97
|
+
function getHighlightedAttribute(_ref3) {
|
|
98
|
+
var item = _ref3.item,
|
|
99
|
+
query = _ref3.query;
|
|
100
|
+
if (!query.trim().length) {
|
|
101
|
+
return {
|
|
102
|
+
query: {
|
|
103
|
+
matchLevel: 'none'
|
|
104
|
+
}
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
return {
|
|
108
|
+
query: {
|
|
109
|
+
value: item.query.replace(new RegExp(query.replace(/[-/\\^$*+?.()|[\]{}]/g, '\\$&'), 'gi'), function (match) {
|
|
110
|
+
return "<mark>".concat(match, "</mark>");
|
|
111
|
+
})
|
|
112
|
+
}
|
|
113
|
+
};
|
|
114
|
+
}
|
|
91
115
|
function getLocalStorage() {
|
|
92
116
|
var key = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : LOCAL_STORAGE_KEY;
|
|
93
117
|
if (!isLocalStorageSupported()) {
|
|
@@ -112,10 +136,10 @@ function getLocalStorage() {
|
|
|
112
136
|
}
|
|
113
137
|
};
|
|
114
138
|
}
|
|
115
|
-
function createStorage(
|
|
116
|
-
var
|
|
117
|
-
limit =
|
|
118
|
-
storageKey =
|
|
139
|
+
function createStorage(_ref4) {
|
|
140
|
+
var _ref4$limit = _ref4.limit,
|
|
141
|
+
limit = _ref4$limit === void 0 ? 5 : _ref4$limit,
|
|
142
|
+
storageKey = _ref4.storageKey;
|
|
119
143
|
var storage = getLocalStorage(storageKey);
|
|
120
144
|
var updateListener = null;
|
|
121
145
|
return {
|
package/dist/cjs/version.js
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
/** @jsx createElement */
|
|
2
|
-
import type { Renderer } from '../../types';
|
|
2
|
+
import type { ComponentChildren, Renderer } from '../../types';
|
|
3
3
|
export type AutocompleteRecentSearchProps<T = {
|
|
4
4
|
query: string;
|
|
5
5
|
} & Record<string, unknown>> = {
|
|
6
6
|
item: T;
|
|
7
|
+
children?: ComponentChildren;
|
|
7
8
|
onSelect: () => void;
|
|
8
9
|
onRemoveRecentSearch: () => void;
|
|
9
10
|
classNames?: Partial<AutocompleteRecentSearchClassNames>;
|
|
@@ -34,4 +35,4 @@ export type AutocompleteRecentSearchClassNames = {
|
|
|
34
35
|
**/
|
|
35
36
|
deleteButton: string | string[];
|
|
36
37
|
};
|
|
37
|
-
export declare function createAutocompleteRecentSearchComponent({ createElement, }: Renderer): ({ item, onSelect, onRemoveRecentSearch, classNames, }: AutocompleteRecentSearchProps) => JSX.Element;
|
|
38
|
+
export declare function createAutocompleteRecentSearchComponent({ createElement, }: Renderer): ({ item, children, onSelect, onRemoveRecentSearch, classNames, }: AutocompleteRecentSearchProps) => JSX.Element;
|
|
@@ -4,6 +4,7 @@ export function createAutocompleteRecentSearchComponent(_ref) {
|
|
|
4
4
|
var createElement = _ref.createElement;
|
|
5
5
|
return function AutocompleteRecentSearch(_ref2) {
|
|
6
6
|
var item = _ref2.item,
|
|
7
|
+
children = _ref2.children,
|
|
7
8
|
onSelect = _ref2.onSelect,
|
|
8
9
|
onRemoveRecentSearch = _ref2.onRemoveRecentSearch,
|
|
9
10
|
_ref2$classNames = _ref2.classNames,
|
|
@@ -19,7 +20,7 @@ export function createAutocompleteRecentSearchComponent(_ref) {
|
|
|
19
20
|
createElement: createElement
|
|
20
21
|
})), createElement("div", {
|
|
21
22
|
className: cx('ais-AutocompleteItemContentBody', 'ais-AutocompleteRecentSearchItemContentBody', classNames.content)
|
|
22
|
-
},
|
|
23
|
+
}, children)), createElement("div", {
|
|
23
24
|
className: cx('ais-AutocompleteItemActions', 'ais-AutocompleteRecentSearchItemActions', classNames.actions)
|
|
24
25
|
}, createElement("button", {
|
|
25
26
|
className: cx('ais-AutocompleteItemActionButton', 'ais-AutocompleteRecentSearchItemDeleteButton', classNames.deleteButton),
|
|
@@ -7,6 +7,7 @@ export function createAutocompleteSearchComponent(_ref) {
|
|
|
7
7
|
onClear = _ref2.onClear,
|
|
8
8
|
query = _ref2.query,
|
|
9
9
|
isSearchStalled = _ref2.isSearchStalled;
|
|
10
|
+
var inputRef = inputProps.ref;
|
|
10
11
|
return createElement("form", {
|
|
11
12
|
className: "ais-AutocompleteForm",
|
|
12
13
|
action: "",
|
|
@@ -14,6 +15,10 @@ export function createAutocompleteSearchComponent(_ref) {
|
|
|
14
15
|
role: "search",
|
|
15
16
|
onSubmit: function onSubmit(e) {
|
|
16
17
|
return e.preventDefault();
|
|
18
|
+
},
|
|
19
|
+
onReset: function onReset() {
|
|
20
|
+
var _inputRef$current;
|
|
21
|
+
return (_inputRef$current = inputRef.current) === null || _inputRef$current === void 0 ? void 0 : _inputRef$current.focus();
|
|
17
22
|
}
|
|
18
23
|
}, createElement("div", {
|
|
19
24
|
className: "ais-AutocompleteInputWrapperPrefix"
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
/** @jsx createElement */
|
|
2
|
-
import type { Renderer } from '../../types';
|
|
2
|
+
import type { ComponentChildren, Renderer } from '../../types';
|
|
3
3
|
export type AutocompleteSuggestionProps<T = {
|
|
4
4
|
query: string;
|
|
5
5
|
} & Record<string, unknown>> = {
|
|
6
6
|
item: T;
|
|
7
7
|
onSelect: () => void;
|
|
8
|
+
children: ComponentChildren;
|
|
8
9
|
classNames?: Partial<AutocompleteSuggestionClassNames>;
|
|
9
10
|
};
|
|
10
11
|
export type AutocompleteSuggestionClassNames = {
|
|
@@ -21,4 +22,4 @@ export type AutocompleteSuggestionClassNames = {
|
|
|
21
22
|
/** Class names to apply to the body element **/
|
|
22
23
|
body: string | string[];
|
|
23
24
|
};
|
|
24
|
-
export declare function createAutocompleteSuggestionComponent({ createElement, }: Renderer): ({
|
|
25
|
+
export declare function createAutocompleteSuggestionComponent({ createElement, }: Renderer): ({ children, onSelect, classNames, }: AutocompleteSuggestionProps) => JSX.Element;
|
|
@@ -3,7 +3,7 @@ import { AutocompleteSubmitIcon } from "./icons.js";
|
|
|
3
3
|
export function createAutocompleteSuggestionComponent(_ref) {
|
|
4
4
|
var createElement = _ref.createElement;
|
|
5
5
|
return function AutocompleteSuggestion(_ref2) {
|
|
6
|
-
var
|
|
6
|
+
var children = _ref2.children,
|
|
7
7
|
onSelect = _ref2.onSelect,
|
|
8
8
|
_ref2$classNames = _ref2.classNames,
|
|
9
9
|
classNames = _ref2$classNames === void 0 ? {} : _ref2$classNames;
|
|
@@ -18,6 +18,6 @@ export function createAutocompleteSuggestionComponent(_ref) {
|
|
|
18
18
|
createElement: createElement
|
|
19
19
|
})), createElement("div", {
|
|
20
20
|
className: cx('ais-AutocompleteItemContentBody', 'ais-AutocompleteSuggestionItemContentBody', classNames.content)
|
|
21
|
-
},
|
|
21
|
+
}, children)));
|
|
22
22
|
};
|
|
23
23
|
}
|
|
@@ -12,6 +12,7 @@ export function createAutocompletePropGetters(_ref) {
|
|
|
12
12
|
onRefine = _ref2.onRefine,
|
|
13
13
|
globalOnSelect = _ref2.onSelect;
|
|
14
14
|
var getElementId = createGetElementId(useId());
|
|
15
|
+
var inputRef = useRef(null);
|
|
15
16
|
var rootRef = useRef(null);
|
|
16
17
|
var _useState = useState(false),
|
|
17
18
|
_useState2 = _slicedToArray(_useState, 2),
|
|
@@ -43,7 +44,7 @@ export function createAutocompletePropGetters(_ref) {
|
|
|
43
44
|
document.body.removeEventListener('click', onBodyClick);
|
|
44
45
|
};
|
|
45
46
|
}, [rootRef]);
|
|
46
|
-
var
|
|
47
|
+
var getNextActiveDescendant = function getNextActiveDescendant(key) {
|
|
47
48
|
switch (key) {
|
|
48
49
|
case 'ArrowLeft':
|
|
49
50
|
case 'ArrowUp':
|
|
@@ -62,11 +63,21 @@ export function createAutocompletePropGetters(_ref) {
|
|
|
62
63
|
}
|
|
63
64
|
};
|
|
64
65
|
var submit = function submit() {
|
|
65
|
-
var
|
|
66
|
-
|
|
67
|
-
if (
|
|
66
|
+
var _override$activeDesce;
|
|
67
|
+
var override = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
68
|
+
if (isOpen) {
|
|
69
|
+
setIsOpen(false);
|
|
70
|
+
} else {
|
|
71
|
+
var _inputRef$current;
|
|
72
|
+
(_inputRef$current = inputRef.current) === null || _inputRef$current === void 0 ? void 0 : _inputRef$current.blur();
|
|
73
|
+
}
|
|
74
|
+
var actualDescendant = (_override$activeDesce = override.activeDescendant) !== null && _override$activeDesce !== void 0 ? _override$activeDesce : activeDescendant;
|
|
75
|
+
if (!actualDescendant && override.query) {
|
|
76
|
+
onRefine(override.query);
|
|
77
|
+
}
|
|
78
|
+
if (actualDescendant && items.has(actualDescendant)) {
|
|
68
79
|
var _getQuery;
|
|
69
|
-
var _ref3 = items.get(
|
|
80
|
+
var _ref3 = items.get(actualDescendant),
|
|
70
81
|
_item = _ref3.item,
|
|
71
82
|
_ref3$config = _ref3.config,
|
|
72
83
|
indexOnSelect = _ref3$config.onSelect,
|
|
@@ -88,6 +99,7 @@ export function createAutocompletePropGetters(_ref) {
|
|
|
88
99
|
getInputProps: function getInputProps() {
|
|
89
100
|
return {
|
|
90
101
|
id: getElementId('input'),
|
|
102
|
+
ref: inputRef,
|
|
91
103
|
role: 'combobox',
|
|
92
104
|
'aria-autocomplete': 'list',
|
|
93
105
|
'aria-expanded': isOpen,
|
|
@@ -98,33 +110,42 @@ export function createAutocompletePropGetters(_ref) {
|
|
|
98
110
|
return setIsOpen(true);
|
|
99
111
|
},
|
|
100
112
|
onKeyDown: function onKeyDown(event) {
|
|
101
|
-
if (event.key === 'Escape') {
|
|
102
|
-
setActiveDescendant(undefined);
|
|
103
|
-
setIsOpen(false);
|
|
104
|
-
return;
|
|
105
|
-
}
|
|
106
113
|
switch (event.key) {
|
|
114
|
+
case 'Escape':
|
|
115
|
+
{
|
|
116
|
+
if (isOpen) {
|
|
117
|
+
setIsOpen(false);
|
|
118
|
+
event.preventDefault();
|
|
119
|
+
} else {
|
|
120
|
+
setActiveDescendant(undefined);
|
|
121
|
+
}
|
|
122
|
+
break;
|
|
123
|
+
}
|
|
107
124
|
case 'ArrowLeft':
|
|
108
125
|
case 'ArrowUp':
|
|
109
126
|
case 'ArrowRight':
|
|
110
127
|
case 'ArrowDown':
|
|
111
128
|
{
|
|
112
129
|
var _document$getElementB;
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
(
|
|
130
|
+
setIsOpen(true);
|
|
131
|
+
var nextActiveDescendant = getNextActiveDescendant(event.key);
|
|
132
|
+
setActiveDescendant(nextActiveDescendant);
|
|
133
|
+
(_document$getElementB = document.getElementById(nextActiveDescendant)) === null || _document$getElementB === void 0 ? void 0 : _document$getElementB.scrollIntoView(false);
|
|
116
134
|
event.preventDefault();
|
|
117
135
|
break;
|
|
118
136
|
}
|
|
119
137
|
case 'Enter':
|
|
120
138
|
{
|
|
121
|
-
submit(
|
|
139
|
+
submit({
|
|
140
|
+
query: event.target.value
|
|
141
|
+
});
|
|
122
142
|
break;
|
|
123
143
|
}
|
|
124
144
|
case 'Tab':
|
|
125
145
|
setIsOpen(false);
|
|
126
146
|
break;
|
|
127
147
|
default:
|
|
148
|
+
setIsOpen(true);
|
|
128
149
|
return;
|
|
129
150
|
}
|
|
130
151
|
},
|
|
@@ -152,7 +173,9 @@ export function createAutocompletePropGetters(_ref) {
|
|
|
152
173
|
role: 'row',
|
|
153
174
|
'aria-selected': id === activeDescendant,
|
|
154
175
|
onSelect: function onSelect() {
|
|
155
|
-
return submit(
|
|
176
|
+
return submit({
|
|
177
|
+
activeDescendant: id
|
|
178
|
+
});
|
|
156
179
|
}
|
|
157
180
|
};
|
|
158
181
|
},
|
|
@@ -38,6 +38,17 @@ export declare function createAutocompleteStorage({ useEffect, useMemo, useState
|
|
|
38
38
|
objectID: string;
|
|
39
39
|
query: string;
|
|
40
40
|
__indexName: string;
|
|
41
|
+
_highlightResult: {
|
|
42
|
+
query: {
|
|
43
|
+
matchLevel: string;
|
|
44
|
+
value?: undefined;
|
|
45
|
+
};
|
|
46
|
+
} | {
|
|
47
|
+
query: {
|
|
48
|
+
value: string;
|
|
49
|
+
matchLevel?: undefined;
|
|
50
|
+
};
|
|
51
|
+
};
|
|
41
52
|
}[];
|
|
42
53
|
indicesForPropGetters: {
|
|
43
54
|
indexName: string;
|
|
@@ -44,7 +44,13 @@ export function createAutocompleteStorage(_ref) {
|
|
|
44
44
|
return {
|
|
45
45
|
objectID: value,
|
|
46
46
|
query: value,
|
|
47
|
-
__indexName: 'recent-searches'
|
|
47
|
+
__indexName: 'recent-searches',
|
|
48
|
+
_highlightResult: getHighlightedAttribute({
|
|
49
|
+
item: {
|
|
50
|
+
query: value
|
|
51
|
+
},
|
|
52
|
+
query: query || ''
|
|
53
|
+
})
|
|
48
54
|
};
|
|
49
55
|
});
|
|
50
56
|
var indicesForPropGetters = _toConsumableArray(indices);
|
|
@@ -80,6 +86,24 @@ function isLocalStorageSupported() {
|
|
|
80
86
|
return false;
|
|
81
87
|
}
|
|
82
88
|
}
|
|
89
|
+
function getHighlightedAttribute(_ref3) {
|
|
90
|
+
var item = _ref3.item,
|
|
91
|
+
query = _ref3.query;
|
|
92
|
+
if (!query.trim().length) {
|
|
93
|
+
return {
|
|
94
|
+
query: {
|
|
95
|
+
matchLevel: 'none'
|
|
96
|
+
}
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
return {
|
|
100
|
+
query: {
|
|
101
|
+
value: item.query.replace(new RegExp(query.replace(/[-/\\^$*+?.()|[\]{}]/g, '\\$&'), 'gi'), function (match) {
|
|
102
|
+
return "<mark>".concat(match, "</mark>");
|
|
103
|
+
})
|
|
104
|
+
}
|
|
105
|
+
};
|
|
106
|
+
}
|
|
83
107
|
function getLocalStorage() {
|
|
84
108
|
var key = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : LOCAL_STORAGE_KEY;
|
|
85
109
|
if (!isLocalStorageSupported()) {
|
|
@@ -104,10 +128,10 @@ function getLocalStorage() {
|
|
|
104
128
|
}
|
|
105
129
|
};
|
|
106
130
|
}
|
|
107
|
-
export function createStorage(
|
|
108
|
-
var
|
|
109
|
-
limit =
|
|
110
|
-
storageKey =
|
|
131
|
+
export function createStorage(_ref4) {
|
|
132
|
+
var _ref4$limit = _ref4.limit,
|
|
133
|
+
limit = _ref4$limit === void 0 ? 5 : _ref4$limit,
|
|
134
|
+
storageKey = _ref4.storageKey;
|
|
111
135
|
var storage = getLocalStorage(storageKey);
|
|
112
136
|
var updateListener = null;
|
|
113
137
|
return {
|
package/dist/es/version.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
declare const _default: "0.
|
|
1
|
+
declare const _default: "0.15.0";
|
|
2
2
|
export default _default;
|
package/dist/es/version.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export default '0.
|
|
1
|
+
export default '0.15.0';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "instantsearch-ui-components",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.15.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": "
|
|
56
|
+
"gitHead": "b4cb69c8cfaa9dc22dfe8fe695568cf5200f3893"
|
|
57
57
|
}
|