spid-sp-access-button.min.js 2.35 KB
Newer Older
CED SA's avatar
CED SA committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
jQuery && function(t){	
	function i(i,n){
		var d=i ? t(this) : n,
			o=t(d.attr("spid-idp-button")),
			r=d.hasClass("spid-idp-button-open")
		if(i){
			if(t(i.target).hasClass("spid-idp-button-ignore")) return
			i.preventDefault(),
			i.stopPropagation()
		} else if(d !== n.target&&t(n.target).hasClass("spid-idp-button-ignore")) return		
		s(),
		r || d.hasClass("spid-idp-button-disabled") || 
			(d.addClass("spid-idp-button-open"),
			o.data("spid-idp-button-trigger", d).show(),
			e(),
			o.trigger("show",{spidIDPButton:o, trigger:d}))
	}
	
	function s(i){
		var s=i ? t(i.target).parents().addBack() : null
		if(s && s.is(".spid-idp-button")){
			if(!s.is(".spid-idp-button-menu")) return
			if(!s.is("A"))return
		}
		t(document).find(".spid-idp-button:visible").each(
			function(){
				var i=t(this)
				i.hide().removeData("spid-idp-button-trigger").trigger("hide", {spidIDPButton:i})
			}),
		t(document).find(".spid-idp-button-open").removeClass("spid-idp-button-open")
	}
	
	function e(){
		var i=t(".spid-idp-button:visible").eq(0),
			s=i.data("spid-idp-button-trigger"),
			e=s ? parseInt(s.attr("data-horizontal-offset") || 0, 10) : null,
			n=s ? parseInt(s.attr("data-vertical-offset") || 0, 10) : null
		0 !== i.length && s && 
			(i.hasClass("spid-idp-button-relative") 
				? i.css({
					left:i.hasClass("spid-idp-button-anchor-right")
						 ? s.position().left-(i.outerWidth(!0)-s.outerWidth(!0))-parseInt(s.css("margin-right"),10)+e
						 : s.position().left+parseInt(s.css("margin-left"),10)+e,
					top:s.position().top+s.outerHeight(!0)-parseInt(s.css("margin-top"),10)+n
				})
				: i.css({
					left:i.hasClass("spid-idp-button-anchor-right")	
						 ? s.offset().left-(i.outerWidth()-s.outerWidth())+e
						 : s.offset().left+e,
					top:s.offset().top+s.outerHeight()+n
				})
			)
	}
	
	t.extend(t.fn,{
		spidIDPButton:function(e,n){
			switch(e){
				case"show":return i(null,t(this)),t(this)
				case"hide":return s(),t(this)
				case"attach":return t(this).attr("spid-idp-button", n)
				case"detach":return s(),t(this).removeAttr("spid-idp-button")
				case"disable":return t(this).addClass("spid-idp-button-disabled")
				case"enable":return s(),t(this).removeClass("spid-idp-button-disabled")
			}
		}
	}
	),
	t(document).on("click.spid-idp-button", "[spid-idp-button]", i),
	t(document).on("click.spid-idp-button", s),
	t(window).on("resize", e)
}(jQuery)