Replace Chosen jQuery plugin by custom UI component

This commit is contained in:
Frederic Guillot
2016-12-11 15:46:54 -05:00
parent a2b44371e0
commit ffb3926178
21 changed files with 385 additions and 1795 deletions

View File

@@ -6,6 +6,7 @@ var KB = {
listeners: {
clicks: {},
changes: {},
keys: {},
internals: {}
}
};
@@ -36,6 +37,10 @@ KB.onChange = function (selector, callback) {
this.listeners.changes[selector] = callback;
};
KB.onKey = function (key, callback) {
this.listeners.keys[key] = callback;
};
KB.listen = function () {
var self = this;
@@ -56,8 +61,28 @@ KB.listen = function () {
}
}
function onKeypress(e) {
var key = (typeof e.which === 'number') ? e.which : e.keyCode;
var element = e.target;
if (element.tagName === 'INPUT' ||
element.tagName === 'SELECT' ||
element.tagName === 'TEXTAREA' ||
element.isContentEditable) {
return;
}
for (var keyMap in self.listeners.keys) {
if (self.listeners.keys.hasOwnProperty(keyMap) && key === parseInt(keyMap)) {
e.preventDefault();
self.listeners.keys[key](e);
}
}
}
document.addEventListener('click', onClick, false);
document.addEventListener('change', onChange, false);
document.addEventListener('keypress', onKeypress, false);
};
KB.component = function (name, object) {

View File

@@ -43,9 +43,11 @@ KB.dom = function (tag) {
return this;
};
this.on = function (eventName, callback) {
this.on = function (eventName, callback, ignorePrevent) {
element.addEventListener(eventName, function (e) {
e.preventDefault();
if (! ignorePrevent) {
e.preventDefault();
}
callback(e.target);
});