Browse Source

Fixes queuing of dimmer with settings.on hover

pull/2229/head
jlukic 11 years ago
parent
commit
5a1140f240
2 changed files with 66 additions and 67 deletions
  1. 102
      src/modules/dimmer.js
  2. 31
      src/modules/dimmer.less

102
src/modules/dimmer.js

@ -54,8 +54,6 @@ $.fn.dimmer = function(parameters) {
module module
; ;
console.log(element, parameters);
module = { module = {
preinitialize: function() { preinitialize: function() {
@ -152,13 +150,21 @@ $.fn.dimmer = function(parameters) {
animate: { animate: {
show: function(callback) { show: function(callback) {
callback = callback || function(){};
callback = $.isFunction(callback)
? callback
: function(){}
;
module.set.dimmed(); module.set.dimmed();
if($.fn.transition !== undefined) { if($.fn.transition !== undefined) {
$dimmer $dimmer
.transition(settings.transition + ' in', module.get.duration(), function() {
module.set.active();
callback();
.transition({
animation : settings.transition + ' in',
queue : true,
duration : module.get.duration(),
complete : function() {
module.set.active();
callback();
},
}) })
; ;
} }
@ -180,14 +186,22 @@ $.fn.dimmer = function(parameters) {
} }
}, },
hide: function(callback) { hide: function(callback) {
callback = callback || function(){};
module.remove.dimmed();
callback = $.isFunction(callback)
? callback
: function(){}
;
if($.fn.transition !== undefined) { if($.fn.transition !== undefined) {
module.verbose('Hiding dimmer with css'); module.verbose('Hiding dimmer with css');
$dimmer $dimmer
.transition(settings.transition + ' out', module.get.duration(), function() {
module.remove.active();
callback();
.transition({
animation : settings.transition + ' out',
duration : module.get.duration(),
queue : true,
complete : function() {
module.remove.dimmed();
module.remove.active();
callback();
}
}) })
; ;
} }
@ -197,6 +211,7 @@ $.fn.dimmer = function(parameters) {
.stop() .stop()
.fadeOut(module.get.duration(), function() { .fadeOut(module.get.duration(), function() {
$dimmer.removeAttr('style'); $dimmer.removeAttr('style');
module.remove.dimmed();
module.remove.active(); module.remove.active();
callback(); callback();
}) })
@ -229,27 +244,30 @@ $.fn.dimmer = function(parameters) {
}, },
is: { is: {
dimmer: function() {
return $module.is(selector.dimmer);
},
dimmable: function() {
return $module.is(selector.dimmable);
},
active: function() { active: function() {
return $dimmer.hasClass(className.active); return $dimmer.hasClass(className.active);
}, },
animating: function() { animating: function() {
return ( $dimmer.is(':animated') || $dimmer.hasClass(className.transition) ); return ( $dimmer.is(':animated') || $dimmer.hasClass(className.transition) );
}, },
page: function () {
return $dimmable.is('body');
dimmer: function() {
return $module.is(selector.dimmer);
}, },
enabled: function() {
return !$dimmable.hasClass(className.disabled);
dimmable: function() {
return $module.is(selector.dimmable);
},
dimmed: function() {
return $dimmable.hasClass(className.dimmed);
}, },
disabled: function() { disabled: function() {
return $dimmable.hasClass(className.disabled); return $dimmable.hasClass(className.disabled);
}, },
enabled: function() {
return !module.is.disabled();
},
page: function () {
return $dimmable.is('body');
},
pageDimmer: function() { pageDimmer: function() {
return $dimmer.hasClass(className.pageDimmer); return $dimmer.hasClass(className.pageDimmer);
} }
@ -263,6 +281,7 @@ $.fn.dimmer = function(parameters) {
set: { set: {
active: function() { active: function() {
module.set.dimmed();
$dimmer $dimmer
.removeClass(className.transition) .removeClass(className.transition)
.addClass(className.active) .addClass(className.active)
@ -298,8 +317,12 @@ $.fn.dimmer = function(parameters) {
}, },
show: function(callback) { show: function(callback) {
callback = $.isFunction(callback)
? callback
: function(){}
;
module.debug('Showing dimmer', $dimmer, settings); module.debug('Showing dimmer', $dimmer, settings);
if( !(module.is.active() || module.is.animating() ) && module.is.enabled() ) {
if( !module.is.active() && module.is.enabled() ) {
module.animate.show(callback); module.animate.show(callback);
$.proxy(settings.onShow, element)(); $.proxy(settings.onShow, element)();
$.proxy(settings.onChange, element)(); $.proxy(settings.onChange, element)();
@ -310,7 +333,11 @@ $.fn.dimmer = function(parameters) {
}, },
hide: function(callback) { hide: function(callback) {
if( module.is.active() && !module.is.animating() ) {
callback = $.isFunction(callback)
? callback
: function(){}
;
if( module.is.active() || module.is.animating() ) {
module.debug('Hiding dimmer', $dimmer); module.debug('Hiding dimmer', $dimmer);
module.animate.hide(callback); module.animate.hide(callback);
$.proxy(settings.onHide, element)(); $.proxy(settings.onHide, element)();
@ -323,7 +350,7 @@ $.fn.dimmer = function(parameters) {
toggle: function() { toggle: function() {
module.verbose('Toggling dimmer visibility', $dimmer); module.verbose('Toggling dimmer visibility', $dimmer);
if( !module.is.active() ) {
if( !module.is.dimmed() ) {
module.show(); module.show();
} }
else { else {
@ -332,26 +359,22 @@ $.fn.dimmer = function(parameters) {
}, },
setting: function(name, value) { setting: function(name, value) {
if(value !== undefined) {
if( $.isPlainObject(name) ) {
$.extend(true, settings, name);
}
else {
settings[name] = value;
}
if( $.isPlainObject(name) ) {
$.extend(true, settings, name);
}
else if(value !== undefined) {
settings[name] = value;
} }
else { else {
return settings[name]; return settings[name];
} }
}, },
internal: function(name, value) { internal: function(name, value) {
if(value !== undefined) {
if( $.isPlainObject(name) ) {
$.extend(true, module, name);
}
else {
module[name] = value;
}
if( $.isPlainObject(name) ) {
$.extend(true, module, name);
}
else if(value !== undefined) {
module[name] = value;
} }
else { else {
return module[name]; return module[name];
@ -520,12 +543,11 @@ $.fn.dimmer.settings = {
name : 'Dimmer', name : 'Dimmer',
namespace : 'dimmer', namespace : 'dimmer',
verbose : true,
debug : true, debug : true,
verbose : true,
performance : true, performance : true,
transition : 'fade', transition : 'fade',
on : false, on : false,
closable : true, closable : true,
duration : { duration : {

31
src/modules/dimmer.less

@ -74,27 +74,6 @@
z-index: 1000; z-index: 1000;
} }
/*
.ui.dimmed.dimmable > :not(.dimmer) {
-webkit-transition:
filter 0.5s ease
;
-moz-transition:
filter 0.5s ease
;
-o-transition:
filter 0.5s ease
;
-ms-transition:
filter 0.5s ease
;
transition:
filter 0.5s ease
;
}
*/
/* Dimmer Content */; /* Dimmer Content */;
.ui.dimmer > .content { .ui.dimmer > .content {
width: 100%; width: 100%;
@ -129,12 +108,11 @@
/******************************* /*******************************
States States
*******************************/ *******************************/
/*
.ui.dimmed.dimmable > :not(.dimmer) {
-webkit-filter: ~"blur(5px) grayscale(0.7)";
-moz-filter: ~"blur(5px) grayscale(0.7)";
.ui.dimmed.dimmable:not(body) {
overflow: hidden;
} }
*/
.ui.dimmed.dimmable > .ui.dimmer, .ui.dimmed.dimmable > .ui.dimmer,
.ui.active.dimmer { .ui.active.dimmer {
display: block; display: block;
@ -148,7 +126,6 @@
height: 0em !important; height: 0em !important;
} }
/******************************* /*******************************
Variations Variations
*******************************/ *******************************/

Loading…
Cancel
Save