instantsearch-ui-components
Version:
Common UI components for InstantSearch.
39 lines • 1.71 kB
JavaScript
import _extends from "@babel/runtime/helpers/extends";
import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
var _excluded = ["className", "onSelect", "onApply"];
import { cx } from "../../lib/cx.js";
export function createAutocompleteIndexComponent(_ref) {
var createElement = _ref.createElement;
return function AutocompleteIndex(userProps) {
var items = userProps.items,
HeaderComponent = userProps.HeaderComponent,
ItemComponent = userProps.ItemComponent,
getItemProps = userProps.getItemProps,
_userProps$classNames = userProps.classNames,
classNames = _userProps$classNames === void 0 ? {} : _userProps$classNames;
return createElement("div", {
className: cx('ais-AutocompleteIndex', classNames.root)
}, HeaderComponent && createElement("div", {
className: cx('ais-AutocompleteIndexHeader', classNames.header)
}, createElement(HeaderComponent, {
items: items
})), createElement("ol", {
className: cx('ais-AutocompleteIndexList', classNames.list)
}, items.map(function (item, index) {
var _getItemProps = getItemProps(item, index),
className = _getItemProps.className,
onSelect = _getItemProps.onSelect,
onApply = _getItemProps.onApply,
itemProps = _objectWithoutProperties(_getItemProps, _excluded);
return createElement("li", _extends({
key: "".concat(itemProps.id, ":").concat(item.objectID)
}, itemProps, {
className: cx('ais-AutocompleteIndexItem', classNames.item, className)
}), createElement(ItemComponent, {
item: item,
onSelect: onSelect,
onApply: onApply
}));
})));
};
}