@massds/mayflower-react
Version:
React versions of Mayflower design system UI components
91 lines (89 loc) • 3.72 kB
JavaScript
"use strict";
exports.__esModule = true;
exports["default"] = void 0;
var _react = _interopRequireDefault(require("react"));
var _propTypes = _interopRequireDefault(require("prop-types"));
function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
function _inheritsLoose(t, o) { t.prototype = Object.create(o.prototype), t.prototype.constructor = t, _setPrototypeOf(t, o); }
function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); } /**
* ButtonToggle module.
* @module @massds/mayflower-react/ButtonToggle
* @requires module:@massds/mayflower-assets/scss/01-atoms/button-toggle
*/
var ButtonToggle = /*#__PURE__*/function (_React$Component) {
function ButtonToggle(props) {
var _this;
_this = _React$Component.call(this, props) || this;
_this.state = {
selected: props.defaultValue
};
return _this;
}
// eslint-disable-next-line camelcase
_inheritsLoose(ButtonToggle, _React$Component);
var _proto = ButtonToggle.prototype;
_proto.UNSAFE_componentWillReceiveProps = function UNSAFE_componentWillReceiveProps(nextProps) {
this.setState({
selected: nextProps.defaultValue
});
};
_proto.onToggleClick = function onToggleClick(event) {
var selected = event.target.value;
if (typeof this.props.onChangeCallback === 'function') {
this.props.onChangeCallback(selected);
}
this.setState({
selected: selected
});
};
_proto.render = function render() {
var _this2 = this;
var _this$props = this.props,
id = _this$props.id,
labelText = _this$props.labelText,
option1 = _this$props.option1,
option2 = _this$props.option2;
var selected = this.state.selected;
return /*#__PURE__*/_react["default"].createElement("span", null, /*#__PURE__*/_react["default"].createElement("label", {
htmlFor: id,
className: "ma__label--inline ma__label--small"
}, labelText), /*#__PURE__*/_react["default"].createElement("button", {
onClick: function onClick(e) {
return _this2.onToggleClick(e);
},
value: option1.value,
type: "button",
className: "ma__button-toggle " + (option1.value === selected && 'ma__button-toggle--selected')
}, option1.text), ' ', "|", /*#__PURE__*/_react["default"].createElement("button", {
onClick: function onClick(e) {
return _this2.onToggleClick(e);
},
value: option2.value,
type: "button",
className: "ma__button-toggle " + (option2.value === selected && 'ma__button-toggle--selected')
}, option2.text));
};
return ButtonToggle;
}(_react["default"].Component);
ButtonToggle.propTypes = process.env.NODE_ENV !== "production" ? {
/** Option 1 for the buttonToggle */
option1: _propTypes["default"].shape({
value: _propTypes["default"].string.isRequired,
text: _propTypes["default"].string.isRequired
}),
/** Option 2 for the buttonToggle */
option2: _propTypes["default"].shape({
value: _propTypes["default"].string.isRequired,
text: _propTypes["default"].string.isRequired
}),
/** An id that specifies which element the label is bound to */
id: _propTypes["default"].string.isRequired,
/** A label text displayed for the buttonToggle */
labelText: _propTypes["default"].string.isRequired,
/** Custom onChange function that receives the selected value */
onChangeCallback: _propTypes["default"].func,
/** Default value selected */
defaultValue: _propTypes["default"].string.isRequired
} : {};
var _default = exports["default"] = ButtonToggle;
module.exports = exports.default;