@7polo/kityminder-core
Version:
KityMinder Core Implement
66 lines (56 loc) • 1.93 kB
JavaScript
define(function(require, exports, module) {
var kity = require('./kity');
var utils = require('./utils');
var Minder = require('./minder');
function listen(element, type, handler) {
type.split(' ').forEach(function(name) {
element.addEventListener(name, handler, false);
});
}
Minder.registerInitHook(function(option) {
this.setDefaultOptions({
enableKeyReceiver: true
});
if (this.getOption('enableKeyReceiver')) {
this.on('paperrender', function() {
this._initKeyReceiver();
});
}
});
kity.extendClass(Minder, {
_initKeyReceiver: function() {
if (this._keyReceiver) return;
var receiver = this._keyReceiver = document.createElement('input');
receiver.classList.add('km-receiver');
var renderTarget = this._renderTarget;
renderTarget.appendChild(receiver);
var minder = this;
listen(receiver, 'keydown keyup keypress copy paste blur focus input', function(e) {
switch (e.type) {
case 'blur':
minder.blur();
break;
case 'focus':
minder.focus();
break;
case 'input':
receiver.value = null;
break;
}
minder._firePharse(e);
e.preventDefault();
});
this.on('focus', function() {
receiver.select();
receiver.focus();
});
this.on('blur', function() {
receiver.blur();
});
if (this.isFocused()) {
receiver.select();
receiver.focus();
}
}
});
});