UNPKG

@mapbox/mr-ui

Version:

UI components for Mapbox projects

53 lines (52 loc) 1.78 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = TabItem; var _react = _interopRequireDefault(require("react")); var _classnames = _interopRequireDefault(require("classnames")); var _capitalize = _interopRequireDefault(require("../utils/capitalize")); var _tabsConstants = require("./tabs-constants"); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function TabItem(_ref) { let { active = false, disabled = false, themeTabItem, size, tabBorder, label, id } = _ref; const itemClassesArray = themeTabItem.split(' '); // disabled tab should alway be gray, so we remove all color classes for it const noneColorClasses = itemClassesArray.filter(c => !c.startsWith('color-') && !c.startsWith('bg-')); const colorClasses = itemClassesArray.filter(c => c.startsWith('color-') || c.startsWith('bg-')).join(' '); const itemClasses = (0, _classnames.default)(`block relative`, noneColorClasses, { [colorClasses]: !disabled, 'color-gray-light cursor-default': disabled, 'cursor-default': active, 'is-active': active && !disabled, 'border-b border--transparent border--gray-dark-on-active': tabBorder }); label = label || (0, _capitalize.default)(id); const getHeight = () => { if (!tabBorder) { return undefined; } switch (size) { case _tabsConstants.SIZE_SMALL: return 36; case _tabsConstants.SIZE_LARGE: return 48; default: return 42; } }; return /*#__PURE__*/_react.default.createElement("span", { className: (0, _classnames.default)('block relative flex flex--center-cross', itemClasses), style: { height: getHeight() } }, label); }