UNPKG

instantsearch-ui-components

Version:

Common UI components for InstantSearch.

89 lines (88 loc) 4.73 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.createChatHeaderComponent = createChatHeaderComponent; 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 _Button = require("../Button"); var _icons = require("./icons"); var _excluded = ["maximized", "onToggleMaximize", "onClose", "onClear", "canClear", "closeIconComponent", "minimizeIconComponent", "maximizeIconComponent", "titleIconComponent", "classNames", "translations"]; 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 createChatHeaderComponent(_ref) { var createElement = _ref.createElement; var Button = (0, _Button.createButtonComponent)({ createElement: createElement }); return function ChatHeader(_ref2) { var _ref2$maximized = _ref2.maximized, maximized = _ref2$maximized === void 0 ? false : _ref2$maximized, onToggleMaximize = _ref2.onToggleMaximize, onClose = _ref2.onClose, onClear = _ref2.onClear, _ref2$canClear = _ref2.canClear, canClear = _ref2$canClear === void 0 ? false : _ref2$canClear, CloseIconComponent = _ref2.closeIconComponent, MinimizeIconComponent = _ref2.minimizeIconComponent, MaximizeIconComponent = _ref2.maximizeIconComponent, TitleIconComponent = _ref2.titleIconComponent, _ref2$classNames = _ref2.classNames, classNames = _ref2$classNames === void 0 ? {} : _ref2$classNames, userTranslations = _ref2.translations, props = (0, _objectWithoutProperties2.default)(_ref2, _excluded); var translations = _objectSpread({ title: 'Chat', minimizeLabel: 'Minimize chat', maximizeLabel: 'Maximize chat', closeLabel: 'Close chat', clearLabel: 'Clear' }, userTranslations); var defaultMaximizeIcon = maximized ? createElement(_icons.MinimizeIconComponent, { createElement: createElement }) : createElement(_icons.MaximizeIconComponent, { createElement: createElement }); return createElement("div", (0, _extends2.default)({ className: (0, _lib.cx)('ais-ChatHeader', classNames.root, props.className) }, props), createElement("span", { className: (0, _lib.cx)('ais-ChatHeader-title', classNames.title) }, createElement("span", { className: (0, _lib.cx)('ais-ChatHeader-titleIcon', classNames.titleIcon) }, TitleIconComponent ? createElement(TitleIconComponent, null) : createElement(_icons.SparklesIconComponent, { createElement: createElement, width: 20, height: 20 })), translations.title), createElement("div", { className: (0, _lib.cx)('ais-ChatHeader-actions') }, onClear && createElement(Button, { variant: "ghost", size: "sm", className: (0, _lib.cx)('ais-ChatHeader-clear', classNames.clear), onClick: onClear, disabled: !canClear }, translations.clearLabel), createElement(Button, { variant: "ghost", size: "sm", iconOnly: true, className: (0, _lib.cx)('ais-ChatHeader-maximize', classNames.maximize), onClick: onToggleMaximize, "aria-label": maximized ? translations.minimizeLabel : translations.maximizeLabel }, MaximizeIconComponent ? createElement(MaximizeIconComponent, { maximized: maximized }) : defaultMaximizeIcon), createElement(Button, { variant: "ghost", size: "sm", iconOnly: true, className: (0, _lib.cx)('ais-ChatHeader-close', classNames.close), onClick: onClose, "aria-label": translations.closeLabel, title: translations.closeLabel }, CloseIconComponent ? createElement(CloseIconComponent, null) : createElement(_icons.CloseIconComponent, { createElement: createElement })))); }; }