@algolia/autocomplete-js 1.6.1 → 1.7.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/esm/autocomplete.js +22 -2
- package/dist/esm/components/Highlight.d.ts +4 -1
- package/dist/esm/components/Highlight.js +6 -2
- package/dist/esm/components/ReverseHighlight.d.ts +4 -1
- package/dist/esm/components/ReverseHighlight.js +6 -2
- package/dist/esm/components/ReverseSnippet.d.ts +4 -1
- package/dist/esm/components/ReverseSnippet.js +6 -2
- package/dist/esm/components/Snippet.d.ts +4 -1
- package/dist/esm/components/Snippet.js +6 -2
- package/dist/esm/createAutocompleteDom.js +1 -4
- package/dist/esm/elements/Input.d.ts +1 -1
- package/dist/esm/elements/Input.js +4 -5
- package/dist/esm/getDefaultOptions.d.ts +2 -0
- package/dist/esm/getDefaultOptions.js +1 -1
- package/dist/esm/types/AutocompleteRenderer.d.ts +3 -3
- package/dist/esm/utils/index.d.ts +1 -0
- package/dist/esm/utils/index.js +1 -0
- package/dist/esm/utils/pickBy.d.ts +4 -0
- package/dist/esm/utils/pickBy.js +34 -0
- package/dist/umd/index.development.js +177 -81
- package/dist/umd/index.development.js.map +1 -1
- package/dist/umd/index.production.js +2 -2
- package/dist/umd/index.production.js.map +1 -1
- package/package.json +4 -4
package/dist/esm/autocomplete.js
CHANGED
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
var _excluded = ["components"];
|
|
2
|
+
|
|
3
|
+
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
|
|
4
|
+
|
|
5
|
+
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
|
|
6
|
+
|
|
1
7
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
2
8
|
|
|
3
9
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
@@ -14,7 +20,7 @@ import { getDefaultOptions } from './getDefaultOptions';
|
|
|
14
20
|
import { getPanelPlacementStyle } from './getPanelPlacementStyle';
|
|
15
21
|
import { renderPanel, renderSearchBox } from './render';
|
|
16
22
|
import { userAgents } from './userAgents';
|
|
17
|
-
import { mergeDeep, setProperties } from './utils';
|
|
23
|
+
import { mergeDeep, pickBy, setProperties } from './utils';
|
|
18
24
|
export function autocomplete(options) {
|
|
19
25
|
var _createEffectWrapper = createEffectWrapper(),
|
|
20
26
|
runEffect = _createEffectWrapper.runEffect,
|
|
@@ -273,7 +279,21 @@ export function autocomplete(options) {
|
|
|
273
279
|
function update() {
|
|
274
280
|
var updatedOptions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
275
281
|
cleanupEffects();
|
|
276
|
-
|
|
282
|
+
|
|
283
|
+
var _props$value$renderer = props.value.renderer,
|
|
284
|
+
components = _props$value$renderer.components,
|
|
285
|
+
rendererProps = _objectWithoutProperties(_props$value$renderer, _excluded);
|
|
286
|
+
|
|
287
|
+
optionsRef.current = mergeDeep(rendererProps, props.value.core, {
|
|
288
|
+
// We need to filter out default components so they can be replaced with
|
|
289
|
+
// a new `renderer`, without getting rid of user components.
|
|
290
|
+
// @MAJOR Deal with registering components with the same name as the
|
|
291
|
+
// default ones. If we disallow overriding default components, we'd just
|
|
292
|
+
// need to pass all `components` here.
|
|
293
|
+
components: pickBy(components, function (_ref4) {
|
|
294
|
+
var value = _ref4.value;
|
|
295
|
+
return !value.hasOwnProperty('__autocomplete_componentName');
|
|
296
|
+
}),
|
|
277
297
|
initialState: lastStateRef.current
|
|
278
298
|
}, updatedOptions);
|
|
279
299
|
runReactives();
|
|
@@ -1,3 +1,6 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
2
|
import { AutocompleteRenderer, HighlightHitParams } from '../types';
|
|
3
|
-
export declare function createHighlightComponent({ createElement, Fragment, }: AutocompleteRenderer):
|
|
3
|
+
export declare function createHighlightComponent({ createElement, Fragment, }: AutocompleteRenderer): {
|
|
4
|
+
<THit>({ hit, attribute, tagName, }: HighlightHitParams<THit>): JSX.Element;
|
|
5
|
+
__autocomplete_componentName: string;
|
|
6
|
+
};
|
|
@@ -2,7 +2,8 @@ import { parseAlgoliaHitHighlight } from '@algolia/autocomplete-preset-algolia';
|
|
|
2
2
|
export function createHighlightComponent(_ref) {
|
|
3
3
|
var createElement = _ref.createElement,
|
|
4
4
|
Fragment = _ref.Fragment;
|
|
5
|
-
|
|
5
|
+
|
|
6
|
+
function Highlight(_ref2) {
|
|
6
7
|
var hit = _ref2.hit,
|
|
7
8
|
attribute = _ref2.attribute,
|
|
8
9
|
_ref2$tagName = _ref2.tagName,
|
|
@@ -15,5 +16,8 @@ export function createHighlightComponent(_ref) {
|
|
|
15
16
|
key: index
|
|
16
17
|
}, x.value) : x.value;
|
|
17
18
|
}));
|
|
18
|
-
}
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
Highlight.__autocomplete_componentName = 'Highlight';
|
|
22
|
+
return Highlight;
|
|
19
23
|
}
|
|
@@ -1,3 +1,6 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
2
|
import { AutocompleteRenderer, HighlightHitParams } from '../types';
|
|
3
|
-
export declare function createReverseHighlightComponent({ createElement, Fragment, }: AutocompleteRenderer):
|
|
3
|
+
export declare function createReverseHighlightComponent({ createElement, Fragment, }: AutocompleteRenderer): {
|
|
4
|
+
<THit>({ hit, attribute, tagName, }: HighlightHitParams<THit>): JSX.Element;
|
|
5
|
+
__autocomplete_componentName: string;
|
|
6
|
+
};
|
|
@@ -2,7 +2,8 @@ import { parseAlgoliaHitReverseHighlight } from '@algolia/autocomplete-preset-al
|
|
|
2
2
|
export function createReverseHighlightComponent(_ref) {
|
|
3
3
|
var createElement = _ref.createElement,
|
|
4
4
|
Fragment = _ref.Fragment;
|
|
5
|
-
|
|
5
|
+
|
|
6
|
+
function ReverseHighlight(_ref2) {
|
|
6
7
|
var hit = _ref2.hit,
|
|
7
8
|
attribute = _ref2.attribute,
|
|
8
9
|
_ref2$tagName = _ref2.tagName,
|
|
@@ -15,5 +16,8 @@ export function createReverseHighlightComponent(_ref) {
|
|
|
15
16
|
key: index
|
|
16
17
|
}, x.value) : x.value;
|
|
17
18
|
}));
|
|
18
|
-
}
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
ReverseHighlight.__autocomplete_componentName = 'ReverseHighlight';
|
|
22
|
+
return ReverseHighlight;
|
|
19
23
|
}
|
|
@@ -1,3 +1,6 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
2
|
import { AutocompleteRenderer, HighlightHitParams } from '../types';
|
|
3
|
-
export declare function createReverseSnippetComponent({ createElement, Fragment, }: AutocompleteRenderer):
|
|
3
|
+
export declare function createReverseSnippetComponent({ createElement, Fragment, }: AutocompleteRenderer): {
|
|
4
|
+
<THit>({ hit, attribute, tagName, }: HighlightHitParams<THit>): JSX.Element;
|
|
5
|
+
__autocomplete_componentName: string;
|
|
6
|
+
};
|
|
@@ -2,7 +2,8 @@ import { parseAlgoliaHitReverseSnippet } from '@algolia/autocomplete-preset-algo
|
|
|
2
2
|
export function createReverseSnippetComponent(_ref) {
|
|
3
3
|
var createElement = _ref.createElement,
|
|
4
4
|
Fragment = _ref.Fragment;
|
|
5
|
-
|
|
5
|
+
|
|
6
|
+
function ReverseSnippet(_ref2) {
|
|
6
7
|
var hit = _ref2.hit,
|
|
7
8
|
attribute = _ref2.attribute,
|
|
8
9
|
_ref2$tagName = _ref2.tagName,
|
|
@@ -15,5 +16,8 @@ export function createReverseSnippetComponent(_ref) {
|
|
|
15
16
|
key: index
|
|
16
17
|
}, x.value) : x.value;
|
|
17
18
|
}));
|
|
18
|
-
}
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
ReverseSnippet.__autocomplete_componentName = 'ReverseSnippet';
|
|
22
|
+
return ReverseSnippet;
|
|
19
23
|
}
|
|
@@ -1,3 +1,6 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
2
|
import { AutocompleteRenderer, HighlightHitParams } from '../types';
|
|
3
|
-
export declare function createSnippetComponent({ createElement, Fragment, }: AutocompleteRenderer):
|
|
3
|
+
export declare function createSnippetComponent({ createElement, Fragment, }: AutocompleteRenderer): {
|
|
4
|
+
<THit>({ hit, attribute, tagName, }: HighlightHitParams<THit>): JSX.Element;
|
|
5
|
+
__autocomplete_componentName: string;
|
|
6
|
+
};
|
|
@@ -2,7 +2,8 @@ import { parseAlgoliaHitSnippet } from '@algolia/autocomplete-preset-algolia';
|
|
|
2
2
|
export function createSnippetComponent(_ref) {
|
|
3
3
|
var createElement = _ref.createElement,
|
|
4
4
|
Fragment = _ref.Fragment;
|
|
5
|
-
|
|
5
|
+
|
|
6
|
+
function Snippet(_ref2) {
|
|
6
7
|
var hit = _ref2.hit,
|
|
7
8
|
attribute = _ref2.attribute,
|
|
8
9
|
_ref2$tagName = _ref2.tagName,
|
|
@@ -15,5 +16,8 @@ export function createSnippetComponent(_ref) {
|
|
|
15
16
|
key: index
|
|
16
17
|
}, x.value) : x.value;
|
|
17
18
|
}));
|
|
18
|
-
}
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
Snippet.__autocomplete_componentName = 'Snippet';
|
|
22
|
+
return Snippet;
|
|
19
23
|
}
|
|
@@ -78,10 +78,7 @@ export function createAutocompleteDom(_ref) {
|
|
|
78
78
|
getInputProps: propGetters.getInputProps,
|
|
79
79
|
getInputPropsCore: autocomplete.getInputProps,
|
|
80
80
|
autocompleteScopeApi: autocompleteScopeApi,
|
|
81
|
-
|
|
82
|
-
autocomplete.setIsOpen(false);
|
|
83
|
-
setIsModalOpen(false);
|
|
84
|
-
} : undefined
|
|
81
|
+
isDetached: isDetached
|
|
85
82
|
});
|
|
86
83
|
var inputWrapperPrefix = createDomElement('div', {
|
|
87
84
|
class: classNames.inputWrapperPrefix,
|
|
@@ -6,7 +6,7 @@ declare type InputProps = {
|
|
|
6
6
|
environment: AutocompleteEnvironment;
|
|
7
7
|
getInputProps: AutocompletePropGetters<any>['getInputProps'];
|
|
8
8
|
getInputPropsCore: AutocompleteCoreApi<any>['getInputProps'];
|
|
9
|
-
|
|
9
|
+
isDetached: boolean;
|
|
10
10
|
state: AutocompleteState<any>;
|
|
11
11
|
};
|
|
12
12
|
export declare const Input: AutocompleteElement<InputProps, HTMLInputElement>;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var _excluded = ["autocompleteScopeApi", "environment", "classNames", "getInputProps", "getInputPropsCore", "
|
|
1
|
+
var _excluded = ["autocompleteScopeApi", "environment", "classNames", "getInputProps", "getInputPropsCore", "isDetached", "state"];
|
|
2
2
|
|
|
3
3
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
4
4
|
|
|
@@ -18,7 +18,7 @@ export var Input = function Input(_ref) {
|
|
|
18
18
|
classNames = _ref.classNames,
|
|
19
19
|
getInputProps = _ref.getInputProps,
|
|
20
20
|
getInputPropsCore = _ref.getInputPropsCore,
|
|
21
|
-
|
|
21
|
+
isDetached = _ref.isDetached,
|
|
22
22
|
state = _ref.state,
|
|
23
23
|
props = _objectWithoutProperties(_ref, _excluded);
|
|
24
24
|
|
|
@@ -33,9 +33,8 @@ export var Input = function Input(_ref) {
|
|
|
33
33
|
}, autocompleteScopeApi));
|
|
34
34
|
setProperties(element, _objectSpread(_objectSpread({}, inputProps), {}, {
|
|
35
35
|
onKeyDown: function onKeyDown(event) {
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
onDetachedEscape();
|
|
36
|
+
// In detached mode we don't want to close the panel when hittin `Tab`.
|
|
37
|
+
if (isDetached && event.key === 'Tab') {
|
|
39
38
|
return;
|
|
40
39
|
}
|
|
41
40
|
|
|
@@ -9,12 +9,14 @@ export declare function getDefaultOptions<TItem extends BaseItem>(options: Autoc
|
|
|
9
9
|
props: {
|
|
10
10
|
onTouchStart(event: TouchEvent): void;
|
|
11
11
|
onTouchMove(event: TouchEvent): void;
|
|
12
|
+
onMouseDown(event: MouseEvent): void;
|
|
12
13
|
};
|
|
13
14
|
} & {
|
|
14
15
|
state: import("./types").AutocompleteState<TItem>;
|
|
15
16
|
} & import("@algolia/autocomplete-core").AutocompleteScopeApi<TItem>) => {
|
|
16
17
|
onTouchStart(event: TouchEvent): void;
|
|
17
18
|
onTouchMove(event: TouchEvent): void;
|
|
19
|
+
onMouseDown(event: MouseEvent): void;
|
|
18
20
|
};
|
|
19
21
|
getFormProps: (params: {
|
|
20
22
|
props: {
|
|
@@ -83,7 +83,7 @@ export function getDefaultOptions(options) {
|
|
|
83
83
|
|
|
84
84
|
var containerElement = getHTMLElement(environment, container);
|
|
85
85
|
invariant(containerElement.tagName !== 'INPUT', 'The `container` option does not support `input` elements. You need to change the container to a `div`.');
|
|
86
|
-
process.env.NODE_ENV !== 'production' ? warn(
|
|
86
|
+
process.env.NODE_ENV !== 'production' ? warn(!(render && renderer && !(renderer !== null && renderer !== void 0 && renderer.render)), "You provided the `render` option but did not provide a `renderer.render`. Since v1.6.0, you can provide a `render` function directly in `renderer`." + "\nTo get rid of this warning, do any of the following depending on your use case." + "\n- If you are using the `render` option only to override Autocomplete's default `render` function, pass the `render` function into `renderer` and remove the `render` option." + '\n- If you are using the `render` option to customize the layout, pass your `render` function into `renderer` and use it from the provided parameters of the `render` option.' + '\n- If you are using the `render` option to work with React 18, pass an empty `render` function into `renderer`.' + '\nSee https://www.algolia.com/doc/ui-libraries/autocomplete/api-reference/autocomplete-js/autocomplete/#param-render') : void 0;
|
|
87
87
|
process.env.NODE_ENV !== 'production' ? warn(!renderer || render || renderer.Fragment && renderer.createElement && renderer.render, "You provided an incomplete `renderer` (missing: ".concat([!(renderer !== null && renderer !== void 0 && renderer.createElement) && '`renderer.createElement`', !(renderer !== null && renderer !== void 0 && renderer.Fragment) && '`renderer.Fragment`', !(renderer !== null && renderer !== void 0 && renderer.render) && '`renderer.render`'].filter(Boolean).join(', '), "). This can cause rendering issues.") + '\nSee https://www.algolia.com/doc/ui-libraries/autocomplete/api-reference/autocomplete-js/autocomplete/#param-renderer') : void 0;
|
|
88
88
|
|
|
89
89
|
var defaultedRenderer = _objectSpread(_objectSpread({}, defaultRenderer), renderer);
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
2
|
export declare type Pragma = (type: any, props: Record<string, any> | null, ...children: ComponentChildren[]) => JSX.Element;
|
|
3
3
|
export declare type PragmaFrag = any;
|
|
4
|
-
declare type ComponentChild = VNode<any> |
|
|
4
|
+
declare type ComponentChild = VNode<any> | string | number | boolean | null | undefined;
|
|
5
5
|
declare type ComponentChildren = ComponentChild[] | ComponentChild;
|
|
6
|
-
export declare type VNode<TProps =
|
|
6
|
+
export declare type VNode<TProps = {}> = {
|
|
7
7
|
type: any;
|
|
8
|
+
key: string | number | any;
|
|
8
9
|
props: TProps & {
|
|
9
10
|
children: ComponentChildren;
|
|
10
|
-
key?: any;
|
|
11
11
|
};
|
|
12
12
|
};
|
|
13
13
|
export declare type Render = (vnode: ComponentChild, parent: Element | Document | ShadowRoot | DocumentFragment, replaceNode?: Element | Text | undefined) => void;
|
package/dist/esm/utils/index.js
CHANGED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
2
|
+
|
|
3
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
4
|
+
|
|
5
|
+
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
6
|
+
|
|
7
|
+
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
8
|
+
|
|
9
|
+
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."); }
|
|
10
|
+
|
|
11
|
+
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
12
|
+
|
|
13
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
|
14
|
+
|
|
15
|
+
function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
|
|
16
|
+
|
|
17
|
+
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
18
|
+
|
|
19
|
+
export function pickBy(obj, predicate) {
|
|
20
|
+
return Object.entries(obj).reduce(function (acc, _ref) {
|
|
21
|
+
var _ref2 = _slicedToArray(_ref, 2),
|
|
22
|
+
key = _ref2[0],
|
|
23
|
+
value = _ref2[1];
|
|
24
|
+
|
|
25
|
+
if (predicate({
|
|
26
|
+
key: key,
|
|
27
|
+
value: value
|
|
28
|
+
})) {
|
|
29
|
+
return _objectSpread(_objectSpread({}, acc), {}, _defineProperty({}, key, value));
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
return acc;
|
|
33
|
+
}, {});
|
|
34
|
+
}
|