@algolia/autocomplete-js 1.5.7 → 1.6.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 +7 -3
- package/dist/esm/getDefaultOptions.d.ts +6 -2
- package/dist/esm/getDefaultOptions.js +8 -3
- 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 +49 -35
- 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 | undefined;
|
|
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';
|
|
@@ -49,7 +49,8 @@ var defaultRender = function defaultRender(_ref, root) {
|
|
|
49
49
|
|
|
50
50
|
var defaultRenderer = {
|
|
51
51
|
createElement: preactCreateElement,
|
|
52
|
-
Fragment: PreactFragment
|
|
52
|
+
Fragment: PreactFragment,
|
|
53
|
+
render: render
|
|
53
54
|
};
|
|
54
55
|
export function getDefaultOptions(options) {
|
|
55
56
|
var _core$id;
|
|
@@ -81,7 +82,11 @@ export function getDefaultOptions(options) {
|
|
|
81
82
|
|
|
82
83
|
var containerElement = getHTMLElement(environment, container);
|
|
83
84
|
invariant(containerElement.tagName !== 'INPUT', 'The `container` option does not support `input` elements. You need to change the container to a `div`.');
|
|
84
|
-
|
|
85
|
+
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;
|
|
86
|
+
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;
|
|
87
|
+
|
|
88
|
+
var defaultedRenderer = _objectSpread(_objectSpread({}, defaultRenderer), renderer);
|
|
89
|
+
|
|
85
90
|
var defaultComponents = {
|
|
86
91
|
Highlight: createHighlightComponent(defaultedRenderer),
|
|
87
92
|
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: 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.0 | 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.0';
|
|
315
315
|
|
|
316
316
|
var userAgents$1 = [{
|
|
317
317
|
segment: 'autocomplete-core',
|
|
@@ -2597,6 +2597,8 @@
|
|
|
2597
2597
|
}, propGetters), setters);
|
|
2598
2598
|
}
|
|
2599
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
|
+
|
|
2600
2602
|
var ClearIcon = function ClearIcon(_ref) {
|
|
2601
2603
|
var environment = _ref.environment;
|
|
2602
2604
|
var element = environment.document.createElementNS('http://www.w3.org/2000/svg', 'svg');
|
|
@@ -3662,7 +3664,8 @@
|
|
|
3662
3664
|
|
|
3663
3665
|
var defaultRenderer = {
|
|
3664
3666
|
createElement: v,
|
|
3665
|
-
Fragment: d
|
|
3667
|
+
Fragment: d,
|
|
3668
|
+
render: S
|
|
3666
3669
|
};
|
|
3667
3670
|
function getDefaultOptions(options) {
|
|
3668
3671
|
var _core$id;
|
|
@@ -3694,7 +3697,11 @@
|
|
|
3694
3697
|
|
|
3695
3698
|
var containerElement = getHTMLElement(environment, container);
|
|
3696
3699
|
invariant(containerElement.tagName !== 'INPUT', 'The `container` option does not support `input` elements. You need to change the container to a `div`.');
|
|
3697
|
-
|
|
3700
|
+
"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;
|
|
3701
|
+
"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;
|
|
3702
|
+
|
|
3703
|
+
var defaultedRenderer = _objectSpread2(_objectSpread2({}, defaultRenderer), renderer);
|
|
3704
|
+
|
|
3698
3705
|
var defaultComponents = {
|
|
3699
3706
|
Highlight: createHighlightComponent(defaultedRenderer),
|
|
3700
3707
|
ReverseHighlight: createReverseHighlightComponent(defaultedRenderer),
|
|
@@ -3847,13 +3854,13 @@
|
|
|
3847
3854
|
var autocomplete = _ref2.autocomplete,
|
|
3848
3855
|
autocompleteScopeApi = _ref2.autocompleteScopeApi,
|
|
3849
3856
|
classNames = _ref2.classNames,
|
|
3850
|
-
|
|
3857
|
+
html = _ref2.html,
|
|
3851
3858
|
dom = _ref2.dom,
|
|
3852
|
-
Fragment = _ref2.Fragment,
|
|
3853
3859
|
panelContainer = _ref2.panelContainer,
|
|
3854
3860
|
propGetters = _ref2.propGetters,
|
|
3855
3861
|
state = _ref2.state,
|
|
3856
|
-
components = _ref2.components
|
|
3862
|
+
components = _ref2.components,
|
|
3863
|
+
renderer = _ref2.renderer;
|
|
3857
3864
|
|
|
3858
3865
|
if (!state.isOpen) {
|
|
3859
3866
|
if (panelContainer.contains(dom.panel)) {
|
|
@@ -3877,28 +3884,30 @@
|
|
|
3877
3884
|
}).map(function (_ref4, sourceIndex) {
|
|
3878
3885
|
var source = _ref4.source,
|
|
3879
3886
|
items = _ref4.items;
|
|
3880
|
-
return createElement("section", {
|
|
3887
|
+
return renderer.createElement("section", {
|
|
3881
3888
|
key: sourceIndex,
|
|
3882
3889
|
className: classNames.source,
|
|
3883
3890
|
"data-autocomplete-source-id": source.sourceId
|
|
3884
|
-
}, source.templates.header && createElement("div", {
|
|
3891
|
+
}, source.templates.header && renderer.createElement("div", {
|
|
3885
3892
|
className: classNames.sourceHeader
|
|
3886
3893
|
}, source.templates.header({
|
|
3887
3894
|
components: components,
|
|
3888
|
-
createElement: createElement,
|
|
3889
|
-
Fragment: Fragment,
|
|
3895
|
+
createElement: renderer.createElement,
|
|
3896
|
+
Fragment: renderer.Fragment,
|
|
3890
3897
|
items: items,
|
|
3891
3898
|
source: source,
|
|
3892
|
-
state: state
|
|
3893
|
-
|
|
3899
|
+
state: state,
|
|
3900
|
+
html: html
|
|
3901
|
+
})), source.templates.noResults && items.length === 0 ? renderer.createElement("div", {
|
|
3894
3902
|
className: classNames.sourceNoResults
|
|
3895
3903
|
}, source.templates.noResults({
|
|
3896
3904
|
components: components,
|
|
3897
|
-
createElement: createElement,
|
|
3898
|
-
Fragment: Fragment,
|
|
3905
|
+
createElement: renderer.createElement,
|
|
3906
|
+
Fragment: renderer.Fragment,
|
|
3899
3907
|
source: source,
|
|
3900
|
-
state: state
|
|
3901
|
-
|
|
3908
|
+
state: state,
|
|
3909
|
+
html: html
|
|
3910
|
+
})) : renderer.createElement("ul", _extends({
|
|
3902
3911
|
className: classNames.list
|
|
3903
3912
|
}, propGetters.getListProps(_objectSpread2({
|
|
3904
3913
|
state: state,
|
|
@@ -3908,7 +3917,7 @@
|
|
|
3908
3917
|
item: item,
|
|
3909
3918
|
source: source
|
|
3910
3919
|
});
|
|
3911
|
-
return createElement("li", _extends({
|
|
3920
|
+
return renderer.createElement("li", _extends({
|
|
3912
3921
|
key: itemProps.id,
|
|
3913
3922
|
className: classNames.item
|
|
3914
3923
|
}, propGetters.getItemProps(_objectSpread2({
|
|
@@ -3916,39 +3925,41 @@
|
|
|
3916
3925
|
props: itemProps
|
|
3917
3926
|
}, autocompleteScopeApi))), source.templates.item({
|
|
3918
3927
|
components: components,
|
|
3919
|
-
createElement: createElement,
|
|
3920
|
-
Fragment: Fragment,
|
|
3928
|
+
createElement: renderer.createElement,
|
|
3929
|
+
Fragment: renderer.Fragment,
|
|
3921
3930
|
item: item,
|
|
3922
|
-
state: state
|
|
3931
|
+
state: state,
|
|
3932
|
+
html: html
|
|
3923
3933
|
}));
|
|
3924
|
-
})), source.templates.footer && createElement("div", {
|
|
3934
|
+
})), source.templates.footer && renderer.createElement("div", {
|
|
3925
3935
|
className: classNames.sourceFooter
|
|
3926
3936
|
}, source.templates.footer({
|
|
3927
3937
|
components: components,
|
|
3928
|
-
createElement: createElement,
|
|
3929
|
-
Fragment: Fragment,
|
|
3938
|
+
createElement: renderer.createElement,
|
|
3939
|
+
Fragment: renderer.Fragment,
|
|
3930
3940
|
items: items,
|
|
3931
3941
|
source: source,
|
|
3932
|
-
state: state
|
|
3942
|
+
state: state,
|
|
3943
|
+
html: html
|
|
3933
3944
|
})));
|
|
3934
3945
|
});
|
|
3935
|
-
var children = createElement(Fragment, null, createElement("div", {
|
|
3946
|
+
var children = renderer.createElement(renderer.Fragment, null, renderer.createElement("div", {
|
|
3936
3947
|
className: classNames.panelLayout
|
|
3937
|
-
}, sections), createElement("div", {
|
|
3948
|
+
}, sections), renderer.createElement("div", {
|
|
3938
3949
|
className: "aa-GradientBottom"
|
|
3939
3950
|
}));
|
|
3940
3951
|
var elements = sections.reduce(function (acc, current) {
|
|
3941
3952
|
acc[current.props['data-autocomplete-source-id']] = current;
|
|
3942
3953
|
return acc;
|
|
3943
3954
|
}, {});
|
|
3944
|
-
render(_objectSpread2({
|
|
3955
|
+
render(_objectSpread2(_objectSpread2({
|
|
3945
3956
|
children: children,
|
|
3946
3957
|
state: state,
|
|
3947
3958
|
sections: sections,
|
|
3948
|
-
elements: elements
|
|
3949
|
-
|
|
3950
|
-
|
|
3951
|
-
|
|
3959
|
+
elements: elements
|
|
3960
|
+
}, renderer), {}, {
|
|
3961
|
+
components: components,
|
|
3962
|
+
html: html
|
|
3952
3963
|
}, autocompleteScopeApi), dom.panel);
|
|
3953
3964
|
}
|
|
3954
3965
|
|
|
@@ -4037,6 +4048,9 @@
|
|
|
4037
4048
|
setContext: autocomplete.value.setContext,
|
|
4038
4049
|
refresh: autocomplete.value.refresh
|
|
4039
4050
|
};
|
|
4051
|
+
var html = reactive(function () {
|
|
4052
|
+
return htm.bind(props.value.renderer.renderer.createElement);
|
|
4053
|
+
});
|
|
4040
4054
|
var dom = reactive(function () {
|
|
4041
4055
|
return createAutocompleteDom({
|
|
4042
4056
|
autocomplete: autocomplete.value,
|
|
@@ -4071,12 +4085,12 @@
|
|
|
4071
4085
|
classNames: props.value.renderer.classNames,
|
|
4072
4086
|
components: props.value.renderer.components,
|
|
4073
4087
|
container: props.value.renderer.container,
|
|
4074
|
-
|
|
4088
|
+
html: html.value,
|
|
4075
4089
|
dom: dom.value,
|
|
4076
|
-
Fragment: props.value.renderer.renderer.Fragment,
|
|
4077
4090
|
panelContainer: isDetached.value ? dom.value.detachedContainer : props.value.renderer.panelContainer,
|
|
4078
4091
|
propGetters: propGetters,
|
|
4079
|
-
state: lastStateRef.current
|
|
4092
|
+
state: lastStateRef.current,
|
|
4093
|
+
renderer: props.value.renderer.renderer
|
|
4080
4094
|
};
|
|
4081
4095
|
var render = !getItemsCount(state) && !hasNoResultsSourceTemplateRef.current && props.value.renderer.renderNoResults || props.value.renderer.render;
|
|
4082
4096
|
renderSearchBox(renderProps);
|