zrmc
Version:
ZRMC is an ES7 React wrapper for Material Components Web.
177 lines (143 loc) • 4.7 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
var _objectWithoutProperties2 = require("babel-runtime/helpers/objectWithoutProperties");
var _objectWithoutProperties3 = _interopRequireDefault(_objectWithoutProperties2);
var _classCallCheck2 = require("babel-runtime/helpers/classCallCheck");
var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
var _createClass2 = require("babel-runtime/helpers/createClass");
var _createClass3 = _interopRequireDefault(_createClass2);
var _possibleConstructorReturn2 = require("babel-runtime/helpers/possibleConstructorReturn");
var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);
var _inherits2 = require("babel-runtime/helpers/inherits");
var _inherits3 = _interopRequireDefault(_inherits2);
var _react = require("react");
var _react2 = _interopRequireDefault(_react);
var _propTypes = require("prop-types");
var _propTypes2 = _interopRequireDefault(_propTypes);
var _icon = require("../components/icon");
var _icon2 = _interopRequireDefault(_icon);
var _ = require("../");
var _2 = _interopRequireDefault(_);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/**
* mdc-tab
* See:
* https://material.io/components/web/catalog/tabs/
* http://material-components-web.appspot.com/tabs.html
*
*/
/**
* Copyright (c) 2015-present, CWB SAS
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
var MDC_TAB = "mdc-tab";
var Tab = function (_Component) {
(0, _inherits3.default)(Tab, _Component);
function Tab(props) {
(0, _classCallCheck3.default)(this, Tab);
var _this = (0, _possibleConstructorReturn3.default)(this, (Tab.__proto__ || Object.getPrototypeOf(Tab)).call(this, props));
_this.setRef = function (c) {
_this.ref = c;
};
_this.ref = null;
return _this;
}
(0, _createClass3.default)(Tab, [{
key: "render",
// TODO correct ripple behaviour
value: function render() {
var _props = this.props,
children = _props.children,
active = _props.active,
text = _props.text,
icon = _props.icon,
href = _props.href,
tabId = _props.tabId,
onTabSelect = _props.onTabSelect,
color = _props.color,
props = (0, _objectWithoutProperties3.default)(_props, ["children", "active", "text", "icon", "href", "tabId", "onTabSelect", "color"]);
var classes = MDC_TAB;
if (active) {
classes += " mdc-tab--active";
}
var i = "";
if (icon) {
i = _react2.default.createElement(_icon2.default, { name: icon, className: "mdc-tab__icon", "aria-hidden": "true" });
}
var txt = text;
if (!text) {
txt = children;
}
if (color) {
if (!props.style) {
props.style = {};
}
props.style.color = color;
}
var indicator = "mdc-tab-indicator";
if (active) {
indicator += " mdc-tab-indicator--active";
}
var element = _react2.default.createElement(
"button",
{
className: classes,
href: href,
onClick: function onClick() {
onTabSelect(text, tabId);
},
ref: this.setRef,
"aria-selected": active,
tabIndex: active ? 0 : -1,
role: "tab"
},
_react2.default.createElement(
"div",
{ className: "mdc-tab__content" },
i,
_react2.default.createElement(
"span",
{ className: "mdc-tab__text-label" },
txt
)
),
_react2.default.createElement(
"span",
{ className: indicator },
_react2.default.createElement("span", { className: "mdc-tab-indicator__content mdc-tab-indicator__content--underline" })
)
);
return _2.default.render(element, props);
}
}]);
return Tab;
}(_react.Component);
Tab.defaultProps = {
mdcElement: MDC_TAB,
children: null,
active: false,
ripple: false,
text: null,
icon: null,
href: null,
tabId: 0,
onTabSelect: null,
color: null
};
Tab.propTypes = {
mdcElement: _propTypes2.default.string,
children: _propTypes2.default.string,
active: _propTypes2.default.bool,
ripple: _propTypes2.default.bool,
text: _propTypes2.default.string,
icon: _propTypes2.default.string,
href: _propTypes2.default.string,
tabId: _propTypes2.default.number,
onTabSelect: _propTypes2.default.func,
color: _propTypes2.default.string
};
exports.default = Tab;