UNPKG

@checksub_team/react-widgets

Version:
57 lines (43 loc) 1.65 kB
"use strict"; exports.__esModule = true; exports.widgetEditable = exports.widgetEnabled = exports.isInDisabledFieldset = void 0; var _reactDom = require("react-dom"); var _matches = _interopRequireDefault(require("dom-helpers/query/matches")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var isInDisabledFieldset = function isInDisabledFieldset(inst) { var node; try { node = (0, _reactDom.findDOMNode)(inst); } catch (err) { /* ignore */ } return !!node && (0, _matches.default)(node, 'fieldset[disabled] *'); }; exports.isInDisabledFieldset = isInDisabledFieldset; var widgetEnabled = interactionDecorator(true); exports.widgetEnabled = widgetEnabled; var widgetEditable = interactionDecorator(false); exports.widgetEditable = widgetEditable; function interactionDecorator(disabledOnly) { function wrap(method) { return function decoratedMethod() { var _this$props = this.props, disabled = _this$props.disabled, readOnly = _this$props.readOnly; disabled = isInDisabledFieldset(this) || disabled == true || !disabledOnly && readOnly === true; for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } if (!disabled) return method.apply(this, args); }; } return function decorate(target, key, desc) { if (desc.initializer) { var init = desc.initializer; desc.initializer = function () { return wrap(init.call(this)).bind(this); }; } else desc.value = wrap(desc.value); return desc; }; }