Skip to content

Commit 83a8821

Browse files
committed
Added input validator sample page
1 parent 0f8f119 commit 83a8821

12 files changed

Lines changed: 153 additions & 52 deletions

File tree

assets/SampleIcons.afdesign

-4.79 KB
Binary file not shown.
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<resources>
33
<string name="Hello">Hello World, Click Me!</string>
4-
<string name="ApplicationName">MADE.Samples</string>
4+
<string name="ApplicationName">MADE Sample Collection</string>
55
</resources>

samples/MADE.Samples/MADE.Samples.Shared/Assets/SharedAssets.md

Lines changed: 0 additions & 34 deletions
This file was deleted.

samples/MADE.Samples/MADE.Samples.Shared/Features/Home/Pages/MainPage.xaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
<Grid Padding="12">
1515
<controls:AdaptiveGridView
1616
extensions:ListViewBaseExtensions.ItemClickCommand="{x:Bind ViewModel.NavigateToSampleCommand}"
17-
DesiredWidth="400"
17+
DesiredWidth="340"
1818
IsItemClickEnabled="true"
1919
ItemsSource="{x:Bind ViewModel.Samples}"
2020
OneRowModeEnabled="False"

samples/MADE.Samples/MADE.Samples.Shared/Features/Home/ViewModels/MainPageViewModel.cs

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ public MainPageViewModel(INavigationService navigationService, IMessenger messen
1717
{
1818
}
1919

20-
public ICommand NavigateToSampleCommand => new RelayCommand<Sample>(this.NavigateToSample);
20+
public ICommand NavigateToSampleCommand => new RelayCommand<Sample>(NavigateToSample);
2121

2222
public ICollection<SampleGroup> SampleGroups { get; } = new List<SampleGroup>
2323
{
@@ -30,7 +30,12 @@ public MainPageViewModel(INavigationService navigationService, IMessenger messen
3030
"FilePicker",
3131
typeof(FilePickerPage),
3232
string.Empty,
33-
"/Features/Samples/Assets/FilePicker.png")
33+
"/Features/Samples/Assets/FilePicker.png"),
34+
new Sample(
35+
"InputValidator",
36+
typeof(InputValidatorPage),
37+
string.Empty,
38+
"/Features/Samples/Assets/InputValidator.png"),
3439
}
3540
}
3641
};
@@ -39,7 +44,7 @@ public MainPageViewModel(INavigationService navigationService, IMessenger messen
3944

4045
private void NavigateToSample(Sample sample)
4146
{
42-
this.NavigationService.NavigateTo(sample.Page);
47+
NavigationService.NavigateTo(sample.Page);
4348
}
4449
}
4550
}
3.43 KB
Loading

samples/MADE.Samples/MADE.Samples.Shared/Features/Samples/Pages/FilePickerPage.xaml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,13 +37,13 @@
3737

3838
<TextBlock
3939
Margin="0,0,0,12"
40-
Style="{StaticResource HeaderTextBlockStyle}"
40+
Style="{StaticResource TitleTextBlockStyle}"
4141
Text="FilePicker control" />
4242

4343
<TextBlock
4444
Grid.Row="1"
45-
Margin="0,0,0,12"
46-
Style="{StaticResource SubtitleTextBlockStyle}"
45+
Margin="0,0,0,48"
46+
Style="{StaticResource BaseTextBlockStyle}"
4747
Text="The FilePicker is a custom-built UI element that provides a file selection user experience. The control works in a similar way to the file input element in web applications." />
4848

4949
<ScrollViewer Grid.Row="2">
Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
<pages:MvvmPage
2+
x:Class="MADE.Samples.Features.Samples.Pages.InputValidatorPage"
3+
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
4+
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
5+
xmlns:controls="using:MADE.UI.Controls"
6+
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
7+
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
8+
xmlns:pages="using:MADE.UI.Views.Navigation.Pages"
9+
xmlns:win="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
10+
Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"
11+
mc:Ignorable="d">
12+
13+
<Grid>
14+
<Grid.RowDefinitions>
15+
<RowDefinition Height="Auto" />
16+
<RowDefinition Height="*" />
17+
</Grid.RowDefinitions>
18+
19+
<win:CommandBar>
20+
<win:CommandBar.Content>
21+
<Button
22+
x:Name="BackButton"
23+
VerticalAlignment="Top"
24+
Command="{x:Bind ViewModel.GoBackCommand}"
25+
IsEnabled="{x:Bind Frame.CanGoBack, Mode=OneWay}"
26+
Style="{StaticResource NavigationBackButtonNormalStyle}"
27+
ToolTipService.ToolTip="Back" />
28+
</win:CommandBar.Content>
29+
</win:CommandBar>
30+
31+
<Grid Grid.Row="1" Padding="12">
32+
<Grid.RowDefinitions>
33+
<RowDefinition Height="Auto" />
34+
<RowDefinition Height="Auto" />
35+
<RowDefinition Height="*" />
36+
</Grid.RowDefinitions>
37+
38+
<TextBlock
39+
Margin="0,0,0,12"
40+
Style="{StaticResource TitleTextBlockStyle}"
41+
Text="InputValidator control" />
42+
43+
<TextBlock
44+
Grid.Row="1"
45+
Margin="0,0,0,48"
46+
Style="{StaticResource BaseTextBlockStyle}"
47+
Text="The InputValidator is a custom-built UI element wrapper for input controls that provides an input validation experience using MADE's in-built or custom built validators." />
48+
49+
<ScrollViewer Grid.Row="2">
50+
<Grid>
51+
<Grid.RowDefinitions>
52+
<RowDefinition Height="Auto" />
53+
<RowDefinition Height="Auto" />
54+
<RowDefinition Height="*" />
55+
</Grid.RowDefinitions>
56+
57+
<controls:InputValidator
58+
x:Name="TextBoxValidator"
59+
Margin="0,0,0,12"
60+
Input="{x:Bind TextBox.Text, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
61+
Validators="{x:Bind ViewModel.InputTextValidators}">
62+
<TextBox
63+
x:Name="TextBox"
64+
Header="TextBox with InputValidator"
65+
Text="{x:Bind ViewModel.InputText, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
66+
</controls:InputValidator>
67+
68+
<controls:InputValidator
69+
x:Name="DatePickerValidator"
70+
Grid.Row="1"
71+
Margin="0,0,0,12"
72+
Input="{Binding SelectedDate, Mode=TwoWay, ElementName=DatePicker, UpdateSourceTrigger=PropertyChanged}"
73+
Validators="{x:Bind ViewModel.InputDateValidators}">
74+
<DatePicker
75+
x:Name="DatePicker"
76+
Header="DatePicker with InputValidator"
77+
SelectedDate="{x:Bind ViewModel.InputDate, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
78+
</controls:InputValidator>
79+
</Grid>
80+
</ScrollViewer>
81+
82+
</Grid>
83+
84+
85+
</Grid>
86+
</pages:MvvmPage>

samples/MADE.Samples/MADE.Samples.Shared/Features/Samples/Pages/FileInputSamplePage.xaml.cs renamed to samples/MADE.Samples/MADE.Samples.Shared/Features/Samples/Pages/InputValidatorPage.xaml.cs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,16 +6,16 @@ namespace MADE.Samples.Features.Samples.Pages
66
using MADE.UI.Views.Navigation.Pages;
77
using Microsoft.Extensions.DependencyInjection;
88

9-
public sealed partial class FilePickerPage : MvvmPage
9+
public sealed partial class InputValidatorPage : MvvmPage
1010
{
11-
public FilePickerPage()
11+
public InputValidatorPage()
1212
{
1313
this.InitializeComponent();
14-
this.DataContext = new FileInputSamplePageViewModel(
14+
this.DataContext = new InputValidatorPageViewModel(
1515
App.Services.GetService<INavigationService>(),
1616
App.Services.GetService<IMessenger>());
1717
}
1818

19-
public FileInputSamplePageViewModel ViewModel => this.DataContext as FileInputSamplePageViewModel;
19+
public InputValidatorPageViewModel ViewModel => this.DataContext as InputValidatorPageViewModel;
2020
}
21-
}
21+
}
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
namespace MADE.Samples.Features.Samples.ViewModels
2+
{
3+
using System;
4+
using CommunityToolkit.Mvvm.Messaging;
5+
using MADE.Data.Validation;
6+
using MADE.Data.Validation.Validators;
7+
using MADE.UI.Views.Navigation;
8+
using MADE.UI.Views.Navigation.ViewModels;
9+
10+
public class InputValidatorPageViewModel : PageViewModel
11+
{
12+
private string inputText;
13+
private DateTimeOffset? inputDate;
14+
15+
public InputValidatorPageViewModel(INavigationService navigationService, IMessenger messenger)
16+
: base(navigationService, messenger)
17+
{
18+
}
19+
20+
public ValidatorCollection InputTextValidators { get; } = new ValidatorCollection { new RequiredValidator(), new MaxLengthValidator(16) };
21+
22+
public string InputText
23+
{
24+
get => inputText;
25+
set => this.SetProperty(ref inputText, value);
26+
}
27+
28+
public ValidatorCollection InputDateValidators { get; } = new ValidatorCollection { new RequiredValidator(), new BetweenValidator(DateTimeOffset.Now.AddDays(-7), DateTimeOffset.Now.AddDays(7)) };
29+
30+
public DateTimeOffset? InputDate
31+
{
32+
get => inputDate;
33+
set => this.SetProperty(ref inputDate, value);
34+
}
35+
}
36+
}

0 commit comments

Comments
 (0)