@clayui/shared
Version:
ClayShared component
38 lines (36 loc) • 1.07 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
exports.delegate = delegate;
/**
* SPDX-FileCopyrightText: © 2021 Liferay, Inc. <https://liferay.com>
* SPDX-License-Identifier: BSD-3-Clause
*/
function isDisabled(node) {
return !!(node.disabled || node.closest('[disabled]'));
}
function delegate(element, eventName, selector, callback, capture) {
var eventHandler = function eventHandler(event) {
var defaultPrevented = event.defaultPrevented,
target = event.target;
if (target) {
if (defaultPrevented || eventName === 'click' && isDisabled(target)) {
return;
}
var delegateTarget = target.closest(selector);
if (delegateTarget) {
event.delegateTarget = delegateTarget;
callback(event);
}
}
};
element.addEventListener(eventName, eventHandler, capture);
return {
dispose: function dispose() {
element.removeEventListener(eventName, eventHandler, capture);
}
};
}
var _default = exports.default = delegate;
;