Created
April 11, 2013 17:35
-
-
Save brianfeister/5365439 to your computer and use it in GitHub Desktop.
Handle various uses of constrained popover plugin
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
define( [ | |
"jquery" | |
], | |
function( $ ) { | |
"use strict"; // jshint ;_; | |
/** | |
* Handler for popover trigger: mouseenter. | |
* | |
* @param {object} e JS event object | |
*/ | |
var handle_popover_over = function( e ) { | |
var $this = $( this ), | |
$pop_content = $this.next( '.ai1ec-popup' ), | |
el_content_data, el_classes_data, popover_placement; | |
// If no popover found, quit. | |
if ( $pop_content.length == 0 ) { | |
return; | |
} | |
el_content_data = $pop_content.html(); | |
el_classes_data = $pop_content.attr( 'class' ); | |
var el_classes_array = el_classes_data.split( " " ); | |
$.each( el_classes_array, function( key, value ) { | |
if( /^ai1ec-popover-pl-/.test( value ) ) { | |
popover_placement = value.replace( /^ai1ec-popover-pl-/, '' ); | |
} else { | |
popover_placement = 'left'; | |
} | |
} ); | |
$this.constrained_popover( { | |
content: el_content_data, | |
title: '', | |
placement: popover_placement, | |
trigger: 'manual', | |
html: true, | |
template: '<div class="popover ' + el_classes_data + | |
'"><div class="arrow"></div><div class="popover-inner">' + | |
'<div class="popover-content"><p></p></div></div></div>', | |
container: '.ai1ec-popover-boundary' | |
}).constrained_popover( 'show' ); | |
} | |
/** | |
* Handler for popover trigger: mouseleave. Remove popup if entering an | |
* element that is not the popup. | |
* | |
* @param {object} e JS event object | |
*/ | |
var handle_popover_out = function( e ) { | |
var $el = $( e.toElement ); | |
// If an ancestor of element being entered is not a popup, hide popover. | |
if ( $el.closest( '.ai1ec-popup' ).length == 0 ) { | |
$( this ).constrained_popover( 'hide' ); | |
} | |
} | |
/** | |
* Handler for popover; remove the popover on mouseleave of itself. Hide popup | |
* if entering an element that is not a tooltip. | |
* Also remove any visible tooltip if removing popup. | |
* | |
* @param {object} e JS event object | |
*/ | |
var handle_popover_self_out = function( e ) { | |
var $el = $( e.toElement ); | |
// If an ancestor of element being entered is not a tooltip, hide popover. | |
if ( $el.closest( '.tooltip' ).length == 0 ) { | |
$( this ).remove(); | |
$( 'body > .tooltip' ).remove(); | |
} | |
}; | |
/** | |
* Manually handle tooltip mouseenter. | |
* | |
* @param {object} e JS event object | |
*/ | |
var handle_tooltip_over = function( e ) { | |
$( this ).tooltip( { | |
'trigger' : 'manual' | |
} ).tooltip( 'show' ); | |
} | |
/** | |
* Manually handle tooltip mouseleave. Do not hide if entering tooltip or | |
* tooltip triggering action. | |
* | |
* @param {object} e JS event object | |
*/ | |
var handle_tooltip_out = function( e ) { | |
var $el = $( e.toElement ); | |
if ( $el.closest( '.tooltip' ).length == 0 ) { | |
$( this ).tooltip( 'hide' ); | |
} | |
} | |
/** | |
* Handler for tooltip; remove the tooltip on mouseleave of itself, unless | |
* moving onto the tooltip trigger action. If moving onto an element that is | |
* not in a popup, hide any visible popup. | |
* | |
* @param {object} e JS event object | |
*/ | |
var handle_tooltip_self_out = function( e ) { | |
var $el = $( e.toElement ); | |
// If an ancestor of element being entered is not a tooltip trigger action, | |
// hide tooltip. | |
if ( $el.closest( '.ai1ec-tooltip-trigger' ).length == 0 ) { | |
$( this ).remove(); | |
} | |
// If an ancestor of element being entered is not a popup, hide any popup. | |
if ( $el.closest( '.ai1ec-popup' ).length == 0 ) { | |
$( 'body > .ai1ec-popup' ).remove(); | |
} | |
}; | |
return { | |
handle_popover_over : handle_popover_over, | |
handle_popover_out : handle_popover_out, | |
handle_popover_self_out : handle_popover_self_out, | |
handle_tooltip_over : handle_tooltip_over, | |
handle_tooltip_out : handle_tooltip_out, | |
handle_tooltip_self_out : handle_tooltip_self_out | |
}; | |
} ); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment