Нашел способ как обойти этот нюанс. Правда способ не хороший на вид. Ибо в дереве DOM болтается лишний input (который приходится скрывать, причем скрывать нехорошим способом, ибо если его скрыть нормальным способом, то механизм не работает).
Вот код:
https://fiddle.sencha.com/#fiddle/lgr
console.clear();
Ext.FocusManager.enable(true);
Ext.define("MyComponent", {
extend: "Ext.Component",
focusable: true,
focusEl: null,
privates: {
getFocusEl: function() {
return this.focusEl;
},
},
initFocusable: function() {
this.focusEl = Ext.create("Ext.Element", document.createElement("input"));
this.focusEl.appendTo(Ext.getBody());
this.focusEl.applyStyles({
position: "absolute",
top: "-5000px",
left: "-5000px"
});
}
});
var comp = Ext.create("MyComponent", {
renderTo: Ext.getBody(),
html: "Тестовый компонент"
});
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
comp.on("focus", function() {
console.log("FOCUS");
});
comp.on("blur", function() {
console.log("BLUR");
});
comp.focus();
comp.blur();