123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- 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();
- }
- }
- });
- });
|