public MessageSnackBarView(NativeSnackBar snackBar) : base(snackBar) { }
internal ValueTask Show(VisualElement sender, SnackBarOptions arguments) { var snackBar = NativeSnackBar.MakeSnackBar(arguments.MessageOptions.Message) .SetDuration(arguments.Duration) .SetCornerRadius(arguments.CornerRadius) .SetTimeoutAction(() => { arguments.SetResult(false); return(Task.CompletedTask); }); #if __IOS__ if (arguments.BackgroundColor != Color.Default) { snackBar.Appearance.Background = arguments.BackgroundColor.ToUIColor(); } if (arguments.MessageOptions.Font != Font.Default) { snackBar.Appearance.Font = arguments.MessageOptions.Font.ToUIFont(); } if (arguments.MessageOptions.Foreground != Color.Default) { snackBar.Appearance.Foreground = arguments.MessageOptions.Foreground.ToUIColor(); } if (arguments.MessageOptions.Padding != MessageOptions.DefaultPadding) { snackBar.Layout.PaddingTop = (nfloat)arguments.MessageOptions.Padding.Top; snackBar.Layout.PaddingLeft = (nfloat)arguments.MessageOptions.Padding.Left; snackBar.Layout.PaddingBottom = (nfloat)arguments.MessageOptions.Padding.Bottom; snackBar.Layout.PaddingRight = (nfloat)arguments.MessageOptions.Padding.Right; } snackBar.Appearance.TextAlignment = arguments.IsRtl ? UITextAlignment.Right : UITextAlignment.Left; if (!UIDevice.CurrentDevice.CheckSystemVersion(11, 0)) { snackBar.Layout.PaddingTop = (nfloat)arguments.MessageOptions.Padding.Top; snackBar.Layout.PaddingLeft = (nfloat)arguments.MessageOptions.Padding.Left; snackBar.Layout.PaddingBottom = (nfloat)arguments.MessageOptions.Padding.Bottom; snackBar.Layout.PaddingRight = (nfloat)arguments.MessageOptions.Padding.Right; } snackBar.Appearance.TextAlignment = arguments.IsRtl ? UITextAlignment.Right : UITextAlignment.Left; #elif __MACOS__ if (arguments.BackgroundColor != Color.Default) { snackBar.Appearance.Background = arguments.BackgroundColor.ToNSColor(); } if (arguments.MessageOptions.Font != Font.Default) { snackBar.Appearance.Font = arguments.MessageOptions.Font.ToNSFont(); } if (arguments.MessageOptions.Foreground != Color.Default) { snackBar.Appearance.Foreground = arguments.MessageOptions.Foreground.ToNSColor(); } snackBar.Appearance.TextAlignment = arguments.IsRtl ? NSTextAlignment.Right : NSTextAlignment.Left; #endif if (sender is not Page) { var renderer = Platform.GetRenderer(sender); snackBar.SetAnchor(renderer.NativeView); } foreach (var action in arguments.Actions) { var actionButton = new NativeSnackButton(action.Padding.Left, action.Padding.Top, action.Padding.Right, action.Padding.Bottom); actionButton.SetActionButtonText(action.Text); #if __IOS__ if (action.BackgroundColor != Color.Default) { actionButton.BackgroundColor = action.BackgroundColor.ToUIColor(); } if (action.Font != Font.Default) { actionButton.Font = action.Font.ToUIFont(); } if (action.ForegroundColor != Color.Default) { actionButton.SetTitleColor(action.ForegroundColor.ToUIColor(), UIControlState.Normal); } #elif __MACOS__ if (action.BackgroundColor != Color.Default && actionButton.Layer != null) { actionButton.Layer.BackgroundColor = action.BackgroundColor.ToCGColor(); } if (action.Font != Font.Default) { actionButton.Font = action.Font.ToNSFont(); } #endif actionButton.SetAction(async() => { snackBar.Dismiss(); if (action.Action != null) { await action.Action(); } arguments.SetResult(true); }); snackBar.Actions.Add(actionButton); } snackBar.Show(); return(default);
internal void Show(Page sender, SnackBarOptions arguments) { var snackBar = NativeSnackBar.MakeSnackBar(arguments.MessageOptions.Message) .SetDuration(arguments.Duration.TotalMilliseconds) .SetTimeoutAction(() => { arguments.SetResult(false); return(Task.CompletedTask); }); #if __IOS__ if (arguments.BackgroundColor != Color.Default) { snackBar.Appearance.Background = arguments.BackgroundColor.ToUIColor(); } if (arguments.MessageOptions.Font != Font.Default) { snackBar.Appearance.Font = arguments.MessageOptions.Font.ToUIFont(); } if (arguments.MessageOptions.Foreground != Color.Default) { snackBar.Appearance.Foreground = arguments.MessageOptions.Foreground.ToUIColor(); } snackBar.Appearance.TextAlignment = arguments.IsRtl ? UITextAlignment.Right : UITextAlignment.Left; if (!UIDevice.CurrentDevice.CheckSystemVersion(11, 0)) { var renderer = Platform.GetRenderer(sender); snackBar.SetParentController(renderer.ViewController); } #elif __MACOS__ if (arguments.BackgroundColor != Color.Default) { snackBar.Appearance.Background = arguments.BackgroundColor.ToNSColor(); } if (arguments.MessageOptions.Font != Font.Default) { snackBar.Appearance.Font = arguments.MessageOptions.Font.ToNSFont(); } if (arguments.MessageOptions.Foreground != Color.Default) { snackBar.Appearance.Foreground = arguments.MessageOptions.Foreground.ToNSColor(); } snackBar.Appearance.TextAlignment = arguments.IsRtl ? NSTextAlignment.Right : NSTextAlignment.Left; #endif foreach (var action in arguments.Actions) { var actionButton = new NativeActionButton(); actionButton.SetActionButtonText(action.Text); #if __IOS__ if (action.BackgroundColor != Color.Default) { actionButton.Appearance.Background = action.BackgroundColor.ToUIColor(); } if (action.Font != Font.Default) { actionButton.Appearance.Font = action.Font.ToUIFont(); } if (action.ForegroundColor != Color.Default) { actionButton.Appearance.Foreground = action.ForegroundColor.ToUIColor(); } #elif __MACOS__ if (action.BackgroundColor != Color.Default) { actionButton.Appearance.Background = action.BackgroundColor.ToNSColor(); } if (action.Font != Font.Default) { actionButton.Appearance.Font = action.Font.ToNSFont(); } if (action.ForegroundColor != Color.Default) { actionButton.Appearance.Foreground = action.ForegroundColor.ToNSColor(); } #endif actionButton.SetAction(async() => { snackBar.Dismiss(); await action.Action(); arguments.SetResult(true); }); snackBar.Actions.Add(actionButton); } snackBar.Show(); }
protected BaseSnackBarView(NativeSnackBar snackBar) => SnackBar = snackBar;
public BaseSnackBarView(NativeSnackBar snackBar) => SnackBar = snackBar;