UNPKG

wix-style-react

Version:
268 lines (267 loc) • 9.82 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 _propTypes = _interopRequireDefault(require("prop-types")); var _system = require("@wix/wix-ui-icons-common/system"); var _CheckboxSt = require("./Checkbox.st.css"); 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 _TooltipCommon = require("../common/PropTypes/TooltipCommon"); var _context = require("../WixStyleReactProvider/context"); var _jsxFileName = "/home/builduser/work/a9c1ac8876d5057c/packages/wix-style-react/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() { super(...arguments); // 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.checkboxRef.current && this.checkboxRef.current.focus(); }; this._handleKeyDown = event => { if (event.keyCode === 32 && this.inputRef.current) { var _this$props$onChange, _this$props; var onChangeEvent = { target: { checked: !this.inputRef.current.checked } }; (_this$props$onChange = (_this$props = this.props).onChange) == null || _this$props$onChange.call(_this$props, onChangeEvent); event.preventDefault(); } }; this._getDataAttributes = () => { var { checked, indeterminate, disabled, hasError } = this.props; 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 }; }; } render() { var { id = this._id, checked, indeterminate, disabled, hasError, errorMessage, selectionArea, vAlign, size, onChange, children, dataHook, focusableOnFocus, focusableOnBlur, className, tooltipProps, tooltipContent, selectionAreaSkin, selectionAreaPadding, ellipsis, maxLines } = this.props; var isTooltipDisabled = tooltipProps && tooltipProps.disabled || disabled || !tooltipContent && (!hasError || !errorMessage); return /*#__PURE__*/_react.default.createElement(_context.WixStyleReactContext.Consumer, { __self: this, __source: { fileName: _jsxFileName, lineNumber: 130, columnNumber: 7 } }, _ref => { var { newColorsBranding } = _ref; return /*#__PURE__*/_react.default.createElement("div", (0, _extends2.default)({ "data-hook": dataHook, className: (0, _CheckboxSt.st)(_CheckboxSt.classes.root, { vAlign, selectionArea, selectionAreaSkin, disabled, error: hasError && !disabled, selection: indeterminate ? 'indeterminate' : checked ? 'checked' : 'unchecked', indeterminate, newColorsBranding, ellipsis }, className), onFocus: focusableOnFocus, onBlur: focusableOnBlur, tabIndex: disabled ? undefined : 0 }, this._getDataAttributes(), { role: "checkbox", "aria-checked": checked, ref: this.checkboxRef, onKeyDown: disabled ? undefined : this._handleKeyDown, __self: this, __source: { fileName: _jsxFileName, lineNumber: 132, columnNumber: 11 } }), /*#__PURE__*/_react.default.createElement("input", { ref: this.inputRef, "data-hook": _constants.dataHooks.input, type: "checkbox", id: id, tabIndex: disabled ? undefined : 0, checked: checked, disabled: disabled, onChange: disabled ? undefined : onChange, style: { display: 'none' }, __self: this, __source: { fileName: _jsxFileName, lineNumber: 162, columnNumber: 13 } }), /*#__PURE__*/_react.default.createElement("label", { htmlFor: id, "data-hook": _constants.dataHooks.label, className: _CheckboxSt.classes.label, __self: this, __source: { fileName: _jsxFileName, lineNumber: 173, columnNumber: 13 } }, /*#__PURE__*/_react.default.createElement("div", { className: _CheckboxSt.classes.labelInner, style: { padding: selectionAreaPadding }, __self: this, __source: { fileName: _jsxFileName, lineNumber: 178, columnNumber: 15 } }, /*#__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: 10000 }, tooltipProps, { __self: this, __source: { fileName: _jsxFileName, lineNumber: 182, columnNumber: 17 } }), /*#__PURE__*/_react.default.createElement("div", { className: _CheckboxSt.classes.outer, __self: this, __source: { fileName: _jsxFileName, lineNumber: 192, columnNumber: 19 } }, /*#__PURE__*/_react.default.createElement("div", { "data-hook": _constants.dataHooks.box, className: _CheckboxSt.classes.checkbox, __self: this, __source: { fileName: _jsxFileName, lineNumber: 193, columnNumber: 21 } }, /*#__PURE__*/_react.default.createElement("div", { className: _CheckboxSt.classes.inner, onClick: e => e.stopPropagation(), __self: this, __source: { fileName: _jsxFileName, lineNumber: 194, columnNumber: 23 } }, indeterminate ? /*#__PURE__*/_react.default.createElement(_system.CheckboxIndeterminate, { __self: this, __source: { fileName: _jsxFileName, lineNumber: 199, columnNumber: 27 } }) : /*#__PURE__*/_react.default.createElement(_system.CheckboxChecked, { __self: this, __source: { fileName: _jsxFileName, lineNumber: 201, columnNumber: 27 } }))))), children && /*#__PURE__*/_react.default.createElement(_Text.default, { size: size, onClick: e => e.stopPropagation(), weight: "thin", dataHook: _constants.dataHooks.children, className: _CheckboxSt.classes.children, ellipsis: ellipsis, maxLines: maxLines, __self: this, __source: { fileName: _jsxFileName, lineNumber: 208, columnNumber: 19 } }, children)))); }); } } // @ts-ignore exports.Checkbox = Checkbox; Checkbox.displayName = 'Checkbox'; Checkbox.propTypes = { dataHook: _propTypes.default.string, checked: _propTypes.default.bool, children: _propTypes.default.node, disabled: _propTypes.default.bool, hasError: _propTypes.default.bool, id: _propTypes.default.string, indeterminate: _propTypes.default.bool, errorMessage: _propTypes.default.string, selectionArea: _propTypes.default.oneOf(Object.values(_constants.SELECTION_AREA)), vAlign: _propTypes.default.oneOf(Object.values(_constants.V_ALIGN)), size: _propTypes.default.oneOf(Object.values(_constants.LABEL_TEXT_SIZE)), onChange: _propTypes.default.func, className: _propTypes.default.string, selectionAreaSkin: _propTypes.default.oneOf(Object.values(_constants.SELECTION_AREA_SKIN)), selectionAreaPadding: _propTypes.default.string, tooltipContent: _propTypes.default.node, tooltipProps: _propTypes.default.shape(_TooltipCommon.TooltipCommonProps), maxLines: _propTypes.default.number }; 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