UNPKG

@spaced-out/ui-design-system

Version:
90 lines (89 loc) 4.04 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.tabSizeOptions = exports.Tab = exports.TAB_SIZE = void 0; var React = _interopRequireWildcard(require("react")); var _typography = require("../../../types/typography"); var _classify = require("../../../utils/classify"); var _Button = require("../../Button"); var _Icon = require("../../Icon"); var _Text = require("../../Text"); var _TabModule = _interopRequireDefault(require("./Tab.module.css")); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; } function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); } const TAB_SIZE = exports.TAB_SIZE = Object.freeze({ small: 'small', medium: 'medium' }); const tabSizeOptions = exports.tabSizeOptions = [...Object.keys(TAB_SIZE)]; const Tab = exports.Tab = /*#__PURE__*/React.forwardRef((_ref, forwardRef) => { let { classNames, onSelect, size = 'medium', selectedTab, disabled = false, tabId, label, iconName, iconType, onClick, width, ...props } = _ref; const tabRef = React.useRef(null); React.useImperativeHandle(forwardRef, () => tabRef.current); const selected = tabId && tabId === selectedTab?.tabId; const onClickHandler = e => { if (!disabled) { e.preventDefault(); onSelect && onSelect({ tabId, label }); onClick && onClick(e); tabRef.current?.blur(); } }; return /*#__PURE__*/React.createElement(_Button.UnstyledButton, _extends({}, props, { disabled: disabled, className: (0, _classify.classify)(_TabModule.default.button, { [_TabModule.default.selected]: selected === true, [_TabModule.default.disabled]: disabled === true, [_TabModule.default.mediumSize]: size === 'medium', [_TabModule.default.smallSize]: size === 'small' }, classNames?.wrapper), onClick: onClickHandler, style: { width }, tabIndex: disabled ? -1 : 0, ref: tabRef }), /*#__PURE__*/React.createElement("span", { className: (0, _classify.classify)(_TabModule.default.iconTextWrap, { [_TabModule.default.selected]: selected === true, [_TabModule.default.disabled]: disabled === true }, classNames?.iconTextWrap) }, iconName ? /*#__PURE__*/React.createElement(_Icon.Icon, { name: iconName, type: iconType, size: size, className: (0, _classify.classify)(_TabModule.default.icon, { [_TabModule.default.disabled]: disabled === true }) }) : null, label && /*#__PURE__*/React.createElement(React.Fragment, null, size === TAB_SIZE.medium ? /*#__PURE__*/React.createElement(_Text.ButtonTextMedium, { color: _typography.TEXT_COLORS.secondary, className: (0, _classify.classify)(_TabModule.default.tabContainer, { [_TabModule.default.disabled]: disabled === true }) }, label) : /*#__PURE__*/React.createElement(_Text.ButtonTextSmall, { color: _typography.TEXT_COLORS.secondary, className: (0, _classify.classify)(_TabModule.default.tabContainer, { [_TabModule.default.selected]: selected === true, [_TabModule.default.disabled]: disabled === true }) }, label)))); }); Tab.displayName = 'Tab';