@checksub_team/react-widgets
Version:
57 lines (43 loc) • 1.65 kB
JavaScript
;
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;
};
}