UNPKG

zrmc

Version:

ZRMC is an ES7 React wrapper for Material Components Web.

188 lines (154 loc) 5.62 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = undefined; 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 _ = require("../"); var _2 = _interopRequireDefault(_); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } /** * mdc-icon-toggle * * See: * https://material.io/develop/web/components/buttons/icon-toggle-buttons/ * */ var MDC_ICONTOGGLE = "mdc-icon-toggle"; /** * 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 IconToggle = function (_Component) { (0, _inherits3.default)(IconToggle, _Component); function IconToggle() { var _ref; var _temp, _this, _ret; (0, _classCallCheck3.default)(this, IconToggle); for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } return _ret = (_temp = (_this = (0, _possibleConstructorReturn3.default)(this, (_ref = IconToggle.__proto__ || Object.getPrototypeOf(IconToggle)).call.apply(_ref, [this].concat(args))), _this), _this.state = { pressed: _this.props.pressed }, _this.handleClick = function (event) { event.preventDefault(); var pressed = !_this.state.pressed; _this.setState({ pressed: pressed }); if (_this.props.onChange) { _this.props.onChange(pressed); } }, _temp), (0, _possibleConstructorReturn3.default)(_this, _ret); } (0, _createClass3.default)(IconToggle, [{ key: "render", value: function render() { var _this2 = this; var _props = this.props, disabled = _props.disabled, name = _props.name, label = _props.label, labelOff = _props.labelOff, onChange = _props.onChange, color = _props.color, fa = _props.fa, children = _props.children, off = _props.off, props = (0, _objectWithoutProperties3.default)(_props, ["disabled", "name", "label", "labelOff", "onChange", "color", "fa", "children", "off"]); var classes = MDC_ICONTOGGLE; var ch = this.state.pressed ? children : off; if (name) { ch = this.state.pressed ? name : off; classes += " material-icons"; } else if (fa) { var cn = "fa"; var icon = " fa-" + fa; if (this.state.pressed) { if (!off) { cn = "fas"; } } else if (off) { icon = " fa-" + off; } else { cn = "far"; } ch = _react2.default.createElement("i", { className: "" + cn + icon }); } if (disabled) { classes += " mdc-icon-toggle--disabled"; } var style = {}; if (color) { style.color = color; } var l = this.state.pressed ? label : labelOff; var element = _react2.default.createElement( "i", { className: classes, role: "button", "aria-pressed": this.state.pressed, "arria-label": l, tabIndex: "0", style: style, onKeyUp: function onKeyUp(e) { e.preventDefault(); }, onClick: function onClick(e) { if (!disabled) { _this2.handleClick(e); } } }, ch ); return _2.default.render(element, props); } }], [{ key: "getDerivedStateFromProps", value: function getDerivedStateFromProps(nextProps, prevState) { var pressed = nextProps.pressed; if (pressed !== prevState.pressed && !nextProps.derivedState) { return { pressed: pressed }; } return null; } }]); return IconToggle; }(_react.Component); exports.default = IconToggle; IconToggle.defaultProps = { mdcElement: MDC_ICONTOGGLE, pressed: false, disabled: false, label: null, fa: null, children: null, off: null, onChange: null, color: null }; IconToggle.propTypes = { mdcElement: _propTypes2.default.string, pressed: _propTypes2.default.bool, disabled: _propTypes2.default.bool, name: _propTypes2.default.string, fa: _propTypes2.default.string, children: _propTypes2.default.node, off: _propTypes2.default.oneOfType([_propTypes2.default.node, _propTypes2.default.string]), label: _propTypes2.default.string, labelOff: _propTypes2.default.string, onChange: _propTypes2.default.func, color: _propTypes2.default.string };