UNPKG

chayns-components

Version:

A set of beautiful React components for developing chayns® applications.

82 lines (79 loc) 2.81 kB
"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