box-ui-elements-mlh
Version:
84 lines (78 loc) • 3.54 kB
JavaScript
function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
import * as React from 'react';
import { FormattedMessage } from 'react-intl';
import classnames from 'classnames';
import PlainButton from '../plain-button/PlainButton'; // @ts-ignore flow import
import DropdownMenu, { MenuToggle } from '../dropdown-menu';
import { Menu, SelectMenuItem } from '../menu';
import messages from './messages';
import './CategorySelector.scss';
var CategorySelectorComponent = function CategorySelectorComponent(_ref) {
var measureRef = _ref.measureRef,
moreRef = _ref.moreRef,
className = _ref.className,
categories = _ref.categories,
maxLinks = _ref.maxLinks,
currentCategory = _ref.currentCategory,
categoryProps = _ref.categoryProps,
onSelect = _ref.onSelect;
var linkCategories = categories.slice(0, maxLinks);
var overflowCategories = categories.slice(maxLinks);
var selectedOverflow = overflowCategories.find(function (_ref2) {
var value = _ref2.value;
return currentCategory === value;
});
var renderCategory = function renderCategory(_ref3) {
var value = _ref3.value,
displayText = _ref3.displayText;
return /*#__PURE__*/React.createElement("span", _extends({
key: value,
className: classnames('bdl-CategorySelector-pill', {
'is-selected': value === currentCategory
}),
"data-category": value,
"data-resin-target": "selectcategory",
"data-resin-template_category": displayText,
"data-testid": "template-category-".concat(value),
onClick: function onClick() {
return onSelect(value);
},
onKeyPress: function onKeyPress(event) {
if (event.key === 'Enter' || event.key === ' ') onSelect(value);
},
role: "button",
tabIndex: 0
}, categoryProps), displayText);
};
return /*#__PURE__*/React.createElement("div", {
ref: measureRef,
className: classnames(className, 'bdl-CategorySelector')
}, /*#__PURE__*/React.createElement("div", {
className: "bdl-CategorySelector-links"
}, linkCategories.map(renderCategory)), /*#__PURE__*/React.createElement("div", {
ref: moreRef,
className: classnames('bdl-CategorySelector-more', {
hide: maxLinks >= categories.length
})
}, /*#__PURE__*/React.createElement(DropdownMenu, {
className: "dropdownWrapper",
isRightAligned: true
}, /*#__PURE__*/React.createElement(PlainButton, {
className: classnames('bdl-CategorySelector-more-label', {
'is-selected': selectedOverflow
})
}, /*#__PURE__*/React.createElement(MenuToggle, null, selectedOverflow ? selectedOverflow.displayText : /*#__PURE__*/React.createElement(FormattedMessage, messages.more))), /*#__PURE__*/React.createElement(Menu, null, overflowCategories.map(function (_ref4) {
var value = _ref4.value,
displayText = _ref4.displayText;
return /*#__PURE__*/React.createElement(SelectMenuItem, {
key: value,
"data-testid": "template-category-more-".concat(value),
isSelected: value === currentCategory,
onClick: function onClick() {
return onSelect(value);
}
}, displayText);
})))));
};
export default CategorySelectorComponent;
//# sourceMappingURL=CategorySelectorComponent.js.map