39 lines
1.1 KiB
JavaScript
39 lines
1.1 KiB
JavaScript
|
(function ($, window, document, undefined) {
|
||
|
let pluginName = 'keypressAction', defaults = {};
|
||
|
|
||
|
// The actual plugin constructor
|
||
|
function keypressAction(element, options) {
|
||
|
this.element = element;
|
||
|
this.settings = $.extend({}, defaults, options);
|
||
|
this._defaults = defaults;
|
||
|
this._name = pluginName;
|
||
|
this.init();
|
||
|
}
|
||
|
|
||
|
$.extend(keypressAction.prototype, {
|
||
|
bindKeyToRoute(key, route) {
|
||
|
Mousetrap.bind([key], (e) => {
|
||
|
window.location = route;
|
||
|
|
||
|
return false;
|
||
|
});
|
||
|
},
|
||
|
init() {
|
||
|
$.each(this.settings.actions, (index, object) => {
|
||
|
this.bindKeyToRoute(object.key, object.route);
|
||
|
});
|
||
|
},
|
||
|
});
|
||
|
|
||
|
$.fn[pluginName] = function (options) {
|
||
|
this.each(function () {
|
||
|
if (! $.data(this, `plugin_${pluginName}`)) {
|
||
|
$.data(this, `plugin_${pluginName}`, new keypressAction(this, options));
|
||
|
}
|
||
|
});
|
||
|
|
||
|
// chain jQuery functions
|
||
|
return this;
|
||
|
};
|
||
|
})(jQuery, window, document);
|