@alifd/meet-react
Version:
Fusion Mobile React UI System Component
84 lines (83 loc) • 5.55 kB
JavaScript
;
exports.__esModule = true;
exports.default = void 0;
var _tslib = require("tslib");
var _react = _interopRequireWildcard(require("react"));
var _classnames = _interopRequireDefault(require("classnames"));
var _meetReactComponentOne = require("@alifd/meet-react-component-one");
var _view = _interopRequireDefault(require("../view"));
var _icon = _interopRequireDefault(require("../icon"));
var _tab = require("./tab");
var _hooks = require("../utils/hooks");
var _utils = require("../utils");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
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); }
var TabItem = function (props, ref) {
var _classNames, _classNames2, _classNames3, _classNames4;
var _props$prefix = props.prefix,
prefix = _props$prefix === void 0 ? 'mt-' : _props$prefix,
className = props.className,
size = props.size,
itemKey = props.itemKey,
_props$title = props.title,
title = _props$title === void 0 ? '' : _props$title,
_props$icon = props.icon,
icon = _props$icon === void 0 ? '' : _props$icon,
children = props.children,
_props$onClick = props.onClick,
onClick = _props$onClick === void 0 ? function () {} : _props$onClick,
_props$renderContent = props.renderContent,
renderContent = _props$renderContent === void 0 ? null : _props$renderContent,
others = (0, _tslib.__rest)(props, ["prefix", "className", "size", "itemKey", "title", "icon", "children", "onClick", "renderContent"]);
var _useContext = (0, _react.useContext)(_tab.TabContext),
activeKey = _useContext.activeKey,
change = _useContext.change,
fullWidth = _useContext.fullWidth,
shape = _useContext.shape,
activeLineType = _useContext.activeLineType;
var active = "" + activeKey === "" + itemKey;
var clsPrefix = prefix + "tab-item";
var curItemId = (0, _hooks.useGuid)('tab-item-');
var clses = {
tab: (0, _classnames.default)(clsPrefix, clsPrefix + "--" + size, clsPrefix + "--" + shape, (_classNames = {}, _classNames[clsPrefix + "--active"] = active, _classNames[clsPrefix + "--active-" + shape] = active, _classNames[clsPrefix + "--fullwidth"] = fullWidth, _classNames), className),
activeLine: (0, _classnames.default)(clsPrefix + "-active-line", clsPrefix + "-active-line--" + activeLineType, clsPrefix + "-active-line--" + activeLineType + "-" + size),
tabIcon: (0, _classnames.default)(clsPrefix + "-icon", clsPrefix + "-icon--" + size, clsPrefix + "-icon--" + shape, (_classNames2 = {}, _classNames2[clsPrefix + "-icon--active"] = active, _classNames2[clsPrefix + "-icon--active-" + shape] = active, _classNames2)),
tabText: (0, _classnames.default)(clsPrefix + "-text", clsPrefix + "-text--" + size, clsPrefix + "-text--" + shape, (_classNames3 = {}, _classNames3[clsPrefix + "-text--active"] = active, _classNames3[clsPrefix + "-text--active-" + size] = active && shape !== 'capsule', _classNames3[clsPrefix + "-text--active-" + shape] = active, _classNames3))
};
return /*#__PURE__*/(0, _react.createElement)(_view.default, _extends({}, others, {
id: curItemId,
ref: ref,
className: clses.tab,
onClick: function handleClick(e) {
if (onClick) {
onClick(Object.assign(Object.assign({}, e), {
itemKey: itemKey
}));
}
change(itemKey);
}
}), renderContent ? renderContent({
title: title,
icon: icon,
active: active
}) : /*#__PURE__*/(0, _react.createElement)(_react.Fragment, null, icon ? /*#__PURE__*/(0, _react.createElement)(_icon.default, {
className: clses.tabIcon,
name: icon
}) : null, function renderTitle() {
if ((0, _react.isValidElement)(title)) {
return /*#__PURE__*/(0, _react.createElement)(_view.default, null, title);
} else if ((0, _utils.isString)(title)) {
return /*#__PURE__*/(0, _react.createElement)(_meetReactComponentOne.Text, {
numberOfLines: 1,
className: clses.tabText
}, title);
}
return null;
}()), shape !== 'capsule' && /*#__PURE__*/(0, _react.createElement)(_view.default, {
className: (0, _classnames.default)(clses.activeLine, (_classNames4 = {}, _classNames4[clsPrefix + "-active-line--enter"] = active, _classNames4[clsPrefix + "-active-line--exit"] = !active, _classNames4))
}));
};
TabItem.displayName = 'Tab.Item';
var _default = exports.default = /*#__PURE__*/(0, _react.forwardRef)(TabItem);