instantsearch-ui-components
Version:
Common UI components for InstantSearch.
77 lines (76 loc) • 4.31 kB
JavaScript
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.createRelatedProductsComponent = createRelatedProductsComponent;
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
var _lib = require("../lib");
var _recommendShared = require("./recommend-shared");
var _excluded = ["classNames", "emptyComponent", "headerComponent", "itemComponent", "layout", "items", "status", "translations", "sendEvent"];
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
function createRelatedProductsComponent(_ref) {
var createElement = _ref.createElement,
Fragment = _ref.Fragment;
return function RelatedProducts(userProps) {
var _userProps$classNames = userProps.classNames,
classNames = _userProps$classNames === void 0 ? {} : _userProps$classNames,
_userProps$emptyCompo = userProps.emptyComponent,
EmptyComponent = _userProps$emptyCompo === void 0 ? (0, _recommendShared.createDefaultEmptyComponent)({
createElement: createElement,
Fragment: Fragment
}) : _userProps$emptyCompo,
_userProps$headerComp = userProps.headerComponent,
HeaderComponent = _userProps$headerComp === void 0 ? (0, _recommendShared.createDefaultHeaderComponent)({
createElement: createElement,
Fragment: Fragment
}) : _userProps$headerComp,
_userProps$itemCompon = userProps.itemComponent,
ItemComponent = _userProps$itemCompon === void 0 ? (0, _recommendShared.createDefaultItemComponent)({
createElement: createElement,
Fragment: Fragment
}) : _userProps$itemCompon,
_userProps$layout = userProps.layout,
Layout = _userProps$layout === void 0 ? (0, _recommendShared.createListComponent)({
createElement: createElement,
Fragment: Fragment
}) : _userProps$layout,
items = userProps.items,
status = userProps.status,
userTranslations = userProps.translations,
sendEvent = userProps.sendEvent,
props = (0, _objectWithoutProperties2.default)(userProps, _excluded);
var translations = _objectSpread({
title: 'Related products',
sliderLabel: 'Related products'
}, userTranslations);
var cssClasses = {
root: (0, _lib.cx)('ais-RelatedProducts', classNames.root),
emptyRoot: (0, _lib.cx)('ais-RelatedProducts', classNames.root, 'ais-RelatedProducts--empty', classNames.emptyRoot, props.className),
title: (0, _lib.cx)('ais-RelatedProducts-title', classNames.title),
container: (0, _lib.cx)('ais-RelatedProducts-container', classNames.container),
list: (0, _lib.cx)('ais-RelatedProducts-list', classNames.list),
item: (0, _lib.cx)('ais-RelatedProducts-item', classNames.item)
};
if (items.length === 0 && status === 'idle') {
return createElement("section", (0, _extends2.default)({}, props, {
className: cssClasses.emptyRoot
}), createElement(EmptyComponent, null));
}
return createElement("section", (0, _extends2.default)({}, props, {
className: cssClasses.root
}), createElement(HeaderComponent, {
classNames: cssClasses,
items: items,
translations: translations
}), createElement(Layout, {
classNames: cssClasses,
itemComponent: ItemComponent,
items: items,
sendEvent: sendEvent
}));
};
}