Skip to content
This repository was archived by the owner on May 1, 2024. It is now read-only.

Commit a1403de

Browse files
Issue 1883 Snackbar button is missed (#1886)
* Issue 1883 Snackbar button is missed * Move to Test cases
1 parent 12f9d71 commit a1403de

File tree

6 files changed

+73
-5
lines changed

6 files changed

+73
-5
lines changed
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<pages:BasePage xmlns="http://xamarin.com/schemas/2014/forms"
3+
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
4+
xmlns:pages="clr-namespace:Xamarin.CommunityToolkit.Sample.Pages"
5+
x:Class="Xamarin.CommunityToolkit.Sample.Pages.Views.Issue1883Page">
6+
<StackLayout Spacing="10" Margin="20">
7+
<Button Clicked="Issue1883" Text="Show snackbar"/>
8+
<Label x:Name="StatusText"/>
9+
</StackLayout>
10+
</pages:BasePage>
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Diagnostics;
4+
using System.Globalization;
5+
using System.Text;
6+
using System.Threading.Tasks;
7+
using Xamarin.CommunityToolkit.Extensions;
8+
using Xamarin.CommunityToolkit.UI.Views.Options;
9+
using Xamarin.Forms;
10+
11+
namespace Xamarin.CommunityToolkit.Sample.Pages.Views
12+
{
13+
public partial class Issue1883Page : BasePage
14+
{
15+
public Issue1883Page() => InitializeComponent();
16+
17+
async void Issue1883(object sender, EventArgs args)
18+
{
19+
var options = new SnackBarOptions
20+
{
21+
MessageOptions = new MessageOptions
22+
{
23+
Foreground = Color.DodgerBlue,
24+
Padding = new Thickness(10, 20, 30, 40),
25+
Message = "Pour supprimer un élément de votre liste hors connexion, faites glisser l'élément vers la droite"
26+
},
27+
BackgroundColor = Color.Aquamarine,
28+
Duration = TimeSpan.FromSeconds(5),
29+
CornerRadius = new Thickness(10, 20, 30, 40),
30+
Actions = new[]
31+
{
32+
new SnackBarActionOptions
33+
{
34+
Text = "I've completed this",
35+
BackgroundColor = (Color.Aqua),
36+
ForegroundColor = Color.Brown,
37+
Padding = new Thickness(40, 30, 20, 10),
38+
Action = () => Task.FromResult(true)
39+
},
40+
}
41+
};
42+
43+
var result = await this.DisplaySnackBarAsync(options);
44+
StatusText.Text = result ? "SnackBar is closed by user" : "SnackBar is closed by timeout";
45+
}
46+
}
47+
}

samples/XCT.Sample/Pages/Views/SnackBarPage.xaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
<?xml version="1.0" encoding="UTF-8"?>
1+
<?xml version="1.0" encoding="UTF-8"?>
22
<pages:BasePage xmlns="http://xamarin.com/schemas/2014/forms"
33
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
44
xmlns:pages="clr-namespace:Xamarin.CommunityToolkit.Sample.Pages"
@@ -15,7 +15,7 @@
1515
<Button x:Name="Anchor2"
1616
Clicked="DisplaySnackbarAnchoredClicked"
1717
Text="Show snackbar with anchor"/>
18-
18+
1919
<Label x:Name="StatusText"/>
2020
</StackLayout>
2121
</pages:BasePage>

samples/XCT.Sample/ViewModels/TestCases/TestCasesGalleryViewModel.cs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
using Xamarin.CommunityToolkit.Sample.Models;
33
using Xamarin.CommunityToolkit.Sample.Pages.TestCases;
44
using Xamarin.CommunityToolkit.Sample.Pages.TestCases.Popups;
5+
using Xamarin.CommunityToolkit.Sample.Pages.Views;
56

67
namespace Xamarin.CommunityToolkit.Sample.ViewModels.TestCases
78
{
@@ -48,11 +49,16 @@ protected override IEnumerable<SectionModel> CreateItems() => new[]
4849
typeof(SnackBarActionExceptionPage),
4950
"SnackBar Action Exception",
5051
"Exception in SnackBar's action doesn't crash the app."),
52+
53+
new SectionModel(
54+
typeof(Issue1883Page),
55+
"SnackBar iOS issue GitHub #1883",
56+
"Snackbar with 1 action button"),
5157

5258
new SectionModel(
5359
typeof(DrawingViewInExpanderPage),
5460
"DrawingView in expander",
55-
"DrawingView in Expander Page"),
61+
"DrawingView in Expander Page")
5662
};
5763
}
5864
}

src/CommunityToolkit/Xamarin.CommunityToolkit/Views/MediaElement/iOS/MediaElementRenderer.ios.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,9 @@ protected virtual void UpdateSource()
7474
}
7575
else if (uriSource.Uri != null)
7676
{
77-
asset = AVUrlAsset.Create(NSUrl.FromString(uriSource.Uri.AbsoluteUri));
77+
var nsUrl = NSUrl.FromString(uriSource.Uri.AbsoluteUri) ??
78+
throw new NullReferenceException("NSUrl is null");
79+
asset = AVUrlAsset.Create(nsUrl);
7880
}
7981
else
8082
{

src/CommunityToolkit/Xamarin.CommunityToolkit/Views/Snackbar/Helpers/iOS/SnackbarViews/ActionMessageSnackBarView.ios.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using System;
22
using CoreGraphics;
3+
using UIKit;
34
using Xamarin.CommunityToolkit.UI.Views.Helpers.iOS.SnackBarViews;
45

56
namespace Xamarin.CommunityToolkit.UI.Views.Helpers.iOS
@@ -16,9 +17,11 @@ protected override void Initialize(CGRect cornerRadius)
1617
base.Initialize(cornerRadius);
1718

1819
_ = StackView ?? throw new NullReferenceException();
19-
20+
const float actionButtonPriority = 1000;
2021
foreach (var actionButton in SnackBar.Actions)
2122
{
23+
actionButton.SetContentHuggingPriority(actionButtonPriority, UILayoutConstraintAxis.Horizontal);
24+
actionButton.SetContentCompressionResistancePriority(actionButtonPriority, UILayoutConstraintAxis.Horizontal);
2225
StackView.AddArrangedSubview(actionButton);
2326
}
2427
}

0 commit comments

Comments
 (0)