wix-style-react
Version:
wix-style-react
165 lines (164 loc) • 5.46 kB
JavaScript
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
exports.__esModule = true;
exports.default = void 0;
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
var _react = _interopRequireDefault(require("react"));
var _propTypes = _interopRequireDefault(require("prop-types"));
var _Text = _interopRequireDefault(require("../Text"));
var _constants = require("./constants");
var _Tab = _interopRequireDefault(require("./Tab"));
var _CardFolderTabsSt = require("./CardFolderTabs.st.css");
var _Focusable = require("../common/Focusable");
var _jsxFileName = "/home/builduser/work/a9c1ac8876d5057c/packages/wix-style-react/dist/cjs/CardFolderTabs/CardFolderTabs.js";
var tabButton = _ref => {
var {
className,
id,
name,
disabled,
selected,
maxTabWidth,
onTabChange,
focusableOnFocus,
focusableOnBlur,
fluid,
ellipsis,
size,
beforeSelected,
afterSelected
} = _ref;
return /*#__PURE__*/_react.default.createElement("button", {
"data-hook": _constants.dataHooks.tabButton(id),
className: (0, _CardFolderTabsSt.st)(_CardFolderTabsSt.classes.button, {
selected,
disabled,
fluid,
beforeSelected,
afterSelected
}, className),
style: fluid ? {} : {
[_CardFolderTabsSt.vars['maxWidth']]: maxTabWidth
},
onClick: () => onTabChange(id),
disabled: disabled,
key: id,
onFocus: focusableOnFocus,
onBlur: focusableOnBlur,
__self: void 0,
__source: {
fileName: _jsxFileName,
lineNumber: 26,
columnNumber: 5
}
}, /*#__PURE__*/_react.default.createElement(_Text.default, {
dataHook: _constants.dataHooks.tabText(id),
ellipsis: ellipsis,
className: _CardFolderTabsSt.classes.buttonText,
size: size,
__self: void 0,
__source: {
fileName: _jsxFileName,
lineNumber: 46,
columnNumber: 7
}
}, name));
};
var TabButton = (0, _Focusable.withFocusable)(tabButton);
class CardFolderTabs extends _react.default.PureComponent {
render() {
var {
dataHook,
className,
children,
activeId,
maxTabWidth,
onTabChange,
fluid,
ellipsis,
size
} = this.props;
var cardFolderTabs = Array.isArray(children) ? children : [children];
var selectedTabIndex = cardFolderTabs.findIndex(tab => activeId === tab.props.id);
return /*#__PURE__*/_react.default.createElement("div", {
className: (0, _CardFolderTabsSt.st)(_CardFolderTabsSt.classes.root, {
fluid
}, className),
"data-hook": dataHook,
__self: this,
__source: {
fileName: _jsxFileName,
lineNumber: 78,
columnNumber: 7
}
}, /*#__PURE__*/_react.default.createElement("div", {
"data-hook": _constants.dataHooks.header,
className: _CardFolderTabsSt.classes.headerWrapper,
__self: this,
__source: {
fileName: _jsxFileName,
lineNumber: 82,
columnNumber: 9
}
}, cardFolderTabs.map((_ref2, index) => {
var {
props
} = _ref2;
return /*#__PURE__*/_react.default.createElement(TabButton, (0, _extends2.default)({
key: props.id
}, props, {
selected: activeId === props.id,
beforeSelected: index === selectedTabIndex - 1,
afterSelected: index === selectedTabIndex + 1,
maxTabWidth: maxTabWidth,
fluid: fluid,
ellipsis: ellipsis,
size: size,
onTabChange: typeof onTabChange === 'function' ? onTabChange : undefined,
__self: this,
__source: {
fileName: _jsxFileName,
lineNumber: 84,
columnNumber: 13
}
}));
})), /*#__PURE__*/_react.default.createElement("div", {
"data-hook": _constants.dataHooks.content,
className: _CardFolderTabsSt.classes.tabContentWrapper,
__self: this,
__source: {
fileName: _jsxFileName,
lineNumber: 100,
columnNumber: 9
}
}, cardFolderTabs.filter(tab => activeId === tab.props.id)));
}
}
CardFolderTabs.displayName = 'CardFolderTabs';
CardFolderTabs.propTypes = {
/** Applies a data-hook HTML attribute that can be used in the tests. */
dataHook: _propTypes.default.string,
/** Specifies a CSS class name to be appended to the component’s root element. */
className: _propTypes.default.string,
/** Specifies an id of a currently visible tab. */
activeId: _propTypes.default.string.isRequired,
/** Defines a callback function which is called on tab change. An id of a newly selected tab is passed as a parameter. */
onTabChange: _propTypes.default.func,
/** Defines a maximum width of a tab button. */
maxTabWidth: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string]),
/** Stretches tabs to fill a 100% of a parent container width */
fluid: _propTypes.default.bool,
/** Specifies whether text that exceeds tab width is truncated with ellipsis. If false, text will wrap to another line. */
ellipsis: _propTypes.default.bool,
/** Controls tab label font size */
size: _propTypes.default.oneOf(['medium', 'small'])
};
CardFolderTabs.defaultProps = {
maxTabWidth: '138px',
ellipsis: true,
size: 'medium',
fluid: false
};
CardFolderTabs.Tab = _Tab.default;
var _default = exports.default = CardFolderTabs;
//# sourceMappingURL=CardFolderTabs.js.map