UNPKG

nishant-design-system

Version:
94 lines (93 loc) 4.65 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(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } function _extends() { _extends = Object.assign ? Object.assign.bind() : 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); } const TAB_SIZE = Object.freeze({ small: 'small', medium: 'medium' }); exports.TAB_SIZE = TAB_SIZE; const tabSizeOptions = [...Object.keys(TAB_SIZE)]; exports.tabSizeOptions = tabSizeOptions; const 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)))); }); exports.Tab = Tab; Tab.displayName = 'Tab';