feat: add option to disable animation.
This commit is contained in:
@@ -126,7 +126,10 @@ public partial class OverlayDialogHost
|
|||||||
{
|
{
|
||||||
_modalCount--;
|
_modalCount--;
|
||||||
HasModal = _modalCount > 0;
|
HasModal = _modalCount > 0;
|
||||||
await _maskDisappearAnimation.RunAsync(layer.Mask);
|
if (!IsAnimationDisabled)
|
||||||
|
{
|
||||||
|
await _maskDisappearAnimation.RunAsync(layer.Mask);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -156,7 +159,10 @@ public partial class OverlayDialogHost
|
|||||||
SetToPosition(control);
|
SetToPosition(control);
|
||||||
control.AddHandler(OverlayFeedbackElement.ClosedEvent, OnDialogControlClosing);
|
control.AddHandler(OverlayFeedbackElement.ClosedEvent, OnDialogControlClosing);
|
||||||
control.AddHandler(DialogControlBase.LayerChangedEvent, OnDialogLayerChanged);
|
control.AddHandler(DialogControlBase.LayerChangedEvent, OnDialogLayerChanged);
|
||||||
_maskAppearAnimation.RunAsync(mask);
|
if (!IsAnimationDisabled)
|
||||||
|
{
|
||||||
|
_maskAppearAnimation.RunAsync(mask);
|
||||||
|
}
|
||||||
_modalCount++;
|
_modalCount++;
|
||||||
HasModal = _modalCount > 0;
|
HasModal = _modalCount > 0;
|
||||||
control.IsClosed = false;
|
control.IsClosed = false;
|
||||||
|
|||||||
@@ -28,13 +28,20 @@ public partial class OverlayDialogHost
|
|||||||
SetDrawerPosition(control);
|
SetDrawerPosition(control);
|
||||||
control.AddHandler(OverlayFeedbackElement.ClosedEvent, OnDrawerControlClosing);
|
control.AddHandler(OverlayFeedbackElement.ClosedEvent, OnDrawerControlClosing);
|
||||||
var animation = CreateAnimation(control.Bounds.Size, control.Position, true);
|
var animation = CreateAnimation(control.Bounds.Size, control.Position, true);
|
||||||
if (mask is null)
|
if (IsAnimationDisabled)
|
||||||
{
|
{
|
||||||
await animation.RunAsync(control);
|
ResetDrawerPosition(control, this.Bounds.Size);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
await Task.WhenAll(animation.RunAsync(control), _maskAppearAnimation.RunAsync(mask));
|
if (mask is null)
|
||||||
|
{
|
||||||
|
await animation.RunAsync(control);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
await Task.WhenAll(animation.RunAsync(control), _maskAppearAnimation.RunAsync(mask));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -52,7 +59,14 @@ public partial class OverlayDialogHost
|
|||||||
HasModal = _modalCount > 0;
|
HasModal = _modalCount > 0;
|
||||||
control.AddHandler(OverlayFeedbackElement.ClosedEvent, OnDrawerControlClosing);
|
control.AddHandler(OverlayFeedbackElement.ClosedEvent, OnDrawerControlClosing);
|
||||||
var animation = CreateAnimation(control.Bounds.Size, control.Position);
|
var animation = CreateAnimation(control.Bounds.Size, control.Position);
|
||||||
await Task.WhenAll(animation.RunAsync(control), _maskAppearAnimation.RunAsync(mask));
|
if (IsAnimationDisabled)
|
||||||
|
{
|
||||||
|
ResetDrawerPosition(control, this.Bounds.Size);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
await Task.WhenAll(animation.RunAsync(control), _maskAppearAnimation.RunAsync(mask));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void SetDrawerPosition(DrawerControlBase control)
|
private void SetDrawerPosition(DrawerControlBase control)
|
||||||
@@ -150,15 +164,20 @@ public partial class OverlayDialogHost
|
|||||||
_modalCount--;
|
_modalCount--;
|
||||||
HasModal = _modalCount > 0;
|
HasModal = _modalCount > 0;
|
||||||
layer.Mask.RemoveHandler(PointerPressedEvent, ClickMaskToCloseDialog);
|
layer.Mask.RemoveHandler(PointerPressedEvent, ClickMaskToCloseDialog);
|
||||||
var disappearAnimation = CreateAnimation(control.Bounds.Size, control.Position, false);
|
if (!IsAnimationDisabled)
|
||||||
await Task.WhenAll(disappearAnimation.RunAsync(control), _maskDisappearAnimation.RunAsync(layer.Mask));
|
{
|
||||||
|
var disappearAnimation = CreateAnimation(control.Bounds.Size, control.Position, false);
|
||||||
|
await Task.WhenAll(disappearAnimation.RunAsync(control), _maskDisappearAnimation.RunAsync(layer.Mask));
|
||||||
|
}
|
||||||
Children.Remove(layer.Mask);
|
Children.Remove(layer.Mask);
|
||||||
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
var disappearAnimation = CreateAnimation(control.Bounds.Size, control.Position, false);
|
if (!IsAnimationDisabled)
|
||||||
await disappearAnimation.RunAsync(control);
|
{
|
||||||
|
var disappearAnimation = CreateAnimation(control.Bounds.Size, control.Position, false);
|
||||||
|
await disappearAnimation.RunAsync(control);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Children.Remove(control);
|
Children.Remove(control);
|
||||||
ResetZIndices();
|
ResetZIndices();
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ public partial class OverlayDialogHost: Canvas
|
|||||||
private static readonly Animation _maskAppearAnimation;
|
private static readonly Animation _maskAppearAnimation;
|
||||||
private static readonly Animation _maskDisappearAnimation;
|
private static readonly Animation _maskDisappearAnimation;
|
||||||
|
|
||||||
private readonly List<DialogPair> _layers = new List<DialogPair>();
|
private readonly List<DialogPair> _layers = new List<DialogPair>(10);
|
||||||
|
|
||||||
private class DialogPair
|
private class DialogPair
|
||||||
{
|
{
|
||||||
@@ -44,6 +44,8 @@ public partial class OverlayDialogHost: Canvas
|
|||||||
private set => SetAndRaise(HasModalProperty, ref _hasModal, value);
|
private set => SetAndRaise(HasModalProperty, ref _hasModal, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public bool IsAnimationDisabled { get; set; }
|
||||||
|
|
||||||
static OverlayDialogHost()
|
static OverlayDialogHost()
|
||||||
{
|
{
|
||||||
ClipToBoundsProperty.OverrideDefaultValue<OverlayDialogHost>(true);
|
ClipToBoundsProperty.OverrideDefaultValue<OverlayDialogHost>(true);
|
||||||
|
|||||||
Reference in New Issue
Block a user