You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
11 lines
14 KiB
11 lines
14 KiB
/*
|
|
* # Semantic UI - 1.7.2
|
|
* https://github.com/Semantic-Org/Semantic-UI
|
|
* http://www.semantic-ui.com/
|
|
*
|
|
* Copyright 2014 Contributors
|
|
* Released under the MIT license
|
|
* http://opensource.org/licenses/MIT
|
|
*
|
|
*/
|
|
!function(e,t,o,n){"use strict";e.fn.popup=function(i){var s,r=e(this),a=e(o),l=r.selector||"",p=("ontouchstart"in o.documentElement,(new Date).getTime()),u=[],c=arguments[0],d="string"==typeof c,f=[].slice.call(arguments,1);return r.each(function(){var o,r,g,h=e.isPlainObject(i)?e.extend(!0,{},e.fn.popup.settings,i):e.extend({},e.fn.popup.settings),m=h.selector,b=h.className,v=h.error,y=h.metadata,w=h.namespace,P="."+h.namespace,T="module-"+w,C=e(this),k=e(h.context),x=h.target?e(h.target):C,S=e(t),O=e("body"),j=0,A=!1,R=this,E=C.data(T);g={initialize:function(){g.debug("Initializing module",C),"click"==h.on?C.on("click"+P,g.toggle):g.get.startEvent()&&C.on(g.get.startEvent()+P,g.event.start).on(g.get.endEvent()+P,g.event.end),h.target&&g.debug("Target set to element",x),S.on("resize"+P,g.event.resize),!g.exists()&&h.preserve&&g.create(),g.instantiate()},instantiate:function(){g.verbose("Storing instance of module",g),E=g,C.data(T,E)},refresh:function(){h.popup?o=e(h.popup):h.inline&&(o=x.next(m.popup)),h.popup?(o.addClass(b.loading),r=g.get.offsetParent(),o.removeClass(b.loading),g.has.popup()&&g.get.offsetParent(o)[0]!==r[0]&&(g.debug("Moving popup to the same offset parent as activating element"),o.detach().appendTo(r))):r=h.inline?g.get.offsetParent(x):g.has.popup()?g.get.offsetParent(o):O,r.is("html")&&(g.debug("Setting page as offset parent"),r=O)},reposition:function(){g.refresh(),g.set.position()},destroy:function(){g.debug("Destroying previous module"),o&&!h.preserve&&g.removePopup(),clearTimeout(g.hideTimer),clearTimeout(g.showTimer),C.off(P).removeData(T)},event:{start:function(){var t=e.isPlainObject(h.delay)?h.delay.show:h.delay;clearTimeout(g.hideTimer),g.showTimer=setTimeout(function(){!g.is.hidden()||g.is.active()&&g.is.dropdown()||g.show()},t)},end:function(){var t=e.isPlainObject(h.delay)?h.delay.hide:h.delay;clearTimeout(g.showTimer),g.hideTimer=setTimeout(function(){g.is.visible()&&g.hide()},t)},resize:function(){g.is.visible()&&g.set.position()}},create:function(){var t=C.data(y.html)||h.html,n=C.data(y.variation)||h.variation,i=C.data(y.title)||h.title,s=C.data(y.content)||C.attr("title")||h.content;t||s||i?(g.debug("Creating pop-up html"),t||(t=h.templates.popup({title:i,content:s})),o=e("<div/>").addClass(b.popup).addClass(n).html(t),n&&o.addClass(n),h.inline?(g.verbose("Inserting popup element inline",o),o.insertAfter(C)):(g.verbose("Appending popup element to body",o),o.appendTo(k)),g.refresh(),h.hoverable&&g.bind.popup(),h.onCreate.call(o,R)):0!==x.next(m.popup).length?(g.verbose("Pre-existing popup found"),h.inline=!0,h.popup=x.next(m.popup),g.refresh(),h.hoverable&&g.bind.popup()):h.popup?(g.verbose("Used popup specified in settings"),g.refresh(),h.hoverable&&g.bind.popup()):g.debug("No content specified skipping display",R)},toggle:function(){g.debug("Toggling pop-up"),g.is.hidden()?(g.debug("Popup is hidden, showing pop-up"),g.unbind.close(),g.hideAll(),g.show()):(g.debug("Popup is visible, hiding pop-up"),g.hide())},show:function(t){t=e.isFunction(t)?t:function(){},g.debug("Showing pop-up",h.transition),g.exists()?h.preserve||h.popup||g.refresh():g.create(),o&&g.set.position()&&(g.save.conditions(),g.animate.show(t))},hide:function(t){t=e.isFunction(t)?t:function(){},g.remove.visible(),g.unbind.close(),g.is.visible()&&(g.restore.conditions(),g.animate.hide(t))},hideAll:function(){e(m.popup).filter(":visible").transition("hide")},hideGracefully:function(t){t&&0===e(t.target).closest(m.popup).length?(g.debug("Click occurred outside popup hiding popup"),g.hide()):g.debug("Click was inside popup, keeping popup open")},exists:function(){return o?h.inline||h.popup?g.has.popup():o.closest(k).length>=1?!0:!1:!1},removePopup:function(){g.debug("Removing popup",o),g.has.popup()&&!h.popup&&(o.remove(),o=n),h.onRemove.call(o,R)},save:{conditions:function(){g.cache={title:C.attr("title")},g.cache.title&&C.removeAttr("title"),g.verbose("Saving original attributes",g.cache.title)}},restore:{conditions:function(){return g.cache&&g.cache.title&&(C.attr("title",g.cache.title),g.verbose("Restoring original attributes",g.cache.title)),!0}},animate:{show:function(t){t=e.isFunction(t)?t:function(){},h.transition&&e.fn.transition!==n&&C.transition("is supported")?(g.set.visible(),o.transition({animation:h.transition+" in",queue:!1,debug:h.debug,verbose:h.verbose,duration:h.duration,onComplete:function(){g.bind.close(),t.call(o,R),h.onVisible.call(o,R)}})):(g.set.visible(),o.stop().fadeIn(h.duration,h.easing,function(){g.bind.close(),t.call(o,R),h.onVisible.call(o,R)})),h.onShow.call(o,R)},hide:function(t){t=e.isFunction(t)?t:function(){},g.debug("Hiding pop-up"),h.transition&&e.fn.transition!==n&&C.transition("is supported")?o.transition({animation:h.transition+" out",queue:!1,duration:h.duration,debug:h.debug,verbose:h.verbose,onComplete:function(){g.reset(),t.call(o,R),h.onHidden.call(o,R)}}):o.stop().fadeOut(h.duration,h.easing,function(){g.reset(),t.call(o,R),h.onHidden.call(o,R)}),h.onHide.call(o,R)}},get:{startEvent:function(){return"hover"==h.on?"mouseenter":"focus"==h.on?"focus":!1},endEvent:function(){return"hover"==h.on?"mouseleave":"focus"==h.on?"blur":!1},offsetParent:function(t){var o=t!==n?t[0]:C[0],i=o.parentNode,s=e(i);if(i)for(var r="none"===s.css("transform"),a="static"===s.css("position"),l=s.is("html");i&&!l&&a&&r;)i=i.parentNode,s=e(i),r="none"===s.css("transform"),a="static"===s.css("position"),l=s.is("html");return s&&s.length>0?s:e()},offstagePosition:function(n){var i={top:e(t).scrollTop(),bottom:e(t).scrollTop()+e(t).height(),left:0,right:e(t).width()},s={width:o.width(),height:o.height(),offset:o.offset()},r={},a=[];return n=n||!1,s.offset&&n&&(g.verbose("Checking if outside viewable area",s.offset),r={top:s.offset.top<i.top,bottom:s.offset.top+s.height>i.bottom,right:s.offset.left+s.width>i.right,left:s.offset.left<i.left}),e.each(r,function(e,t){t&&a.push(e)}),a.length>0?a.join(" "):!1},positions:function(){return{"top left":!1,"top center":!1,"top right":!1,"bottom left":!1,"bottom center":!1,"bottom right":!1,"left center":!1,"right center":!1}},nextPosition:function(e){var t=e.split(" "),o=t[0],n=t[1],i={top:"bottom",bottom:"top",left:"right",right:"left"},s={left:"center",center:"right",right:"left"},r={"top left":"top center","top center":"top right","top right":"right center","right center":"bottom right","bottom right":"bottom center","bottom center":"bottom left","bottom left":"left center","left center":"top left"},a="top"==o||"bottom"==o,l=!1,p=!1,u=!1;return A||(g.verbose("All available positions available"),A=g.get.positions()),g.debug("Recording last position tried",e),A[e]=!0,"opposite"===h.prefer&&(u=[i[o],n],u=u.join(" "),l=A[u]===!0,g.debug("Trying opposite strategy",u)),"adjacent"===h.prefer&&a&&(u=[o,s[n]],u=u.join(" "),p=A[u]===!0,g.debug("Trying adjacent strategy",u)),(p||l)&&(g.debug("Using backup position",u),u=r[e]),u}},set:{position:function(i,s){var a,l,p,u=(e(t).width(),e(t).height(),x.outerWidth()),c=x.outerHeight(),d=o.outerWidth(),f=o.outerHeight(),m=r.outerWidth(),w=r.outerHeight(),P=h.distanceAway,T=x[0],k=h.inline?parseInt(t.getComputedStyle(T).getPropertyValue("margin-top"),10):0,S=h.inline?parseInt(t.getComputedStyle(T).getPropertyValue(g.is.rtl()?"margin-right":"margin-left"),10):0,O=h.inline||h.popup?x.position():x.offset();switch(i=i||C.data(y.position)||h.position,s=s||C.data(y.offset)||h.offset,j==h.maxSearchDepth&&h.lastResort&&(g.debug("Using last resort position to display",h.lastResort),i=h.lastResort),h.inline&&(g.debug("Adding targets margin to calculation"),"left center"==i||"right center"==i?(s+=k,P+=-S):"top left"==i||"top center"==i||"top right"==i?(s+=S,P-=k):(s+=S,P+=k)),g.debug("Calculating popup positioning",i),a=i,g.is.rtl()&&(a=a.replace(/left|right/g,function(e){return"left"==e?"right":"left"}),g.debug("RTL: Popup positioning updated",a)),a){case"top left":l={top:"auto",bottom:w-O.top+P,left:O.left+s,right:"auto"};break;case"top center":l={bottom:w-O.top+P,left:O.left+u/2-d/2+s,top:"auto",right:"auto"};break;case"top right":l={bottom:w-O.top+P,right:m-O.left-u-s,top:"auto",left:"auto"};break;case"left center":l={top:O.top+c/2-f/2+s,right:m-O.left+P,left:"auto",bottom:"auto"};break;case"right center":l={top:O.top+c/2-f/2+s,left:O.left+u+P,bottom:"auto",right:"auto"};break;case"bottom left":l={top:O.top+c+P,left:O.left+s,bottom:"auto",right:"auto"};break;case"bottom center":l={top:O.top+c+P,left:O.left+u/2-d/2+s,bottom:"auto",right:"auto"};break;case"bottom right":l={top:O.top+c+P,right:m-O.left-u-s,left:"auto",bottom:"auto"}}if(l===n&&g.error(v.invalidPosition,i),g.debug("Calculated popup positioning values",l),o.css(l).removeClass(b.position).addClass(i).addClass(b.loading),p=g.get.offstagePosition(i)){if(g.debug("Popup cant fit into viewport",p),j<h.maxSearchDepth)return j++,i=g.get.nextPosition(i),g.debug("Trying new position",i),o?g.set.position(i):!1;if(!h.lastResort)return g.debug("Popup could not find a position in view",o),g.error(v.cannotPlace),g.remove.attempts(),g.remove.loading(),g.reset(),!1}return g.debug("Position is on stage",i),g.remove.attempts(),g.set.fluidWidth(),g.remove.loading(),!0},fluidWidth:function(){h.setFluidWidth&&o.hasClass(b.fluid)&&o.css("width",r.width())},visible:function(){C.addClass(b.visible)}},remove:{loading:function(){o.removeClass(b.loading)},visible:function(){C.removeClass(b.visible)},attempts:function(){g.verbose("Resetting all searched positions"),j=0,A=!1}},bind:{popup:function(){g.verbose("Allowing hover events on popup to prevent closing"),o&&g.has.popup()&&o.on("mouseenter"+P,g.event.start).on("mouseleave"+P,g.event.end)},close:function(){(h.hideOnScroll===!0||"auto"==h.hideOnScroll&&"click"!=h.on)&&(a.one("touchmove"+P,g.hideGracefully).one("scroll"+P,g.hideGracefully),k.one("touchmove"+P,g.hideGracefully).one("scroll"+P,g.hideGracefully)),"click"==h.on&&h.closable&&(g.verbose("Binding popup close event to document"),a.on("click"+P,function(e){g.verbose("Pop-up clickaway intent detected"),g.hideGracefully.call(R,e)}))}},unbind:{close:function(){(h.hideOnScroll===!0||"auto"==h.hideOnScroll&&"click"!=h.on)&&(a.off("scroll"+P,g.hide),k.off("scroll"+P,g.hide)),"click"==h.on&&h.closable&&(g.verbose("Removing close event from document"),a.off("click"+P))}},has:{popup:function(){return o&&o.length>0}},is:{active:function(){return C.hasClass(b.active)},animating:function(){return o&&o.is(":animated")||o.hasClass(b.animating)},visible:function(){return o&&o.is(":visible")},dropdown:function(){return C.hasClass(b.dropdown)},hidden:function(){return!g.is.visible()},rtl:function(){return"rtl"==C.css("direction")}},reset:function(){g.remove.visible(),h.preserve?e.fn.transition!==n&&o.transition("remove transition"):g.removePopup()},setting:function(t,o){if(e.isPlainObject(t))e.extend(!0,h,t);else{if(o===n)return h[t];h[t]=o}},internal:function(t,o){if(e.isPlainObject(t))e.extend(!0,g,t);else{if(o===n)return g[t];g[t]=o}},debug:function(){h.debug&&(h.performance?g.performance.log(arguments):(g.debug=Function.prototype.bind.call(console.info,console,h.name+":"),g.debug.apply(console,arguments)))},verbose:function(){h.verbose&&h.debug&&(h.performance?g.performance.log(arguments):(g.verbose=Function.prototype.bind.call(console.info,console,h.name+":"),g.verbose.apply(console,arguments)))},error:function(){g.error=Function.prototype.bind.call(console.error,console,h.name+":"),g.error.apply(console,arguments)},performance:{log:function(e){var t,o,n;h.performance&&(t=(new Date).getTime(),n=p||t,o=t-n,p=t,u.push({Name:e[0],Arguments:[].slice.call(e,1)||"",Element:R,"Execution Time":o})),clearTimeout(g.performance.timer),g.performance.timer=setTimeout(g.performance.display,100)},display:function(){var t=h.name+":",o=0;p=!1,clearTimeout(g.performance.timer),e.each(u,function(e,t){o+=t["Execution Time"]}),t+=" "+o+"ms",l&&(t+=" '"+l+"'"),(console.group!==n||console.table!==n)&&u.length>0&&(console.groupCollapsed(t),console.table?console.table(u):e.each(u,function(e,t){console.log(t.Name+": "+t["Execution Time"]+"ms")}),console.groupEnd()),u=[]}},invoke:function(t,o,i){var r,a,l,p=E;return o=o||f,i=R||i,"string"==typeof t&&p!==n&&(t=t.split(/[\. ]/),r=t.length-1,e.each(t,function(o,i){var s=o!=r?i+t[o+1].charAt(0).toUpperCase()+t[o+1].slice(1):t;if(e.isPlainObject(p[s])&&o!=r)p=p[s];else{if(p[s]!==n)return a=p[s],!1;if(!e.isPlainObject(p[i])||o==r)return p[i]!==n?(a=p[i],!1):!1;p=p[i]}})),e.isFunction(a)?l=a.apply(i,o):a!==n&&(l=a),e.isArray(s)?s.push(l):s!==n?s=[s,l]:l!==n&&(s=l),a}},d?(E===n&&g.initialize(),g.invoke(c)):(E!==n&&g.destroy(),g.initialize())}),s!==n?s:this},e.fn.popup.settings={name:"Popup",debug:!1,verbose:!0,performance:!0,namespace:"popup",onCreate:function(){},onRemove:function(){},onShow:function(){},onVisible:function(){},onHide:function(){},onHidden:function(){},variation:"",content:!1,html:!1,title:!1,on:"hover",closable:!0,hideOnScroll:"auto",context:"body",position:"top left",prefer:"opposite",lastResort:!1,delay:{show:30,hide:0},setFluidWidth:!0,target:!1,popup:!1,inline:!1,preserve:!1,hoverable:!1,duration:200,easing:"easeOutQuint",transition:"scale",distanceAway:0,offset:0,maxSearchDepth:20,error:{invalidPosition:"The position you specified is not a valid position",cannotPlace:"No visible position could be found for the popup",method:"The method you called is not defined."},metadata:{content:"content",html:"html",offset:"offset",position:"position",title:"title",variation:"variation"},className:{active:"active",animating:"animating",dropdown:"dropdown",fluid:"fluid",loading:"loading",popup:"ui popup",position:"top left center bottom right",visible:"visible"},selector:{popup:".ui.popup"},templates:{escape:function(e){var t=/[&<>"'`]/g,o=/[&<>"'`]/,n={"&":"&","<":"<",">":">",'"':""","'":"'","`":"`"},i=function(e){return n[e]};return o.test(e)?e.replace(t,i):e},popup:function(t){var o="",i=e.fn.popup.settings.templates.escape;return typeof t!==n&&(typeof t.title!==n&&t.title&&(t.title=i(t.title),o+='<div class="header">'+t.title+"</div>"),typeof t.content!==n&&t.content&&(t.content=i(t.content),o+='<div class="content">'+t.content+"</div>")),o}}},e.extend(e.easing,{easeOutQuad:function(e,t,o,n,i){return-n*(t/=i)*(t-2)+o}})}(jQuery,window,document);
|