UNPKG

zrmc

Version:

ZRMC is an ES7 React wrapper for Material Components Web.

209 lines (167 loc) 5.83 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var _extends2 = require("babel-runtime/helpers/extends"); var _extends3 = _interopRequireDefault(_extends2); 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 _formField = require("./formField"); var _formField2 = _interopRequireDefault(_formField); var _ = require("../"); var _2 = _interopRequireDefault(_); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } /** * mdc-switch * * See: * https://material.io/develop/web/components/input-controls/switches/ * */ /** * 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_SWITCH = "mdc-switch"; var Switch = function (_Component) { (0, _inherits3.default)(Switch, _Component); function Switch() { var _ref; var _temp, _this, _ret; (0, _classCallCheck3.default)(this, Switch); 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 = Switch.__proto__ || Object.getPrototypeOf(Switch)).call.apply(_ref, [this].concat(args))), _this), _this.state = { checked: _this.props.checked }, _this.handleClick = function (event) { event.stopPropagation(); _this.handleChange(); }, _this.handleChange = function () { var checked = !_this.state.checked; _this.setState({ checked: checked }); if (_this.props.onChange) { _this.props.onChange(checked); } }, _temp), (0, _possibleConstructorReturn3.default)(_this, _ret); } (0, _createClass3.default)(Switch, [{ key: "render", value: function render() { var _props = this.props, disabled = _props.disabled, formField = _props.formField, id = _props.id, label = _props.label, onChange = _props.onChange, props = (0, _objectWithoutProperties3.default)(_props, ["disabled", "formField", "id", "label", "onChange"]); var checked = this.state.checked; var classes = MDC_SWITCH; if (disabled) { classes += " mdc-switch--disabled"; } if (checked) { classes += " mdc-switch--checked"; } var cid = _2.default.generateId(id); var l = ""; if (label) { /* eslint-disable jsx-a11y/label-has-for */ l = _react2.default.createElement( "label", { htmlFor: cid, className: "mdc-switch-label" }, label ); /* eslint-enable jsx-a11y/label-has-for */ } var inputProps = { disabled: disabled }; if (onChange) { inputProps.checked = checked; } else { inputProps.defaultChecked = checked; } var element = _react2.default.createElement( "div", { className: classes, onClick: this.handleClick }, _react2.default.createElement("div", { className: "mdc-switch__track" }), _react2.default.createElement( "div", { className: "mdc-switch__thumb-underlay" }, _react2.default.createElement( "div", { className: "mdc-switch__thumb" }, _react2.default.createElement("input", (0, _extends3.default)({ id: cid, type: "checkbox", className: "mdc-switch__native-control", role: "switch" /* onChange={this.handleChange} */ }, inputProps)) ) ) ); if (label) { if (formField) { element = _react2.default.createElement( _formField2.default, null, element, l ); } else { var cn = "zrmc-switch-wrapper"; element = _react2.default.createElement( "div", { className: cn }, element, l ); } } return _2.default.render(element, props); } }], [{ key: "getDerivedStateFromProps", value: function getDerivedStateFromProps(nextProps, prevState) { var checked = nextProps.checked; if (checked !== prevState.checked && !nextProps.derivedState) { return { checked: checked }; } return null; } }]); return Switch; }(_react.Component); Switch.defaultProps = { checked: false, disabled: false, formField: false, id: null, label: null, mdcElement: MDC_SWITCH, onChange: null }; Switch.propTypes = { checked: _propTypes2.default.bool, disabled: _propTypes2.default.bool, formField: _propTypes2.default.bool, id: _propTypes2.default.string, label: _propTypes2.default.string, mdcElement: _propTypes2.default.string, onChange: _propTypes2.default.func }; exports.default = Switch;