|
|
/* * # Semantic UI * 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,n,a){e.fn.state=function(t){var i,o=e(this),s=o.selector||"",r=("ontouchstart"in n.documentElement,(new Date).getTime()),c=[],u=arguments[0],l="string"==typeof u,d=[].slice.call(arguments,1);return o.each(function(){var n,f=e.isPlainObject(t)?e.extend(!0,{},e.fn.state.settings,t):e.extend({},e.fn.state.settings),g=f.error,v=f.metadata,x=f.className,m=f.namespace,b=f.states,p=f.text,h="."+m,y=m+"-module",T=e(this),C=this,w=T.data(y);n={initialize:function(){n.verbose("Initializing module"),f.automatic&&n.add.defaults(),f.context&&""!==s?e(f.context).on(s,"mouseenter"+h,n.change.text).on(s,"mouseleave"+h,n.reset.text).on(s,"click"+h,n.toggle.state):T.on("mouseenter"+h,n.change.text).on("mouseleave"+h,n.reset.text).on("click"+h,n.toggle.state),n.instantiate()},instantiate:function(){n.verbose("Storing instance of module",n),w=n,T.data(y,n)},destroy:function(){n.verbose("Destroying previous module",w),T.off(h).removeData(y)},refresh:function(){n.verbose("Refreshing selector cache"),T=e(C)},add:{defaults:function(){var i=t&&e.isPlainObject(t.states)?t.states:{};e.each(f.defaults,function(t,o){n.is[t]!==a&&n.is[t]()&&(n.verbose("Adding default states",t,C),e.extend(f.states,o,i))})}},is:{active:function(){return T.hasClass(x.active)},loading:function(){return T.hasClass(x.loading)},inactive:function(){return!T.hasClass(x.active)},state:function(e){return x[e]===a?!1:T.hasClass(x[e])},enabled:function(){return!T.is(f.filter.active)},disabled:function(){return T.is(f.filter.active)},textEnabled:function(){return!T.is(f.filter.text)},button:function(){return T.is(".button:not(a, .submit)")},input:function(){return T.is("input")},progress:function(){return T.is(".ui.progress")}},allow:function(e){n.debug("Now allowing state",e),b[e]=!0},disallow:function(e){n.debug("No longer allowing",e),b[e]=!1},allows:function(e){return b[e]||!1},enable:function(){T.removeClass(x.disabled)},disable:function(){T.addClass(x.disabled)},setState:function(e){n.allows(e)&&T.addClass(x[e])},removeState:function(e){n.allows(e)&&T.removeClass(x[e])},toggle:{state:function(){var t;if(n.allows("active")&&n.is.enabled()){if(n.refresh(),e.fn.api!==a&&(t=T.api("get request")))return void n.listenTo(t);n.change.state()}}},listenTo:function(t){n.debug("API request detected, waiting for state signal",t),t?(p.loading&&n.update.text(p.loading),e.when(t).then(function(){"resolved"==t.state()?(n.debug("API request succeeded"),f.activateTest=function(){return!0},f.deactivateTest=function(){return!0}):(n.debug("API request failed"),f.activateTest=function(){return!1},f.deactivateTest=function(){return!1}),n.change.state()})):(f.activateTest=function(){return!1},f.deactivateTest=function(){return!1})},change:{state:function(){n.debug("Determining state change direction"),n.is.inactive()?n.activate():n.deactivate(),f.sync&&n.sync(),e.proxy(f.onChange,C)()},text:function(){n.is.textEnabled()&&(n.is.disabled()?(n.verbose("Changing text to disabled text",p.hover),n.update.text(p.disabled)):n.is.active()?p.hover?(n.verbose("Changing text to hover text",p.hover),n.update.text(p.hover)):p.deactivate&&(n.verbose("Changing text to deactivating text",p.deactivate),n.update.text(p.deactivate)):p.hover?(n.verbose("Changing text to hover text",p.hover),n.update.text(p.hover)):p.activate&&(n.verbose("Changing text to activating text",p.activate),n.update.text(p.activate)))}},activate:function(){e.proxy(f.activateTest,C)()&&(n.debug("Setting state to active"),T.addClass(x.active),n.update.text(p.active),e.proxy(f.onActivate,C)())},deactivate:function(){e.proxy(f.deactivateTest,C)()&&(n.debug("Setting state to inactive"),T.removeClass(x.active),n.update.text(p.inactive),e.proxy(f.onDeactivate,C)())},sync:function(){n.verbose("Syncing other buttons to current state"),o.not(T).state(n.is.active()?"activate":"deactivate")},get:{text:function(){return f.selector.text?T.find(f.selector.text).text():T.html()},textFor:function(e){return p[e]||!1}},flash:{text:function(t,a,i){var o=n.get.text();n.debug("Flashing text message",t,a),t=t||f.text.flash,a=a||f.flashDuration,i=i||fu
|