UNPKG

zrmc

Version:

ZRMC is an ES7 React wrapper for Material Components Web.

177 lines (143 loc) 4.7 kB
"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;