UNPKG

@massds/mayflower-react

Version:

React versions of Mayflower design system UI components

104 lines (89 loc) 3.12 kB
"use strict"; exports.__esModule = true; exports["default"] = void 0; var _react = _interopRequireDefault(require("react")); var _propTypes = _interopRequireDefault(require("prop-types")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } /** * Tabs module. * @module @massds/mayflower-react/Tabs * @requires module:@massds/mayflower-assets/scss/02-molecules/tabs */ // eslint-disable-next-line import/no-unresolved var Tabs = function Tabs(_ref) { var handleClick = _ref.handleClick, tabs = _ref.tabs, selectedTab = _ref.selectedTab; var isClickFunction = typeof handleClick === 'function'; var handleAllClick = function handleAllClick(e) { var selTab = e.target; if (selTab && selTab.scrollIntoView) { selTab.scrollIntoView({ behavior: 'smooth', block: 'center', inline: 'center' }); } // invokes custom function if passed in the component if (isClickFunction) { handleClick(selTab.name); } }; return /*#__PURE__*/_react["default"].createElement("div", { className: "ma__search--tabs" }, /*#__PURE__*/_react["default"].createElement("div", { className: "main-content--two" }, /*#__PURE__*/_react["default"].createElement("div", { className: "ma__tabs" }, tabs.map(function (tab) { var value = tab.value, label = tab.label, ariaLabel = tab.ariaLabel, href = tab.href; var isSelected = selectedTab === value ? 'is-selected' : ''; if (isClickFunction) { return /*#__PURE__*/_react["default"].createElement("button", { type: "button", key: "tab_" + value, className: "ma__tabs-item " + isSelected, name: value, onClick: function onClick(e) { return handleAllClick(e); }, "aria-label": ariaLabel || value }, label); } return /*#__PURE__*/_react["default"].createElement("a", { key: "tab_" + value, href: href, className: "ma__tabs-item " + isSelected }, label); })))); }; Tabs.propTypes = process.env.NODE_ENV !== "production" ? { /** `handleClick` is a custom callback function that returns the selected tab value. If `handleClick` is passed in as a function, the tabs will be rendered as buttons, otherwise will be rendered anchor links. */ handleClick: _propTypes["default"].func, /** Default tab value rendered as selected. */ selectedTab: _propTypes["default"].string, /** { <br /> `href:` is used as anchor link href for the tab if the handleClick is not passed as a function. <br /> `text:` rendered for the tab <br /> `arialLabel:` for the tab button if `handleClick` is passed as a function <br /> } */ tabs: _propTypes["default"].arrayOf(_propTypes["default"].shape({ value: _propTypes["default"].string.isRequired, label: _propTypes["default"].string.isRequired, href: _propTypes["default"].string, ariaLabel: _propTypes["default"].string })) } : {}; var _default = Tabs; exports["default"] = _default; module.exports = exports.default;