/** * Editable jQuery UI Tooltip * --------------------- * requires jquery ui 1.9.x */ (function ($) { "use strict"; //extend methods $.extend($.fn.editableContainer.Popup.prototype, { containerName: 'tooltip', //jQuery method, aplying the widget containerDataName: 'uiTooltip', //object name in elements .data() (e.g. uiTooltip for tooltip) innerCss: '.ui-tooltip-content', //split options on containerOptions and formOptions splitOptions: function() { this.containerOptions = {}; this.formOptions = {}; //check that jQueryUI build contains tooltip widget if(!$.ui[this.containerName]) { $.error('Please use jQueryUI with "tooltip" widget! http://jqueryui.com/download'); return; } //defaults for tooltip var cDef = $.ui[this.containerName].prototype.options; for(var k in this.options) { if(k in cDef) { this.containerOptions[k] = this.options[k]; } else { this.formOptions[k] = this.options[k]; } } }, initContainer: function(){ this.handlePlacement(); $.extend(this.containerOptions, { items: '*', content: ' ', track: false, open: $.proxy(function() { //disable events hiding tooltip by default this.container()._on(this.container().element, { mouseleave: function(e){ e.stopImmediatePropagation(); }, focusout: function(e){ e.stopImmediatePropagation(); } }); }, this) }); this.call(this.containerOptions); //disable standart triggering tooltip event //for some versions of jQueryUI it gives error: //TypeError: this.container(...)._off is not a function //see: https://github.com/vitalets/x-editable/issues/32 if(this.container()._off) { this.container()._off(this.container().element, 'mouseover focusin'); } else { $.error('this.container()._off is not a function. jQuery UI: ' + $.ui.version); } }, tip: function() { return this.container() ? this.container()._find(this.container().element) : null; }, innerShow: function() { this.call('open'); var label = this.options.title || this.$element.data( "ui-tooltip-title") || this.$element.data( "originalTitle"); this.tip().find(this.innerCss).empty().append($('