UNPKG

@spaced-out/ui-design-system

Version:
131 lines (130 loc) 5.26 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 _TruncatedTextWithTooltip = require("../../TruncatedTextWithTooltip"); var _TabModule = _interopRequireDefault(require("./Tab.module.css")); var _jsxRuntime = require("react/jsx-runtime"); 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); } 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, maxWidth, elevation, testId, ...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?.({ tabId, label }); onClick?.(e); tabRef.current?.blur(); } }; return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Button.UnstyledButton, { ...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: { maxWidth }, tabIndex: disabled ? -1 : 0, ref: tabRef, testId: testId, children: /*#__PURE__*/(0, _jsxRuntime.jsxs)("span", { className: (0, _classify.classify)(_TabModule.default.iconTextWrap, { [_TabModule.default.selected]: selected === true, [_TabModule.default.disabled]: disabled === true }, classNames?.iconTextWrap), "data-testid": testId ? `${testId}__content` : undefined, children: [iconName ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_Icon.Icon, { name: iconName, type: iconType, size: size, className: (0, _classify.classify)(_TabModule.default.icon, { [_TabModule.default.disabled]: disabled === true }), testId: testId ? `${testId}__icon` : undefined }) : null, label && /*#__PURE__*/(0, _jsxRuntime.jsx)(_jsxRuntime.Fragment, { children: size === TAB_SIZE.medium ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_Text.ButtonTextMedium, { color: _typography.TEXT_COLORS.secondary, className: (0, _classify.classify)(_TabModule.default.tabContainer, { [_TabModule.default.disabled]: disabled === true }), testId: testId ? `${testId}__text` : undefined, children: /*#__PURE__*/(0, _jsxRuntime.jsx)("div", { style: { maxWidth }, children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_TruncatedTextWithTooltip.TruncatedTextWithTooltip, { line: 1, tooltip: { body: label, elevation }, testId: testId ? `${testId}__tooltip` : undefined, children: label }) }) }) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_Text.ButtonTextSmall, { color: _typography.TEXT_COLORS.secondary, className: (0, _classify.classify)(_TabModule.default.tabContainer, { [_TabModule.default.selected]: selected === true, [_TabModule.default.disabled]: disabled === true }), testId: testId ? `${testId}__text` : undefined, children: /*#__PURE__*/(0, _jsxRuntime.jsx)("div", { style: { maxWidth }, children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_TruncatedTextWithTooltip.TruncatedTextWithTooltip, { line: 1, tooltip: { body: label, elevation }, testId: testId ? `${testId}__tooltip` : undefined, children: label }) }) }) })] }) }); }); Tab.displayName = 'Tab';