chayns-components
Version:
A set of beautiful React components for developing chayns® applications.
82 lines (79 loc) • 2.81 kB
JavaScript
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
exports.__esModule = true;
exports.default = void 0;
var _clsx = _interopRequireDefault(require("clsx"));
var _propTypes = _interopRequireDefault(require("prop-types"));
var _react = _interopRequireDefault(require("react"));
var _stopPropagationListener = _interopRequireDefault(require("../../utils/stopPropagationListener"));
/* eslint-disable jsx-a11y/label-has-associated-control,react/forbid-prop-types */
const SWITCH_LABEL_STYLE = {
marginRight: '10px'
};
const ToggleButton = /*#__PURE__*/_react.default.forwardRef((props, ref) => {
const {
id,
style,
disabled = false,
children,
label,
onChange,
checked,
className,
defaultChecked,
dangerouslySetLabel,
labelStyle,
labelClassName,
stopPropagation = false
} = props;
let modifiedLabelStyle = labelStyle;
if (label) {
modifiedLabelStyle = {
...labelStyle,
...SWITCH_LABEL_STYLE
};
}
return /*#__PURE__*/_react.default.createElement("div", {
className: (0, _clsx.default)('cc__switch', className)
}, /*#__PURE__*/_react.default.createElement("input", {
key: "input",
type: "checkbox",
className: "switch",
ref: ref,
onChange: onChange,
id: id,
disabled: disabled,
checked: checked,
defaultChecked: defaultChecked,
style: style,
onClick: stopPropagation ? _stopPropagationListener.default : null
}), /*#__PURE__*/_react.default.createElement("label", {
key: "label",
className: labelClassName,
htmlFor: id
// eslint-disable-next-line react/no-danger
,
dangerouslySetInnerHTML: dangerouslySetLabel,
style: modifiedLabelStyle,
onClick: stopPropagation ? _stopPropagationListener.default : null
}), !dangerouslySetLabel ? children || label || '' : null);
});
ToggleButton.propTypes = {
id: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string]).isRequired,
style: _propTypes.default.object,
className: _propTypes.default.string,
labelStyle: _propTypes.default.object,
labelClassName: _propTypes.default.string,
label: _propTypes.default.oneOfType([_propTypes.default.node, _propTypes.default.arrayOf(_propTypes.default.node)]),
children: _propTypes.default.oneOfType([_propTypes.default.node, _propTypes.default.arrayOf(_propTypes.default.node)]),
onChange: _propTypes.default.func,
checked: _propTypes.default.bool,
defaultChecked: _propTypes.default.bool,
disabled: _propTypes.default.bool,
dangerouslySetLabel: _propTypes.default.object,
stopPropagation: _propTypes.default.bool
};
ToggleButton.displayName = 'ToggleButton';
var _default = ToggleButton;
exports.default = _default;
//# sourceMappingURL=ToggleButton.js.map