Исправляем баг с tooltip в ExtJS 7.2

Исправляем баг с 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;
    }

});

Помните что это не официальное исправление, используйте на свой страх и риск.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *