mirror of
https://github.com/YunoHost/yunohost-admin.git
synced 2024-09-03 20:06:15 +02:00
Fix sliders bugs...
This commit is contained in:
parent
9c7ed43a24
commit
e2dcb1765f
2 changed files with 96 additions and 0 deletions
|
@ -826,3 +826,10 @@ input[type='radio'].nice-radio {
|
||||||
float: none !important;
|
float: none !important;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.notransition {
|
||||||
|
-webkit-transition: none !important;
|
||||||
|
-moz-transition: none !important;
|
||||||
|
-o-transition: none !important;
|
||||||
|
transition: none !important;
|
||||||
|
}
|
||||||
|
|
|
@ -3,6 +3,46 @@
|
||||||
var app = Sammy.apps['#main'];
|
var app = Sammy.apps['#main'];
|
||||||
var store = app.store;
|
var store = app.store;
|
||||||
|
|
||||||
|
// The logic used to temporily disable transition is from
|
||||||
|
// https://stackoverflow.com/a/16575811
|
||||||
|
function whichTransitionEvent(){
|
||||||
|
var t;
|
||||||
|
var el = document.createElement('fakeelement');
|
||||||
|
var transitions = {
|
||||||
|
'transition':'transitionend',
|
||||||
|
'OTransition':'oTransitionEnd',
|
||||||
|
'MozTransition':'transitionend',
|
||||||
|
'WebkitTransition':'webkitTransitionEnd'
|
||||||
|
}
|
||||||
|
|
||||||
|
for(t in transitions){
|
||||||
|
if( el.style[t] !== undefined ){
|
||||||
|
return transitions[t];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
var transitionEvent = whichTransitionEvent();
|
||||||
|
|
||||||
|
function resetSliders()
|
||||||
|
{
|
||||||
|
// Disable transition effects
|
||||||
|
$('#slider-container').addClass('notransition');
|
||||||
|
// Delete the left/right temporary stuff only used during animation
|
||||||
|
$('#slideTo').css('display', 'none');
|
||||||
|
$('#slideBack').css('display', 'none');
|
||||||
|
// Set the margin-left back to 0
|
||||||
|
$('#slider-container').css('margin-left', '0');
|
||||||
|
// c.f. the stackoverflow thread
|
||||||
|
$('#slider-container')[0].offsetHeight;
|
||||||
|
// Remove the binding to this event handler for next times
|
||||||
|
//$("#slider-container").off(transitionEvent);
|
||||||
|
// Re-enable transition effects
|
||||||
|
$('#slider-container').removeClass('notransition');
|
||||||
|
}
|
||||||
|
// Now we add the transition event to detect the end of the transition effect
|
||||||
|
transitionEvent && $("#slider-container").on(transitionEvent, resetSliders)
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Helpers
|
* Helpers
|
||||||
*
|
*
|
||||||
|
@ -282,20 +322,69 @@
|
||||||
|
|
||||||
// Slide back effect
|
// Slide back effect
|
||||||
if (enableSlide && store.get('slide') == 'back') {
|
if (enableSlide && store.get('slide') == 'back') {
|
||||||
|
|
||||||
store.clear('slide');
|
store.clear('slide');
|
||||||
|
// Disable transition while we tweak CSS
|
||||||
|
$('#slider-container').addClass('notransition');
|
||||||
|
// "Delete" the left part of the slider
|
||||||
$('#slideBack').css('display', 'none');
|
$('#slideBack').css('display', 'none');
|
||||||
|
|
||||||
|
// Push the slider to the left
|
||||||
$('#slider-container').css('margin-left', '-100%');
|
$('#slider-container').css('margin-left', '-100%');
|
||||||
|
// slideTo is the right part, and should contain the old view,
|
||||||
|
// so we copypasta what's in the "center" slider (#main)
|
||||||
$('#slideTo').show().html($('#main').html());
|
$('#slideTo').show().html($('#main').html());
|
||||||
|
// leSwap will put the new view in the "center" slider (#main)
|
||||||
leSwap();
|
leSwap();
|
||||||
|
|
||||||
|
// So now things look like:
|
||||||
|
// | |
|
||||||
|
// | the screen |
|
||||||
|
// | |
|
||||||
|
//
|
||||||
|
// . #main . #slideTo .
|
||||||
|
// . the new view . the old view .
|
||||||
|
// ^ ^
|
||||||
|
// margin-left: -100% currently shown
|
||||||
|
//
|
||||||
|
// =====>>> sliiiiide =====>>>
|
||||||
|
|
||||||
|
// Re-add transition effect
|
||||||
|
$('#slider-container').removeClass('notransition');
|
||||||
|
// And actually play the transition effect that will move the container from left to right
|
||||||
$('#slider-container').css('margin-left', '0px');
|
$('#slider-container').css('margin-left', '0px');
|
||||||
}
|
}
|
||||||
// Slide to effect
|
// Slide to effect
|
||||||
else if (enableSlide && store.get('slide') == 'to') {
|
else if (enableSlide && store.get('slide') == 'to') {
|
||||||
store.clear('slide');
|
store.clear('slide');
|
||||||
|
// Disable transition while we tweak CSS
|
||||||
|
$('#slider-container').addClass('notransition');
|
||||||
|
// "Delete" the right part of the slider
|
||||||
$('#slideTo').css('display', 'none');
|
$('#slideTo').css('display', 'none');
|
||||||
|
// Push the slider to the right
|
||||||
$('#slider-container').css('margin-left', '0px');
|
$('#slider-container').css('margin-left', '0px');
|
||||||
|
// slideBack should contain the old view,
|
||||||
|
// so we copypasta what's in the "center" slider (#main)
|
||||||
$('#slideBack').show().html($('#main').html());
|
$('#slideBack').show().html($('#main').html());
|
||||||
leSwap();
|
leSwap();
|
||||||
|
|
||||||
|
// So now things look like:
|
||||||
|
//
|
||||||
|
// | |
|
||||||
|
// | the screen |
|
||||||
|
// | |
|
||||||
|
//
|
||||||
|
// . . #slideBack . #main .
|
||||||
|
// . . the old view . the new view .
|
||||||
|
// ^ ^ ^
|
||||||
|
// margin-left: -100% currently shown
|
||||||
|
//
|
||||||
|
// <<<===== sliiiiide <<<=======
|
||||||
|
|
||||||
|
|
||||||
|
// Re-add transition effect
|
||||||
|
$('#slider-container').removeClass('notransition');
|
||||||
|
// And actually play the transition effect that will move the container from right to left
|
||||||
$('#slider-container').css('margin-left', '-100%');
|
$('#slider-container').css('margin-left', '-100%');
|
||||||
}
|
}
|
||||||
// No slideing effect
|
// No slideing effect
|
||||||
|
|
Loading…
Reference in a new issue