@atlassian/aui
Version:
Atlassian User Interface Framework
84 lines (74 loc) • 2.71 kB
JavaScript
(function (global, factory) {
if (typeof define === "function" && define.amd) {
define(['./jquery', './internal/amdify', './internal/skate'], factory);
} else if (typeof exports !== "undefined") {
factory(require('./jquery'), require('./internal/amdify'), require('./internal/skate'));
} else {
var mod = {
exports: {}
};
factory(global.jquery, global.amdify, global.skate);
global.trigger = mod.exports;
}
})(this, function (_jquery, _amdify, _skate) {
'use strict';
var _jquery2 = _interopRequireDefault(_jquery);
var _amdify2 = _interopRequireDefault(_amdify);
var _skate2 = _interopRequireDefault(_skate);
function _interopRequireDefault(obj) {
return obj && obj.__esModule ? obj : {
default: obj
};
}
function isNestedAnchor(trigger, target) {
var $closestAnchor = (0, _jquery2.default)(target).closest('a[href]', trigger);
return !!$closestAnchor.length && $closestAnchor[0] !== trigger;
}
function findControlled(trigger) {
return document.getElementById(trigger.getAttribute('aria-controls'));
}
function triggerMessage(trigger, e) {
if (trigger.isEnabled()) {
var component = findControlled(trigger);
if (component && component.message) {
component.message(e);
}
}
}
(0, _skate2.default)('data-aui-trigger', {
type: _skate2.default.type.ATTRIBUTE,
events: {
click: function click(trigger, e) {
if (!isNestedAnchor(trigger, e.target)) {
triggerMessage(trigger, e);
e.preventDefault();
}
},
mouseenter: function mouseenter(trigger, e) {
triggerMessage(trigger, e);
},
mouseleave: function mouseleave(trigger, e) {
triggerMessage(trigger, e);
},
focus: function focus(trigger, e) {
triggerMessage(trigger, e);
},
blur: function blur(trigger, e) {
triggerMessage(trigger, e);
}
},
prototype: {
disable: function disable() {
this.setAttribute('aria-disabled', 'true');
},
enable: function enable() {
this.setAttribute('aria-disabled', 'false');
},
isEnabled: function isEnabled() {
return this.getAttribute('aria-disabled') !== 'true';
}
}
});
(0, _amdify2.default)('aui/trigger');
});
//# sourceMappingURL=trigger.js.map