wix-style-react
Version:
184 lines (141 loc) • 7.65 kB
JavaScript
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _react = _interopRequireDefault(require("react"));
var _propTypes = _interopRequireDefault(require("prop-types"));
var _CheckToggleSt = require("./CheckToggle.st.css");
var _constants = require("./constants");
var _Tooltip = _interopRequireDefault(require("../Tooltip"));
var _TooltipCommon = require("../common/PropTypes/TooltipCommon");
var _FocusableHOC = require("wix-ui-core/dist/src/hocs/Focusable/FocusableHOC");
var _ConfirmSmall = _interopRequireDefault(require("wix-ui-icons-common/ConfirmSmall"));
var _Confirm = _interopRequireDefault(require("wix-ui-icons-common/Confirm"));
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
var icon = {
small: /*#__PURE__*/_react["default"].createElement(_ConfirmSmall["default"], null),
medium: /*#__PURE__*/_react["default"].createElement(_Confirm["default"], null)
};
/** CheckToggle */
var CheckToggle = /*#__PURE__*/function (_React$PureComponent) {
(0, _inherits2["default"])(CheckToggle, _React$PureComponent);
var _super = _createSuper(CheckToggle);
function CheckToggle() {
var _this;
(0, _classCallCheck2["default"])(this, CheckToggle);
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
_this = _super.call.apply(_super, [this].concat(args));
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "state", {
checked: !!_this.props.checked
});
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "_isControlled", function () {
return _this.props.hasOwnProperty('checked');
});
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "_handleChange", function (changeEvent) {
var checked = _this.state.checked;
var onChange = _this.props.onChange;
_this.setState({
checked: !checked
}, function () {
if (onChange) onChange(changeEvent);
});
});
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "_renderInput", function () {
var _ref = _this._isControlled() ? _this.props : _this.state,
checked = _ref.checked;
var _this$props = _this.props,
size = _this$props.size,
disabled = _this$props.disabled,
onChange = _this$props.onChange;
return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement("input", {
type: "checkbox",
className: _CheckToggleSt.classes.input,
"data-hook": _constants.dataHooks.toggle,
checked: checked,
disabled: disabled,
onChange: _this._isControlled() ? onChange : _this._handleChange
}), /*#__PURE__*/_react["default"].createElement("span", {
className: _CheckToggleSt.classes.toggle
}, icon[size]));
});
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "_renderTooltip", function () {
var _this$props2 = _this.props,
tooltipContent = _this$props2.tooltipContent,
tooltipProps = _this$props2.tooltipProps;
return /*#__PURE__*/_react["default"].createElement(_Tooltip["default"], (0, _extends2["default"])({
dataHook: _constants.dataHooks.tooltip,
content: tooltipContent
}, tooltipProps), _this._renderInput());
});
return _this;
}
(0, _createClass2["default"])(CheckToggle, [{
key: "render",
value: function render() {
var _ref2 = this._isControlled() ? this.props : this.state,
checked = _ref2.checked;
var _this$props3 = this.props,
dataHook = _this$props3.dataHook,
size = _this$props3.size,
skin = _this$props3.skin,
disabled = _this$props3.disabled,
tooltipContent = _this$props3.tooltipContent,
focusableOnFocus = _this$props3.focusableOnFocus,
focusableOnBlur = _this$props3.focusableOnBlur,
className = _this$props3.className;
return /*#__PURE__*/_react["default"].createElement("label", {
className: (0, _CheckToggleSt.st)(_CheckToggleSt.classes.root, {
checked: checked,
size: size,
skin: skin,
disabled: disabled
}, className),
"data-hook": dataHook,
onFocus: focusableOnFocus,
onBlur: focusableOnBlur
}, tooltipContent ? this._renderTooltip() : this._renderInput());
}
}]);
return CheckToggle;
}(_react["default"].PureComponent);
CheckToggle.displayName = 'CheckToggle';
CheckToggle.propTypes = {
/** Applies a data-hook HTML attribute that can be used in the tests */
dataHook: _propTypes["default"].string,
/** Specifies a CSS class name to be appended to the component’s root element */
className: _propTypes["default"].string,
/** Specifies whether a check is selected */
checked: _propTypes["default"].bool,
/** Defines a callback function which is called every time the check value is changed */
onChange: _propTypes["default"].func,
/** Specifies whether toggle interactions should be disabled */
disabled: _propTypes["default"].bool,
/** Controls the size of the component */
size: _propTypes["default"].oneOf(['small', 'medium']),
/** Controls the skin of the component */
skin: _propTypes["default"].oneOf(['standard', 'success']),
/** Defines a message to be displayed in a tooltip. Tooltip is displayed on component hover. */
tooltipContent: _propTypes["default"].node,
/** Allows to pass all common tooltip props. Check `<Tooltip/>` for a full API. */
tooltipProps: _propTypes["default"].shape(_TooltipCommon.TooltipCommonProps)
};
CheckToggle.defaultProps = {
disabled: false,
size: 'small',
skin: 'standard'
};
var _default = (0, _FocusableHOC.withFocusable)(CheckToggle);
exports["default"] = _default;