UNPKG

@wix/design-system

Version:

@wix/design-system

224 lines (223 loc) 9 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); exports.__esModule = true; exports.default = exports.Checkbox = void 0; var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _react = _interopRequireWildcard(require("react")); var _system = require("@wix/wix-ui-icons-common/system"); var _CheckboxSt = require("./Checkbox.st.css.js"); var _Text = _interopRequireDefault(require("../Text")); var _Focusable = require("../common/Focusable"); var _generateId = require("../utils/generateId"); var _Tooltip = _interopRequireDefault(require("../Tooltip")); var DATA_ATTR = _interopRequireWildcard(require("./DataAttr")); var _constants = require("./constants"); var _ZIndex = require("../common/ZIndex"); var _Checkbox2 = _interopRequireDefault(require("./Checkbox.semanticClassNames")); var _visuallyHiddenSt = require("../common/styles/visuallyHidden.st.css.js"); var _deprecationLog = _interopRequireDefault(require("../utils/deprecationLog")); var _jsxFileName = "/home/builduser/work/57e038ea7326c1ec/packages/wix-design-system/dist/cjs/Checkbox/Checkbox.tsx"; function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); } /** a simple WixStyle checkbox */ class Checkbox extends _react.PureComponent { constructor(props) { super(props); // TODO fix me please. We need to get away from ids. this._id = "".concat(Checkbox.displayName, "-").concat((0, _generateId.generateID)()); this.checkboxRef = /*#__PURE__*/_react.default.createRef(); this.inputRef = /*#__PURE__*/_react.default.createRef(); this.focus = () => { this.inputRef.current && this.inputRef.current.focus(); }; this._handleChange = event => { var _this$props$onChange, _this$props; (_this$props$onChange = (_this$props = this.props).onChange) == null || _this$props$onChange.call(_this$props, event); }; this._getDataAttributes = () => { var _this$props2 = this.props, checked = _this$props2.checked, indeterminate = _this$props2.indeterminate, disabled = _this$props2.disabled, hasError = _this$props2.hasError; return { [DATA_ATTR.DATA_CHECK_TYPE]: indeterminate ? DATA_ATTR.CHECK_TYPES.INDETERMINATE : checked ? DATA_ATTR.CHECK_TYPES.CHECKED : DATA_ATTR.CHECK_TYPES.UNCHECKED, [DATA_ATTR.DATA_HAS_ERROR]: hasError && !disabled, [DATA_ATTR.DATA_DISABLED]: disabled }; }; if (typeof props.errorMessage !== 'undefined') { (0, _deprecationLog.default)('<Checkbox/> - prop "errorMessage" is deprecated and will be removed in next major release, please use "tooltipContent" instead.'); } } render() { var _this$props3 = this.props, _this$props3$id = _this$props3.id, id = _this$props3$id === void 0 ? this._id : _this$props3$id, checked = _this$props3.checked, indeterminate = _this$props3.indeterminate, disabled = _this$props3.disabled, required = _this$props3.required, hasError = _this$props3.hasError, errorMessage = _this$props3.errorMessage, onChange = _this$props3.onChange, selectionArea = _this$props3.selectionArea, vAlign = _this$props3.vAlign, size = _this$props3.size, children = _this$props3.children, dataHook = _this$props3.dataHook, focusableOnFocus = _this$props3.focusableOnFocus, focusableOnBlur = _this$props3.focusableOnBlur, className = _this$props3.className, tooltipProps = _this$props3.tooltipProps, tooltipContent = _this$props3.tooltipContent, selectionAreaSkin = _this$props3.selectionAreaSkin, selectionAreaPadding = _this$props3.selectionAreaPadding, ellipsis = _this$props3.ellipsis, maxLines = _this$props3.maxLines; var isTooltipDisabled = tooltipProps && tooltipProps.disabled || disabled || !tooltipContent && (!hasError || !errorMessage); return /*#__PURE__*/_react.default.createElement("div", (0, _extends2.default)({ "data-hook": dataHook, className: (0, _CheckboxSt.st)(_CheckboxSt.classes.root, { vAlign, selectionArea, selectionAreaSkin, disabled, size, error: hasError && !disabled, selection: indeterminate ? 'indeterminate' : checked ? 'checked' : 'unchecked', indeterminate, ellipsis }, className) }, this._getDataAttributes(), { __self: this, __source: { fileName: _jsxFileName, lineNumber: 111, columnNumber: 7 } }), /*#__PURE__*/_react.default.createElement("input", { ref: this.inputRef, className: _visuallyHiddenSt.classes.visuallyHidden, "data-hook": _constants.dataHooks.input, type: "checkbox", id: id, checked: checked, disabled: disabled, required: required, "aria-checked": indeterminate ? 'mixed' : checked, onChange: onChange, onFocus: focusableOnFocus, onBlur: focusableOnBlur, __self: this, __source: { fileName: _jsxFileName, lineNumber: 134, columnNumber: 9 } }), /*#__PURE__*/_react.default.createElement("label", { htmlFor: id, "data-hook": _constants.dataHooks.label, className: _CheckboxSt.classes.label, onClick: e => e.stopPropagation(), __self: this, __source: { fileName: _jsxFileName, lineNumber: 148, columnNumber: 9 } }, /*#__PURE__*/_react.default.createElement("div", { className: _CheckboxSt.classes.labelInner, style: { padding: selectionAreaPadding }, __self: this, __source: { fileName: _jsxFileName, lineNumber: 154, columnNumber: 11 } }, /*#__PURE__*/_react.default.createElement(_Tooltip.default, (0, _extends2.default)({ dataHook: _constants.dataHooks.boxTooltip, disabled: isTooltipDisabled, content: tooltipContent || errorMessage || ' ', textAlign: "center", maxWidth: 230, exitDelay: 150, zIndex: _ZIndex.ZIndex.checkbox }, tooltipProps, { __self: this, __source: { fileName: _jsxFileName, lineNumber: 158, columnNumber: 13 } }), /*#__PURE__*/_react.default.createElement("div", { className: _CheckboxSt.classes.outer, __self: this, __source: { fileName: _jsxFileName, lineNumber: 168, columnNumber: 15 } }, /*#__PURE__*/_react.default.createElement("div", { "data-hook": _constants.dataHooks.box, className: (0, _CheckboxSt.st)(_CheckboxSt.classes.checkbox, _Checkbox2.default.inputContainer), __self: this, __source: { fileName: _jsxFileName, lineNumber: 169, columnNumber: 17 } }, /*#__PURE__*/_react.default.createElement("div", { className: _CheckboxSt.classes.inner, __self: this, __source: { fileName: _jsxFileName, lineNumber: 176, columnNumber: 19 } }, indeterminate ? /*#__PURE__*/_react.default.createElement(_system.CheckboxIndeterminate, { __self: this, __source: { fileName: _jsxFileName, lineNumber: 178, columnNumber: 23 } }) : /*#__PURE__*/_react.default.createElement(_system.CheckboxChecked, { __self: this, __source: { fileName: _jsxFileName, lineNumber: 180, columnNumber: 23 } }))))), children && /*#__PURE__*/_react.default.createElement(_Text.default, { size: size, weight: "thin", dataHook: _constants.dataHooks.children, className: _CheckboxSt.classes.children, ellipsis: ellipsis, maxLines: maxLines, __self: this, __source: { fileName: _jsxFileName, lineNumber: 187, columnNumber: 15 } }, children)))); } } exports.Checkbox = Checkbox; Checkbox.displayName = 'Checkbox'; Checkbox.defaultProps = { checked: false, size: _constants.LABEL_TEXT_SIZE.MEDIUM, selectionArea: _constants.SELECTION_AREA.NONE, vAlign: _constants.V_ALIGN.CENTER, onChange: e => e.stopPropagation(), hasError: false, disabled: false, indeterminate: false, selectionAreaSkin: _constants.SELECTION_AREA_SKIN.FILLED }; var _default = exports.default = (0, _Focusable.withFocusable)(Checkbox); //# sourceMappingURL=Checkbox.js.map