@algolia/autocomplete-js 1.5.6 → 1.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/esm/autocomplete.js +7 -3
- package/dist/esm/getDefaultOptions.d.ts +6 -2
- package/dist/esm/getDefaultOptions.js +10 -4
- package/dist/esm/render.d.ts +6 -7
- package/dist/esm/render.js +33 -29
- package/dist/esm/types/AutocompleteRender.d.ts +3 -1
- package/dist/esm/types/AutocompleteRenderer.d.ts +6 -0
- package/dist/esm/types/AutocompleteSource.d.ts +3 -2
- package/dist/umd/index.development.js +53 -46
- 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 +5 -4
package/dist/esm/autocomplete.js
CHANGED
|
@@ -6,6 +6,7 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope
|
|
|
6
6
|
|
|
7
7
|
import { createAutocomplete } from '@algolia/autocomplete-core';
|
|
8
8
|
import { createRef, debounce, getItemsCount } from '@algolia/autocomplete-shared';
|
|
9
|
+
import htm from 'htm';
|
|
9
10
|
import { createAutocompleteDom } from './createAutocompleteDom';
|
|
10
11
|
import { createEffectWrapper } from './createEffectWrapper';
|
|
11
12
|
import { createReactiveWrapper } from './createReactiveWrapper';
|
|
@@ -94,6 +95,9 @@ export function autocomplete(options) {
|
|
|
94
95
|
setContext: autocomplete.value.setContext,
|
|
95
96
|
refresh: autocomplete.value.refresh
|
|
96
97
|
};
|
|
98
|
+
var html = reactive(function () {
|
|
99
|
+
return htm.bind(props.value.renderer.renderer.createElement);
|
|
100
|
+
});
|
|
97
101
|
var dom = reactive(function () {
|
|
98
102
|
return createAutocompleteDom({
|
|
99
103
|
autocomplete: autocomplete.value,
|
|
@@ -128,12 +132,12 @@ export function autocomplete(options) {
|
|
|
128
132
|
classNames: props.value.renderer.classNames,
|
|
129
133
|
components: props.value.renderer.components,
|
|
130
134
|
container: props.value.renderer.container,
|
|
131
|
-
|
|
135
|
+
html: html.value,
|
|
132
136
|
dom: dom.value,
|
|
133
|
-
Fragment: props.value.renderer.renderer.Fragment,
|
|
134
137
|
panelContainer: isDetached.value ? dom.value.detachedContainer : props.value.renderer.panelContainer,
|
|
135
138
|
propGetters: propGetters,
|
|
136
|
-
state: lastStateRef.current
|
|
139
|
+
state: lastStateRef.current,
|
|
140
|
+
renderer: props.value.renderer.renderer
|
|
137
141
|
};
|
|
138
142
|
var render = !getItemsCount(state) && !hasNoResultsSourceTemplateRef.current && props.value.renderer.renderNoResults || props.value.renderer.render;
|
|
139
143
|
renderSearchBox(renderProps);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
2
|
import { BaseItem } from '@algolia/autocomplete-core';
|
|
3
|
-
import { AutocompleteClassNames, AutocompleteOptions, AutocompleteRender
|
|
3
|
+
import { AutocompleteClassNames, AutocompleteOptions, AutocompleteRender } from './types';
|
|
4
4
|
export declare function getDefaultOptions<TItem extends BaseItem>(options: AutocompleteOptions<TItem>): {
|
|
5
5
|
renderer: {
|
|
6
6
|
classNames: AutocompleteClassNames;
|
|
@@ -156,7 +156,11 @@ export declare function getDefaultOptions<TItem extends BaseItem>(options: Autoc
|
|
|
156
156
|
panelPlacement: "start" | "end" | "full-width" | "input-wrapper-width";
|
|
157
157
|
render: AutocompleteRender<any> | AutocompleteRender<TItem>;
|
|
158
158
|
renderNoResults: AutocompleteRender<TItem> | undefined;
|
|
159
|
-
renderer:
|
|
159
|
+
renderer: {
|
|
160
|
+
createElement: import("./types").Pragma;
|
|
161
|
+
Fragment: any;
|
|
162
|
+
render: import("./types").Render;
|
|
163
|
+
};
|
|
160
164
|
detachedMediaQuery: string;
|
|
161
165
|
components: {
|
|
162
166
|
[x: string]: (props: any) => JSX.Element;
|
|
@@ -10,7 +10,7 @@ function _objectWithoutProperties(source, excluded) { if (source == null) return
|
|
|
10
10
|
|
|
11
11
|
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; }
|
|
12
12
|
|
|
13
|
-
import { generateAutocompleteId, invariant } from '@algolia/autocomplete-shared';
|
|
13
|
+
import { generateAutocompleteId, invariant, warn } from '@algolia/autocomplete-shared';
|
|
14
14
|
import { createElement as preactCreateElement, Fragment as PreactFragment, render } from 'preact';
|
|
15
15
|
import { createHighlightComponent, createReverseHighlightComponent, createReverseSnippetComponent, createSnippetComponent } from './components';
|
|
16
16
|
import { getHTMLElement, mergeClassNames } from './utils';
|
|
@@ -43,13 +43,15 @@ var defaultClassNames = {
|
|
|
43
43
|
};
|
|
44
44
|
|
|
45
45
|
var defaultRender = function defaultRender(_ref, root) {
|
|
46
|
-
var children = _ref.children
|
|
46
|
+
var children = _ref.children,
|
|
47
|
+
render = _ref.render;
|
|
47
48
|
render(children, root);
|
|
48
49
|
};
|
|
49
50
|
|
|
50
51
|
var defaultRenderer = {
|
|
51
52
|
createElement: preactCreateElement,
|
|
52
|
-
Fragment: PreactFragment
|
|
53
|
+
Fragment: PreactFragment,
|
|
54
|
+
render: render
|
|
53
55
|
};
|
|
54
56
|
export function getDefaultOptions(options) {
|
|
55
57
|
var _core$id;
|
|
@@ -81,7 +83,11 @@ export function getDefaultOptions(options) {
|
|
|
81
83
|
|
|
82
84
|
var containerElement = getHTMLElement(environment, container);
|
|
83
85
|
invariant(containerElement.tagName !== 'INPUT', 'The `container` option does not support `input` elements. You need to change the container to a `div`.');
|
|
84
|
-
|
|
86
|
+
process.env.NODE_ENV !== 'production' ? warn(Boolean(!render || (renderer === null || renderer === void 0 ? 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.' + '\nSee https://www.algolia.com/doc/ui-libraries/autocomplete/api-reference/autocomplete-js/autocomplete/#param-render') : void 0;
|
|
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
|
+
|
|
89
|
+
var defaultedRenderer = _objectSpread(_objectSpread({}, defaultRenderer), renderer);
|
|
90
|
+
|
|
85
91
|
var defaultComponents = {
|
|
86
92
|
Highlight: createHighlightComponent(defaultedRenderer),
|
|
87
93
|
ReverseHighlight: createReverseHighlightComponent(defaultedRenderer),
|
package/dist/esm/render.d.ts
CHANGED
|
@@ -1,19 +1,18 @@
|
|
|
1
|
-
/** @jsx createElement */
|
|
2
|
-
import { AutocompleteApi as AutocompleteCoreApi, AutocompleteScopeApi } from '@algolia/autocomplete-core';
|
|
3
|
-
import {
|
|
4
|
-
import { AutocompleteClassNames, AutocompleteComponents, AutocompleteDom, AutocompletePropGetters, AutocompleteRender, AutocompleteState, Pragma, PragmaFrag } from './types';
|
|
1
|
+
/** @jsx renderer.createElement */
|
|
2
|
+
import { AutocompleteApi as AutocompleteCoreApi, AutocompleteScopeApi, BaseItem } from '@algolia/autocomplete-core';
|
|
3
|
+
import { AutocompleteClassNames, AutocompleteComponents, AutocompleteDom, AutocompletePropGetters, AutocompleteRender, AutocompleteRenderer, AutocompleteState, HTMLTemplate } from './types';
|
|
5
4
|
declare type RenderProps<TItem extends BaseItem> = {
|
|
6
5
|
autocomplete: AutocompleteCoreApi<TItem>;
|
|
7
6
|
autocompleteScopeApi: AutocompleteScopeApi<TItem>;
|
|
8
7
|
classNames: AutocompleteClassNames;
|
|
9
8
|
components: AutocompleteComponents;
|
|
10
|
-
|
|
9
|
+
html: HTMLTemplate;
|
|
11
10
|
dom: AutocompleteDom;
|
|
12
|
-
Fragment: PragmaFrag;
|
|
13
11
|
panelContainer: HTMLElement;
|
|
14
12
|
propGetters: AutocompletePropGetters<TItem>;
|
|
15
13
|
state: AutocompleteState<TItem>;
|
|
14
|
+
renderer: Required<AutocompleteRenderer>;
|
|
16
15
|
};
|
|
17
16
|
export declare function renderSearchBox<TItem extends BaseItem>({ autocomplete, autocompleteScopeApi, dom, propGetters, state, }: RenderProps<TItem>): void;
|
|
18
|
-
export declare function renderPanel<TItem extends BaseItem>(render: AutocompleteRender<TItem>, { autocomplete, autocompleteScopeApi, classNames,
|
|
17
|
+
export declare function renderPanel<TItem extends BaseItem>(render: AutocompleteRender<TItem>, { autocomplete, autocompleteScopeApi, classNames, html, dom, panelContainer, propGetters, state, components, renderer, }: RenderProps<TItem>): void;
|
|
19
18
|
export {};
|
package/dist/esm/render.js
CHANGED
|
@@ -6,7 +6,7 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
|
|
|
6
6
|
|
|
7
7
|
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; }
|
|
8
8
|
|
|
9
|
-
/** @jsx createElement */
|
|
9
|
+
/** @jsx renderer.createElement */
|
|
10
10
|
import { setProperties, setPropertiesWithoutEvents } from './utils';
|
|
11
11
|
export function renderSearchBox(_ref) {
|
|
12
12
|
var autocomplete = _ref.autocomplete,
|
|
@@ -39,13 +39,13 @@ export function renderPanel(render, _ref2) {
|
|
|
39
39
|
var autocomplete = _ref2.autocomplete,
|
|
40
40
|
autocompleteScopeApi = _ref2.autocompleteScopeApi,
|
|
41
41
|
classNames = _ref2.classNames,
|
|
42
|
-
|
|
42
|
+
html = _ref2.html,
|
|
43
43
|
dom = _ref2.dom,
|
|
44
|
-
Fragment = _ref2.Fragment,
|
|
45
44
|
panelContainer = _ref2.panelContainer,
|
|
46
45
|
propGetters = _ref2.propGetters,
|
|
47
46
|
state = _ref2.state,
|
|
48
|
-
components = _ref2.components
|
|
47
|
+
components = _ref2.components,
|
|
48
|
+
renderer = _ref2.renderer;
|
|
49
49
|
|
|
50
50
|
if (!state.isOpen) {
|
|
51
51
|
if (panelContainer.contains(dom.panel)) {
|
|
@@ -69,28 +69,30 @@ export function renderPanel(render, _ref2) {
|
|
|
69
69
|
}).map(function (_ref4, sourceIndex) {
|
|
70
70
|
var source = _ref4.source,
|
|
71
71
|
items = _ref4.items;
|
|
72
|
-
return createElement("section", {
|
|
72
|
+
return renderer.createElement("section", {
|
|
73
73
|
key: sourceIndex,
|
|
74
74
|
className: classNames.source,
|
|
75
75
|
"data-autocomplete-source-id": source.sourceId
|
|
76
|
-
}, source.templates.header && createElement("div", {
|
|
76
|
+
}, source.templates.header && renderer.createElement("div", {
|
|
77
77
|
className: classNames.sourceHeader
|
|
78
78
|
}, source.templates.header({
|
|
79
79
|
components: components,
|
|
80
|
-
createElement: createElement,
|
|
81
|
-
Fragment: Fragment,
|
|
80
|
+
createElement: renderer.createElement,
|
|
81
|
+
Fragment: renderer.Fragment,
|
|
82
82
|
items: items,
|
|
83
83
|
source: source,
|
|
84
|
-
state: state
|
|
85
|
-
|
|
84
|
+
state: state,
|
|
85
|
+
html: html
|
|
86
|
+
})), source.templates.noResults && items.length === 0 ? renderer.createElement("div", {
|
|
86
87
|
className: classNames.sourceNoResults
|
|
87
88
|
}, source.templates.noResults({
|
|
88
89
|
components: components,
|
|
89
|
-
createElement: createElement,
|
|
90
|
-
Fragment: Fragment,
|
|
90
|
+
createElement: renderer.createElement,
|
|
91
|
+
Fragment: renderer.Fragment,
|
|
91
92
|
source: source,
|
|
92
|
-
state: state
|
|
93
|
-
|
|
93
|
+
state: state,
|
|
94
|
+
html: html
|
|
95
|
+
})) : renderer.createElement("ul", _extends({
|
|
94
96
|
className: classNames.list
|
|
95
97
|
}, propGetters.getListProps(_objectSpread({
|
|
96
98
|
state: state,
|
|
@@ -100,7 +102,7 @@ export function renderPanel(render, _ref2) {
|
|
|
100
102
|
item: item,
|
|
101
103
|
source: source
|
|
102
104
|
});
|
|
103
|
-
return createElement("li", _extends({
|
|
105
|
+
return renderer.createElement("li", _extends({
|
|
104
106
|
key: itemProps.id,
|
|
105
107
|
className: classNames.item
|
|
106
108
|
}, propGetters.getItemProps(_objectSpread({
|
|
@@ -108,38 +110,40 @@ export function renderPanel(render, _ref2) {
|
|
|
108
110
|
props: itemProps
|
|
109
111
|
}, autocompleteScopeApi))), source.templates.item({
|
|
110
112
|
components: components,
|
|
111
|
-
createElement: createElement,
|
|
112
|
-
Fragment: Fragment,
|
|
113
|
+
createElement: renderer.createElement,
|
|
114
|
+
Fragment: renderer.Fragment,
|
|
113
115
|
item: item,
|
|
114
|
-
state: state
|
|
116
|
+
state: state,
|
|
117
|
+
html: html
|
|
115
118
|
}));
|
|
116
|
-
})), source.templates.footer && createElement("div", {
|
|
119
|
+
})), source.templates.footer && renderer.createElement("div", {
|
|
117
120
|
className: classNames.sourceFooter
|
|
118
121
|
}, source.templates.footer({
|
|
119
122
|
components: components,
|
|
120
|
-
createElement: createElement,
|
|
121
|
-
Fragment: Fragment,
|
|
123
|
+
createElement: renderer.createElement,
|
|
124
|
+
Fragment: renderer.Fragment,
|
|
122
125
|
items: items,
|
|
123
126
|
source: source,
|
|
124
|
-
state: state
|
|
127
|
+
state: state,
|
|
128
|
+
html: html
|
|
125
129
|
})));
|
|
126
130
|
});
|
|
127
|
-
var children = createElement(Fragment, null, createElement("div", {
|
|
131
|
+
var children = renderer.createElement(renderer.Fragment, null, renderer.createElement("div", {
|
|
128
132
|
className: classNames.panelLayout
|
|
129
|
-
}, sections), createElement("div", {
|
|
133
|
+
}, sections), renderer.createElement("div", {
|
|
130
134
|
className: "aa-GradientBottom"
|
|
131
135
|
}));
|
|
132
136
|
var elements = sections.reduce(function (acc, current) {
|
|
133
137
|
acc[current.props['data-autocomplete-source-id']] = current;
|
|
134
138
|
return acc;
|
|
135
139
|
}, {});
|
|
136
|
-
render(_objectSpread({
|
|
140
|
+
render(_objectSpread(_objectSpread({
|
|
137
141
|
children: children,
|
|
138
142
|
state: state,
|
|
139
143
|
sections: sections,
|
|
140
|
-
elements: elements
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
+
elements: elements
|
|
145
|
+
}, renderer), {}, {
|
|
146
|
+
components: components,
|
|
147
|
+
html: html
|
|
144
148
|
}, autocompleteScopeApi), dom.panel);
|
|
145
149
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { AutocompleteScopeApi, BaseItem } from '@algolia/autocomplete-core';
|
|
2
2
|
import { AutocompleteComponents } from './AutocompleteComponents';
|
|
3
|
-
import { Pragma, PragmaFrag, VNode } from './AutocompleteRenderer';
|
|
3
|
+
import { HTMLTemplate, Pragma, PragmaFrag, Render, VNode } from './AutocompleteRenderer';
|
|
4
4
|
import { AutocompleteState } from './AutocompleteState';
|
|
5
5
|
export declare type AutocompleteRender<TItem extends BaseItem> = (params: AutocompleteScopeApi<TItem> & {
|
|
6
6
|
children: VNode;
|
|
@@ -10,4 +10,6 @@ export declare type AutocompleteRender<TItem extends BaseItem> = (params: Autoco
|
|
|
10
10
|
components: AutocompleteComponents;
|
|
11
11
|
createElement: Pragma;
|
|
12
12
|
Fragment: PragmaFrag;
|
|
13
|
+
html: HTMLTemplate;
|
|
14
|
+
render: Render;
|
|
13
15
|
}, root: HTMLElement) => void;
|
|
@@ -10,6 +10,7 @@ export declare type VNode<TProps = any> = {
|
|
|
10
10
|
key?: any;
|
|
11
11
|
};
|
|
12
12
|
};
|
|
13
|
+
export declare type Render = (vnode: ComponentChild, parent: Element | Document | ShadowRoot | DocumentFragment, replaceNode?: Element | Text | undefined) => void;
|
|
13
14
|
export declare type AutocompleteRenderer = {
|
|
14
15
|
/**
|
|
15
16
|
* The function to create virtual nodes.
|
|
@@ -23,5 +24,10 @@ export declare type AutocompleteRenderer = {
|
|
|
23
24
|
* @default preact.Fragment
|
|
24
25
|
*/
|
|
25
26
|
Fragment: PragmaFrag;
|
|
27
|
+
/**
|
|
28
|
+
* The function to render children to an element.
|
|
29
|
+
*/
|
|
30
|
+
render?: Render;
|
|
26
31
|
};
|
|
32
|
+
export declare type HTMLTemplate = (strings: TemplateStringsArray, ...values: any[]) => VNode | VNode[];
|
|
27
33
|
export {};
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { AutocompleteSource as AutocompleteCoreSource, InternalAutocompleteSource as InternalAutocompleteCoreSource, BaseItem } from '@algolia/autocomplete-core';
|
|
2
2
|
import { AutocompleteComponents } from './AutocompleteComponents';
|
|
3
|
-
import { AutocompleteRenderer, VNode } from './AutocompleteRenderer';
|
|
3
|
+
import { AutocompleteRenderer, HTMLTemplate, VNode } from './AutocompleteRenderer';
|
|
4
4
|
import { AutocompleteState } from './AutocompleteState';
|
|
5
5
|
declare type Template<TParams> = (params: TParams & AutocompleteRenderer & {
|
|
6
6
|
components: AutocompleteComponents;
|
|
7
|
-
|
|
7
|
+
html: HTMLTemplate;
|
|
8
|
+
}) => VNode | VNode[] | string;
|
|
8
9
|
/**
|
|
9
10
|
* Templates to display in the autocomplete panel.
|
|
10
11
|
*
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! @algolia/autocomplete-js 1.
|
|
1
|
+
/*! @algolia/autocomplete-js 1.6.1 | MIT License | © Algolia, Inc. and contributors | https://github.com/algolia/autocomplete */
|
|
2
2
|
(function (global, factory) {
|
|
3
3
|
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
|
|
4
4
|
typeof define === 'function' && define.amd ? define(['exports'], factory) :
|
|
@@ -311,7 +311,7 @@
|
|
|
311
311
|
|
|
312
312
|
var noop = function noop() {};
|
|
313
313
|
|
|
314
|
-
var version = '1.
|
|
314
|
+
var version = '1.6.1';
|
|
315
315
|
|
|
316
316
|
var userAgents$1 = [{
|
|
317
317
|
segment: 'autocomplete-core',
|
|
@@ -584,14 +584,6 @@
|
|
|
584
584
|
});
|
|
585
585
|
}
|
|
586
586
|
|
|
587
|
-
var chromeRegex = /(crmo|crios|chrome)/i;
|
|
588
|
-
var edgeRegex = /edg(e|ios|a)?/i;
|
|
589
|
-
var samsungBrowserRegex = /samsungbrowser/i;
|
|
590
|
-
var chromiumRegex = /chromium/i;
|
|
591
|
-
function isChrome(userAgent) {
|
|
592
|
-
return Boolean(userAgent && userAgent.match(chromeRegex) && !userAgent.match(edgeRegex) && !userAgent.match(samsungBrowserRegex) && !userAgent.match(chromiumRegex));
|
|
593
|
-
}
|
|
594
|
-
|
|
595
587
|
// We don't have access to the autocomplete source when we call `onKeyDown`
|
|
596
588
|
// or `onClick` because those are native browser events.
|
|
597
589
|
// However, we can get the source from the suggestion index.
|
|
@@ -2032,7 +2024,7 @@
|
|
|
2032
2024
|
|
|
2033
2025
|
var activeItem = getActiveItem(store.getState());
|
|
2034
2026
|
var userAgent = (_props$environment$na = props.environment.navigator) === null || _props$environment$na === void 0 ? void 0 : _props$environment$na.userAgent;
|
|
2035
|
-
var shouldFallbackKeyHint = isSamsung(userAgent)
|
|
2027
|
+
var shouldFallbackKeyHint = isSamsung(userAgent);
|
|
2036
2028
|
var enterKeyHint = activeItem !== null && activeItem !== void 0 && activeItem.itemUrl && !shouldFallbackKeyHint ? 'go' : 'search';
|
|
2037
2029
|
return _objectSpread$6({
|
|
2038
2030
|
'aria-autocomplete': 'both',
|
|
@@ -2605,6 +2597,8 @@
|
|
|
2605
2597
|
}, propGetters), setters);
|
|
2606
2598
|
}
|
|
2607
2599
|
|
|
2600
|
+
var n$1=function(t,s,r,e){var u;s[0]=0;for(var h=1;h<s.length;h++){var p=s[h++],a=s[h]?(s[0]|=p?1:2,r[s[h++]]):s[++h];3===p?e[0]=a:4===p?e[1]=Object.assign(e[1]||{},a):5===p?(e[1]=e[1]||{})[s[++h]]=a:6===p?e[1][s[++h]]+=a+"":p?(u=t.apply(a,n$1(t,a,r,["",null])),e.push(u),a[0]?s[0]|=2:(s[h-2]=0,s[h]=u)):e.push(a);}return e},t$1=new Map;function htm(s){var r=t$1.get(this);return r||(r=new Map,t$1.set(this,r)),(r=n$1(this,r.get(s)||(r.set(s,r=function(n){for(var t,s,r=1,e="",u="",h=[0],p=function(n){1===r&&(n||(e=e.replace(/^\s*\n\s*|\s*\n\s*$/g,"")))?h.push(0,n,e):3===r&&(n||e)?(h.push(3,n,e),r=2):2===r&&"..."===e&&n?h.push(4,n,0):2===r&&e&&!n?h.push(5,0,!0,e):r>=5&&((e||!n&&5===r)&&(h.push(r,0,e,s),r=6),n&&(h.push(r,n,0,s),r=6)),e="";},a=0;a<n.length;a++){a&&(1===r&&p(),p(a));for(var l=0;l<n[a].length;l++)t=n[a][l],1===r?"<"===t?(p(),h=[h],r=3):e+=t:4===r?"--"===e&&">"===t?(r=1,e=""):e=t+e[0]:u?t===u?u="":e+=t:'"'===t||"'"===t?u=t:">"===t?(p(),r=1):r&&("="===t?(r=5,s=e,e=""):"/"===t&&(r<5||">"===n[a][l+1])?(p(),3===r&&(h=h[0]),r=h,(h=h[0]).push(2,0,r),r=0):" "===t||"\t"===t||"\n"===t||"\r"===t?(p(),r=2):e+=t),3===r&&"!--"===e&&(r=4,h=h[0]);}return p(),h}(s)),r),arguments,[])).length>1?r:r[0]}
|
|
2601
|
+
|
|
2608
2602
|
var ClearIcon = function ClearIcon(_ref) {
|
|
2609
2603
|
var environment = _ref.environment;
|
|
2610
2604
|
var element = environment.document.createElementNS('http://www.w3.org/2000/svg', 'svg');
|
|
@@ -3664,13 +3658,15 @@
|
|
|
3664
3658
|
};
|
|
3665
3659
|
|
|
3666
3660
|
var defaultRender = function defaultRender(_ref, root) {
|
|
3667
|
-
var children = _ref.children
|
|
3668
|
-
|
|
3661
|
+
var children = _ref.children,
|
|
3662
|
+
render = _ref.render;
|
|
3663
|
+
render(children, root);
|
|
3669
3664
|
};
|
|
3670
3665
|
|
|
3671
3666
|
var defaultRenderer = {
|
|
3672
3667
|
createElement: v,
|
|
3673
|
-
Fragment: d
|
|
3668
|
+
Fragment: d,
|
|
3669
|
+
render: S
|
|
3674
3670
|
};
|
|
3675
3671
|
function getDefaultOptions(options) {
|
|
3676
3672
|
var _core$id;
|
|
@@ -3702,7 +3698,11 @@
|
|
|
3702
3698
|
|
|
3703
3699
|
var containerElement = getHTMLElement(environment, container);
|
|
3704
3700
|
invariant(containerElement.tagName !== 'INPUT', 'The `container` option does not support `input` elements. You need to change the container to a `div`.');
|
|
3705
|
-
|
|
3701
|
+
"development" !== 'production' ? warn(Boolean(!render || (renderer === null || renderer === void 0 ? 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.' + '\nSee https://www.algolia.com/doc/ui-libraries/autocomplete/api-reference/autocomplete-js/autocomplete/#param-render') : void 0;
|
|
3702
|
+
"development" !== '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;
|
|
3703
|
+
|
|
3704
|
+
var defaultedRenderer = _objectSpread2(_objectSpread2({}, defaultRenderer), renderer);
|
|
3705
|
+
|
|
3706
3706
|
var defaultComponents = {
|
|
3707
3707
|
Highlight: createHighlightComponent(defaultedRenderer),
|
|
3708
3708
|
ReverseHighlight: createReverseHighlightComponent(defaultedRenderer),
|
|
@@ -3855,13 +3855,13 @@
|
|
|
3855
3855
|
var autocomplete = _ref2.autocomplete,
|
|
3856
3856
|
autocompleteScopeApi = _ref2.autocompleteScopeApi,
|
|
3857
3857
|
classNames = _ref2.classNames,
|
|
3858
|
-
|
|
3858
|
+
html = _ref2.html,
|
|
3859
3859
|
dom = _ref2.dom,
|
|
3860
|
-
Fragment = _ref2.Fragment,
|
|
3861
3860
|
panelContainer = _ref2.panelContainer,
|
|
3862
3861
|
propGetters = _ref2.propGetters,
|
|
3863
3862
|
state = _ref2.state,
|
|
3864
|
-
components = _ref2.components
|
|
3863
|
+
components = _ref2.components,
|
|
3864
|
+
renderer = _ref2.renderer;
|
|
3865
3865
|
|
|
3866
3866
|
if (!state.isOpen) {
|
|
3867
3867
|
if (panelContainer.contains(dom.panel)) {
|
|
@@ -3885,28 +3885,30 @@
|
|
|
3885
3885
|
}).map(function (_ref4, sourceIndex) {
|
|
3886
3886
|
var source = _ref4.source,
|
|
3887
3887
|
items = _ref4.items;
|
|
3888
|
-
return createElement("section", {
|
|
3888
|
+
return renderer.createElement("section", {
|
|
3889
3889
|
key: sourceIndex,
|
|
3890
3890
|
className: classNames.source,
|
|
3891
3891
|
"data-autocomplete-source-id": source.sourceId
|
|
3892
|
-
}, source.templates.header && createElement("div", {
|
|
3892
|
+
}, source.templates.header && renderer.createElement("div", {
|
|
3893
3893
|
className: classNames.sourceHeader
|
|
3894
3894
|
}, source.templates.header({
|
|
3895
3895
|
components: components,
|
|
3896
|
-
createElement: createElement,
|
|
3897
|
-
Fragment: Fragment,
|
|
3896
|
+
createElement: renderer.createElement,
|
|
3897
|
+
Fragment: renderer.Fragment,
|
|
3898
3898
|
items: items,
|
|
3899
3899
|
source: source,
|
|
3900
|
-
state: state
|
|
3901
|
-
|
|
3900
|
+
state: state,
|
|
3901
|
+
html: html
|
|
3902
|
+
})), source.templates.noResults && items.length === 0 ? renderer.createElement("div", {
|
|
3902
3903
|
className: classNames.sourceNoResults
|
|
3903
3904
|
}, source.templates.noResults({
|
|
3904
3905
|
components: components,
|
|
3905
|
-
createElement: createElement,
|
|
3906
|
-
Fragment: Fragment,
|
|
3906
|
+
createElement: renderer.createElement,
|
|
3907
|
+
Fragment: renderer.Fragment,
|
|
3907
3908
|
source: source,
|
|
3908
|
-
state: state
|
|
3909
|
-
|
|
3909
|
+
state: state,
|
|
3910
|
+
html: html
|
|
3911
|
+
})) : renderer.createElement("ul", _extends({
|
|
3910
3912
|
className: classNames.list
|
|
3911
3913
|
}, propGetters.getListProps(_objectSpread2({
|
|
3912
3914
|
state: state,
|
|
@@ -3916,7 +3918,7 @@
|
|
|
3916
3918
|
item: item,
|
|
3917
3919
|
source: source
|
|
3918
3920
|
});
|
|
3919
|
-
return createElement("li", _extends({
|
|
3921
|
+
return renderer.createElement("li", _extends({
|
|
3920
3922
|
key: itemProps.id,
|
|
3921
3923
|
className: classNames.item
|
|
3922
3924
|
}, propGetters.getItemProps(_objectSpread2({
|
|
@@ -3924,39 +3926,41 @@
|
|
|
3924
3926
|
props: itemProps
|
|
3925
3927
|
}, autocompleteScopeApi))), source.templates.item({
|
|
3926
3928
|
components: components,
|
|
3927
|
-
createElement: createElement,
|
|
3928
|
-
Fragment: Fragment,
|
|
3929
|
+
createElement: renderer.createElement,
|
|
3930
|
+
Fragment: renderer.Fragment,
|
|
3929
3931
|
item: item,
|
|
3930
|
-
state: state
|
|
3932
|
+
state: state,
|
|
3933
|
+
html: html
|
|
3931
3934
|
}));
|
|
3932
|
-
})), source.templates.footer && createElement("div", {
|
|
3935
|
+
})), source.templates.footer && renderer.createElement("div", {
|
|
3933
3936
|
className: classNames.sourceFooter
|
|
3934
3937
|
}, source.templates.footer({
|
|
3935
3938
|
components: components,
|
|
3936
|
-
createElement: createElement,
|
|
3937
|
-
Fragment: Fragment,
|
|
3939
|
+
createElement: renderer.createElement,
|
|
3940
|
+
Fragment: renderer.Fragment,
|
|
3938
3941
|
items: items,
|
|
3939
3942
|
source: source,
|
|
3940
|
-
state: state
|
|
3943
|
+
state: state,
|
|
3944
|
+
html: html
|
|
3941
3945
|
})));
|
|
3942
3946
|
});
|
|
3943
|
-
var children = createElement(Fragment, null, createElement("div", {
|
|
3947
|
+
var children = renderer.createElement(renderer.Fragment, null, renderer.createElement("div", {
|
|
3944
3948
|
className: classNames.panelLayout
|
|
3945
|
-
}, sections), createElement("div", {
|
|
3949
|
+
}, sections), renderer.createElement("div", {
|
|
3946
3950
|
className: "aa-GradientBottom"
|
|
3947
3951
|
}));
|
|
3948
3952
|
var elements = sections.reduce(function (acc, current) {
|
|
3949
3953
|
acc[current.props['data-autocomplete-source-id']] = current;
|
|
3950
3954
|
return acc;
|
|
3951
3955
|
}, {});
|
|
3952
|
-
render(_objectSpread2({
|
|
3956
|
+
render(_objectSpread2(_objectSpread2({
|
|
3953
3957
|
children: children,
|
|
3954
3958
|
state: state,
|
|
3955
3959
|
sections: sections,
|
|
3956
|
-
elements: elements
|
|
3957
|
-
|
|
3958
|
-
|
|
3959
|
-
|
|
3960
|
+
elements: elements
|
|
3961
|
+
}, renderer), {}, {
|
|
3962
|
+
components: components,
|
|
3963
|
+
html: html
|
|
3960
3964
|
}, autocompleteScopeApi), dom.panel);
|
|
3961
3965
|
}
|
|
3962
3966
|
|
|
@@ -4045,6 +4049,9 @@
|
|
|
4045
4049
|
setContext: autocomplete.value.setContext,
|
|
4046
4050
|
refresh: autocomplete.value.refresh
|
|
4047
4051
|
};
|
|
4052
|
+
var html = reactive(function () {
|
|
4053
|
+
return htm.bind(props.value.renderer.renderer.createElement);
|
|
4054
|
+
});
|
|
4048
4055
|
var dom = reactive(function () {
|
|
4049
4056
|
return createAutocompleteDom({
|
|
4050
4057
|
autocomplete: autocomplete.value,
|
|
@@ -4079,12 +4086,12 @@
|
|
|
4079
4086
|
classNames: props.value.renderer.classNames,
|
|
4080
4087
|
components: props.value.renderer.components,
|
|
4081
4088
|
container: props.value.renderer.container,
|
|
4082
|
-
|
|
4089
|
+
html: html.value,
|
|
4083
4090
|
dom: dom.value,
|
|
4084
|
-
Fragment: props.value.renderer.renderer.Fragment,
|
|
4085
4091
|
panelContainer: isDetached.value ? dom.value.detachedContainer : props.value.renderer.panelContainer,
|
|
4086
4092
|
propGetters: propGetters,
|
|
4087
|
-
state: lastStateRef.current
|
|
4093
|
+
state: lastStateRef.current,
|
|
4094
|
+
renderer: props.value.renderer.renderer
|
|
4088
4095
|
};
|
|
4089
4096
|
var render = !getItemsCount(state) && !hasNoResultsSourceTemplateRef.current && props.value.renderer.renderNoResults || props.value.renderer.render;
|
|
4090
4097
|
renderSearchBox(renderProps);
|