@shakthillc/components
Version:
React generic components for shakthi products
115 lines (101 loc) • 3.67 kB
JavaScript
import _Object$getPrototypeOf from "babel-runtime/core-js/object/get-prototype-of";
import _classCallCheck from "babel-runtime/helpers/classCallCheck";
import _createClass from "babel-runtime/helpers/createClass";
import _possibleConstructorReturn from "babel-runtime/helpers/possibleConstructorReturn";
import _inherits from "babel-runtime/helpers/inherits";
import React from "react";
import PropTypes from "prop-types";
import style from "./RadioGroupAvatar.module.css";
import Avatar from "./../Avatar/Avatar";
var RadioGroupAvatar = function (_React$Component) {
_inherits(RadioGroupAvatar, _React$Component);
function RadioGroupAvatar(props) {
_classCallCheck(this, RadioGroupAvatar);
var _this = _possibleConstructorReturn(this, (RadioGroupAvatar.__proto__ || _Object$getPrototypeOf(RadioGroupAvatar)).call(this, props));
_this.state = {
selectedOption: props.selectedOption
};
return _this;
}
_createClass(RadioGroupAvatar, [{
key: "handleOptionChange",
value: function handleOptionChange(id, data) {
var onChange = this.props.onChange;
this.setState({
selectedOption: id
});
onChange && onChange(id, data);
}
}, {
key: "componentDidUpdate",
value: function componentDidUpdate(prevProps, prevState) {
var _props = this.props,
selectedOption = _props.selectedOption,
options = _props.options;
if (options.length > 0 && (prevProps.selectedOption == "" || prevProps.selectedOption != selectedOption)) {
this.setState({ selectedOption: selectedOption });
}
}
}, {
key: "render",
value: function render() {
var _this2 = this;
var _props2 = this.props,
options = _props2.options,
_props2$id = _props2.id,
id = _props2$id === undefined ? "defaultRadio" : _props2$id;
var optionHtml = options.map(function (obj, i) {
return React.createElement(
"label",
{ key: i, className: style["radio-button"] },
React.createElement(
"div",
{ className: style["radio-button__holder"] },
React.createElement(Avatar, { size: "32px", imageUrl: obj.url, text: obj.value }),
React.createElement(
"div",
{ style: { cursor: "pointer" } },
obj.value
)
),
React.createElement("input", {
type: "radio",
checked: _this2.state.selectedOption === obj.id,
name: "radio",
onClick: _this2.handleOptionChange.bind(_this2, obj.id, obj)
}),
React.createElement("span", {
className: style["radio-button__checkmark"],
value: obj.value,
id: obj.id,
"data-id": 'option' + i
})
);
});
return React.createElement(
"div",
{ "data-id": id, className: style["radio-group"] },
optionHtml
);
}
}]);
return RadioGroupAvatar;
}(React.Component);
export default RadioGroupAvatar;
RadioGroupAvatar.defaultProps = {
isChecked: false,
disabled: false,
dataId: "checkBoxComp",
label: "CheckBox",
onChange: function onChange(id, data) {
console.log("inbuilt", id, data);
},
options: [{ id: "option1", value: "Kevin" }, { id: "option2", value: "rick", url: "https://picsum.photos/200/300" }, { id: "option3", value: "morty" }, { id: "option4", value: "Jenny", url: "" }]
};
RadioGroupAvatar.propTypes = {
isChecked: PropTypes.bool,
disabled: PropTypes.bool,
dataId: PropTypes.string,
label: PropTypes.string,
options: PropTypes.array
};