Skip to content

Commit

Permalink
Merge pull request #126 from AvaloniaCommunity/dev
Browse files Browse the repository at this point in the history
v2.5.0
  • Loading branch information
SKProCH authored Nov 28, 2021
2 parents 6786f19 + ffec0f9 commit fbe0790
Show file tree
Hide file tree
Showing 23 changed files with 465 additions and 240 deletions.
13 changes: 11 additions & 2 deletions Material.Avalonia/Material.Avalonia.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
<VersionPrefix>2.4.1</VersionPrefix>
<VersionPrefix>2.5.0</VersionPrefix>
<Title>Material.Avalonia</Title>
<Authors>Larymar,SKProCH,Appleneko2001</Authors>
<Description>This repository is a set of styles that will help you customize your application in an appropriate material design.</Description>
Expand All @@ -12,7 +12,16 @@
<RepositoryType>git</RepositoryType>
<LangVersion>8</LangVersion>
<PackageReleaseNotes>
- Add support for vertically scrolling textboxes
- Allow the alignment of the snackbar to be configured #116
- Prevent ArgumentNullException in StringToTransformConverter
- Replacing IBrush instead of Brush class in RippleEffect #114
- Deprecate and replace Transitions instead of Animations in TreeView #117
- Update DialogHost package, coerce styles, add examples #94
- Replace ContentControl in CustomDialog with ContentPresenter for Content #121
- Add recursive BundledTheme finding in resources for theming #120
- Fix doubling the padding of the Card
- Add Label style #123
- Fix show password button is not visible until clicked #124
</PackageReleaseNotes>
</PropertyGroup>

Expand Down
8 changes: 8 additions & 0 deletions Material.Demo/Models/Sample2Model.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
namespace Material.Demo.Models {
public class Sample2Model {
public Sample2Model(int number) {
Number = number;
}
public int Number { get; set; }
}
}
9 changes: 9 additions & 0 deletions Material.Demo/Pages/ComboBoxesDemo.axaml
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
xmlns:styles="clr-namespace:Material.Styles;assembly=Material.Styles"
xmlns:showMeTheXaml="clr-namespace:ShowMeTheXaml;assembly=ShowMeTheXaml.Avalonia"
xmlns:assist="clr-namespace:Material.Styles.Assists;assembly=Material.Styles"
x:Class="Material.Demo.Pages.ComboBoxesDemo">
<StackPanel Margin="16, 0" HorizontalAlignment="Stretch">
<TextBlock Classes="Headline4 Subheadline" Text="ComboBoxes" />
Expand Down Expand Up @@ -42,6 +43,14 @@
<TextBlock Text="Item 4" />
</ComboBox>
</showMeTheXaml:XamlDisplay>
<showMeTheXaml:XamlDisplay UniqueId="ComboBoxes3">
<ComboBox Classes="Outline" assist:ComboBoxAssist.Label="ComboBox">
<TextBlock Text="Item 1" />
<TextBlock Text="Item 2" />
<TextBlock Text="Item 3" />
<TextBlock Text="Item 4" />
</ComboBox>
</showMeTheXaml:XamlDisplay>
</StackPanel>
</StackPanel>
</WrapPanel>
Expand Down
199 changes: 116 additions & 83 deletions Material.Demo/Pages/DialogDemo.axaml
Original file line number Diff line number Diff line change
@@ -1,98 +1,131 @@
<UserControl xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:styles="clr-namespace:Material.Styles;assembly=Material.Styles"
xmlns:viewModels="clr-namespace:Material.Demo.ViewModels"
x:Class="Material.Demo.Pages.DialogDemo"
x:DataType="viewModels:DialogDemoViewModel">
<StackPanel Margin="16, 0">
<TextBlock Classes="Headline4 Subheadline" Text="Dialogs"/>

<WrapPanel>
<WrapPanel.Styles>
<Style Selector="WrapPanel > StackPanel,
WrapPanel > Grid">
<Setter Property="Width" Value="300"/>
<Setter Property="MinHeight" Value="300"/>
</Style>
<Style Selector="WrapPanel > StackPanel > StackPanel,
WrapPanel > Grid > StackPanel">
<Setter Property="HorizontalAlignment" Value="Center"/>
<Setter Property="VerticalAlignment" Value="Center"/>
<Setter Property="Margin" Value="8"/>
</Style>
<Style Selector="WrapPanel > Grid > StackPanel > StackPanel,
WrapPanel > StackPanel > StackPanel > StackPanel">
<Setter Property="Margin" Value="8"/>
</Style>
</WrapPanel.Styles>
<Grid>
<TextBlock Classes="Headline6 Subheadline2" Text="From DialogHost"/>
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:styles="clr-namespace:Material.Styles;assembly=Material.Styles"
xmlns:viewModels="clr-namespace:Material.Demo.ViewModels"
xmlns:dialogHost="clr-namespace:DialogHost;assembly=DialogHost.Avalonia"
xmlns:models="clr-namespace:Material.Demo.Models"
x:Class="Material.Demo.Pages.DialogDemo"
x:DataType="viewModels:DialogDemoViewModel">
<UserControl.Resources>
<StackPanel x:Key="Sample2View">
<ProgressBar Classes="Circle" IsIndeterminate="True" />
<Button Margin="0 16 0 0"
Command="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType=dialogHost:DialogHost}, Path=CloseDialogCommand}">
CLOSE
</Button>
</StackPanel>
</UserControl.Resources>
<dialogHost:DialogHost Identifier="MainDialogHost">
<dialogHost:DialogHost.DialogContentTemplate>
<DataTemplate DataType="models:Sample2Model">
<StackPanel>
<Button Content="DialogHost is still preparing" IsEnabled="False"/>
<TextBlock TextAlignment="Center">Your lucky number:</TextBlock>
<TextBlock Classes="Body1"
TextAlignment="Center"
Text="{Binding Number}" />
<Button Margin="0 8 0 0"
Command="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType=dialogHost:DialogHost}, Path=CloseDialogCommand}">
THANKS, CLOSE
</Button>
</StackPanel>
</Grid>
<StackPanel>
<TextBlock Classes="Headline6 Subheadline2" Text="In messagebox"/>
<StackPanel>
</DataTemplate>
</dialogHost:DialogHost.DialogContentTemplate>
<StackPanel Margin="16, 0">
<TextBlock Classes="Headline4 Subheadline" Text="Dialogs" />

<WrapPanel>
<WrapPanel.Styles>
<Style Selector="WrapPanel > StackPanel,
WrapPanel > Grid">
<Setter Property="Width" Value="300" />
<Setter Property="MinHeight" Value="300" />
</Style>
<Style Selector="WrapPanel > StackPanel > StackPanel,
WrapPanel > Grid > StackPanel">
<Setter Property="HorizontalAlignment" Value="Center" />
<Setter Property="VerticalAlignment" Value="Center" />
<Setter Property="Margin" Value="8" />
</Style>
<Style
Selector="WrapPanel > Grid > StackPanel > StackPanel,
WrapPanel > StackPanel > StackPanel > StackPanel">
<Setter Property="Margin" Value="8" />
</Style>
</WrapPanel.Styles>
<Grid>
<TextBlock Classes="Headline6 Subheadline2" Text="From DialogHost" />
<StackPanel>
<Button Content="Show dialog #1" Command="{Binding Dialog1}"/>
<TextBlock Text="{CompiledBinding Dialog1Result}"
IsVisible="{CompiledBinding Dialog1Result, FallbackValue=False,
Converter={x:Static StringConverters.IsNotNullOrEmpty}}"
Margin="8" HorizontalAlignment="Center"/>
<TextBlock TextWrapping="Wrap">Top level dialog with custom corner radius, using OpenDialog, passing content via the Parameter. You can pass a view model, provided a corresponding DataTemplate can be found in the scope of the root DialogHost.</TextBlock>
<StackPanel Margin="8 8 8 0">
<Button Margin="8" Click="OpenDialogWithView">PASS VIEW</Button>
<Button Margin="8" Click="OpenDialogWithModel">PASS MODEL</Button>
<Button Margin="8" Click="OpenMoreDialogHostExamples">MORE EXAMPLES</Button>
</StackPanel>
</StackPanel>
</Grid>
<StackPanel>
<TextBlock Classes="Headline6 Subheadline2" Text="In messagebox" />
<StackPanel>
<Button Content="Show dialog #2" Command="{Binding Dialog2}"/>
<TextBlock Text="{CompiledBinding Dialog2Result}"
IsVisible="{CompiledBinding Dialog2Result, FallbackValue=False,
<StackPanel>
<Button Content="Show dialog #1" Command="{Binding Dialog1}" />
<TextBlock Text="{CompiledBinding Dialog1Result}"
IsVisible="{CompiledBinding Dialog1Result, FallbackValue=False,
Converter={x:Static StringConverters.IsNotNullOrEmpty}}"
Margin="8" HorizontalAlignment="Center"/>
</StackPanel>
<StackPanel>
<Button Content="Show dialog #3" Command="{Binding Dialog3}"/>
<TextBlock Text="{CompiledBinding Dialog3Result}"
IsVisible="{CompiledBinding Dialog3Result,
Margin="8" HorizontalAlignment="Center" />
</StackPanel>
<StackPanel>
<Button Content="Show dialog #2" Command="{Binding Dialog2}" />
<TextBlock Text="{CompiledBinding Dialog2Result}"
IsVisible="{CompiledBinding Dialog2Result, FallbackValue=False,
Converter={x:Static StringConverters.IsNotNullOrEmpty}}"
Margin="8" HorizontalAlignment="Center" />
</StackPanel>
<StackPanel>
<Button Content="Show dialog #3" Command="{Binding Dialog3}" />
<TextBlock Text="{CompiledBinding Dialog3Result}"
IsVisible="{CompiledBinding Dialog3Result,
FallbackValue=False, Converter={x:Static StringConverters.IsNotNullOrEmpty}}"
Margin="8" HorizontalAlignment="Center"/>
</StackPanel>
<StackPanel>
<Button Content="Show dialog #4" Command="{Binding Dialog4}"/>
<TextBlock Text="{CompiledBinding Dialog4Result}"
IsVisible="{CompiledBinding Dialog4Result,
Margin="8" HorizontalAlignment="Center" />
</StackPanel>
<StackPanel>
<Button Content="Show dialog #4" Command="{Binding Dialog4}" />
<TextBlock Text="{CompiledBinding Dialog4Result}"
IsVisible="{CompiledBinding Dialog4Result,
FallbackValue=False, Converter={x:Static StringConverters.IsNotNullOrEmpty}}"
Margin="8" HorizontalAlignment="Center"/>
</StackPanel>
<StackPanel>
<Button Content="Login dialog" Command="{Binding LoginDialog}"/>
<TextBlock Text="{CompiledBinding LoginDialogResult}"
IsVisible="{CompiledBinding LoginDialogResult,
Margin="8" HorizontalAlignment="Center" />
</StackPanel>
<StackPanel>
<Button Content="Login dialog" Command="{Binding LoginDialog}" />
<TextBlock Text="{CompiledBinding LoginDialogResult}"
IsVisible="{CompiledBinding LoginDialogResult,
FallbackValue=False, Converter={x:Static StringConverters.IsNotNullOrEmpty}}"
Margin="8" HorizontalAlignment="Center"/>
</StackPanel>
<StackPanel>
<Button Content="Rename file dialog" Command="{Binding FolderNameDialog}"/>
<TextBlock Text="{CompiledBinding FolderNameDialogResult}"
IsVisible="{CompiledBinding FolderNameDialogResult,
Margin="8" HorizontalAlignment="Center" />
</StackPanel>
<StackPanel>
<Button Content="Rename file dialog" Command="{Binding FolderNameDialog}" />
<TextBlock Text="{CompiledBinding FolderNameDialogResult}"
IsVisible="{CompiledBinding FolderNameDialogResult,
FallbackValue=False, Converter={x:Static StringConverters.IsNotNullOrEmpty}}"
Margin="8" HorizontalAlignment="Center"/>
</StackPanel>
<StackPanel>
<Button Content="TimePicker dialog" Command="{Binding TimePickerDialog}"/>
<TextBlock Text="{CompiledBinding TimePickerDialogResult}"
IsVisible="{CompiledBinding TimePickerDialogResult,
Margin="8" HorizontalAlignment="Center" />
</StackPanel>
<StackPanel>
<Button Content="TimePicker dialog" Command="{Binding TimePickerDialog}" />
<TextBlock Text="{CompiledBinding TimePickerDialogResult}"
IsVisible="{CompiledBinding TimePickerDialogResult,
FallbackValue=False, Converter={x:Static StringConverters.IsNotNullOrEmpty}}"
Margin="8" HorizontalAlignment="Center"/>
</StackPanel>
<StackPanel>
<Button Content="DatePicker dialog" Command="{Binding DatePickerDialog}"/>
<TextBlock Text="{CompiledBinding DatePickerDialogResult}"
IsVisible="{CompiledBinding DatePickerDialogResult,
Margin="8" HorizontalAlignment="Center" />
</StackPanel>
<StackPanel>
<Button Content="DatePicker dialog" Command="{Binding DatePickerDialog}" />
<TextBlock Text="{CompiledBinding DatePickerDialogResult}"
IsVisible="{CompiledBinding DatePickerDialogResult,
FallbackValue=False, Converter={x:Static StringConverters.IsNotNullOrEmpty}}"
Margin="8" HorizontalAlignment="Center"/>
Margin="8" HorizontalAlignment="Center" />
</StackPanel>
</StackPanel>
</StackPanel>
</StackPanel>
</WrapPanel>
</StackPanel>
</UserControl>
</WrapPanel>
</StackPanel>
</dialogHost:DialogHost>
</UserControl>
19 changes: 18 additions & 1 deletion Material.Demo/Pages/DialogDemo.axaml.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,10 @@
using Avalonia;
using System;
using System.Diagnostics;
using Avalonia;
using Avalonia.Controls;
using Avalonia.Interactivity;
using Avalonia.Markup.Xaml;
using Material.Demo.Models;
using Material.Demo.ViewModels;
using Material.Dialog;

Expand All @@ -21,5 +25,18 @@ private void InitializeComponent()
{
AvaloniaXamlLoader.Load(this);
}

private void OpenDialogWithView(object? sender, RoutedEventArgs e) {
DialogHost.DialogHost.Show(this.Resources["Sample2View"]!, "MainDialogHost");
}

private void OpenDialogWithModel(object? sender, RoutedEventArgs e) {
// View that associated with this model defined at DialogContentTemplate in DialogDemo.axaml
DialogHost.DialogHost.Show(new Sample2Model(new Random().Next(0, 100)), "MainDialogHost");
}

private void OpenMoreDialogHostExamples(object? sender, RoutedEventArgs e) {
Process.Start(new ProcessStartInfo(){FileName = "https://github.com/AvaloniaUtils/DialogHost.Avalonia", UseShellExecute = true});
}
}
}
2 changes: 2 additions & 0 deletions Material.Dialog/Converters/StringToTransformConverter.cs
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@ public class StringToTransformConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if (value == null)
return TransformOperation.Identity;
var r = TransformOperations.Parse(value.ToString());
return r;
}
Expand Down
2 changes: 1 addition & 1 deletion Material.Dialog/Views/CustomDialog.axaml
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@

<!-- Content panel -->
<Panel Grid.Column="0" Grid.ColumnSpan="3" Grid.Row="3" ClipToBounds="True">
<ContentControl Name="PART_Content" Content="{Binding Content}" ClipToBounds="False"/>
<ContentPresenter Name="PART_Content" Content="{Binding Content}" ClipToBounds="False"/>
</Panel>

<Grid Grid.Column="0"
Expand Down
8 changes: 4 additions & 4 deletions Material.Dialog/Views/CustomDialog.axaml.cs
Original file line number Diff line number Diff line change
@@ -1,21 +1,21 @@
using Avalonia;
using Avalonia.Controls;
using Avalonia.Controls;
using Avalonia.Controls.Presenters;
using Avalonia.Markup.Xaml;
using Material.Dialog.Interfaces;

namespace Material.Dialog.Views
{
public class CustomDialog : Window, IDialogWindowResult<DialogResult>, IHasNegativeResult
{
private ContentControl PART_Content;
private ContentPresenter PART_Content;

public DialogResult Result { get; set; } = DialogResult.NoResult;

public CustomDialog()
{
this.InitializeComponent();

PART_Content = this.Get<ContentControl>(nameof(PART_Content));
PART_Content = this.Get<ContentPresenter>(nameof(PART_Content));
}

public void ApplyViewModel(object vm) => PART_Content.DataContext = vm;
Expand Down
6 changes: 3 additions & 3 deletions Material.Ripple/RippleEffect.cs
Original file line number Diff line number Diff line change
Expand Up @@ -87,10 +87,10 @@ private Ripple CreateRipple()

#region Styled properties

public static readonly StyledProperty<Brush> RippleFillProperty =
AvaloniaProperty.Register<RippleEffect, Brush>(nameof(RippleFill), SolidColorBrush.Parse("#FFF"));
public static readonly StyledProperty<IBrush> RippleFillProperty =
AvaloniaProperty.Register<RippleEffect, IBrush>(nameof(RippleFill), SolidColorBrush.Parse("#FFF"));

public Brush RippleFill {
public IBrush RippleFill {
get => GetValue(RippleFillProperty);
set => SetValue(RippleFillProperty, value);
}
Expand Down
15 changes: 15 additions & 0 deletions Material.Styles/Assists/ComboBoxAssist.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
using Avalonia;
using Avalonia.Controls;

namespace Material.Styles.Assists
{
public class ComboBoxAssist
{
public static AvaloniaProperty<string> LabelProperty = AvaloniaProperty.RegisterAttached<ComboBox, string>(
"Label", typeof(ComboBox));

public static void SetLabel(AvaloniaObject element, string value) => element.SetValue(LabelProperty, value);

public static string GetLabel(AvaloniaObject element) => (string)element.GetValue(LabelProperty);
}
}
Loading

0 comments on commit fbe0790

Please sign in to comment.