Исправляем баг с tooltip в classic toolkit, который появился с выходом ExtJS 7.2.0.67.
После обновления extjs до 7.2 появились баги с показом toolip (для button и для tooltip которые задаются с помощью объекта). Воспроизводиться следующим образом:
В качестве исправления могу предложить следующие overrides, официально исправление будет под EXTJS-29075:
Ext.define('Override.tip.QuickTip', {
override: 'Ext.tip.QuickTip',
delegate: function(target) {
var cfg = this.tagConfig,
attr = cfg.attr || (cfg.attr = cfg.namespace + cfg.attribute),
registeredTarget = this.targets[target.id],
// We can now only activate on elements which have the required attributes
text = (registeredTarget && registeredTarget.text) ||
target.getAttribute(attr) ||
(this.interceptTitles && target.title);
return !!text;
}
});
Ext.define('Override.button.Button', {
override: 'Ext.button.Button',
setTooltip: function(tooltip, initial) {
var me = this,
targetEl = me.el;
if (me.rendered) {
if (!initial || !tooltip) {
me.clearTip();
}
// This is creating an issue, changing the targetEl
/*if (me.disabled) {
targetEl = me.tooltipEl;
}*/
if (tooltip) {
if (Ext.quickTipsActive && Ext.isObject(tooltip)) {
Ext.tip.QuickTipManager.register(Ext.apply({
target: targetEl.id
}, tooltip));
me.tooltip = tooltip;
} else {
targetEl.dom.setAttribute(me.getTipAttr(), tooltip);
}
me.currentTooltipEl = targetEl;
}
} else {
me.tooltip = tooltip;
}
return me;
}
});
Помните что это не официальное исправление, используйте на свой страх и риск.
Для extjs 4.1 на примере создания кнопки:
editor.getToolbar().add(‘->’,{
iconCls : ‘icon_event’,
tooltip : ‘подія, якій присвячується захід’,
handler : function(){
var div = editor.getEditorBody().parentNode.getElementsByTagName(‘div’)[0]
if(div.classList.contains(‘event’)){
div.removeAttribute(‘class’)
}else{
div.classList.add(‘event’)
}
},
listeners : {
afterrender: function(){
this.el.dom.title = this.tooltip
}
},
}