diff --git a/Bitvault.Avalonia/App.axaml.cs b/Bitvault.Avalonia/App.axaml.cs index 5264322..8d9006d 100644 --- a/Bitvault.Avalonia/App.axaml.cs +++ b/Bitvault.Avalonia/App.axaml.cs @@ -159,6 +159,7 @@ public partial class App : Application services.AddTemplate(); services.AddTemplate(); services.AddTemplate(); + services.AddTemplate(); services.AddTemplate("ItemCommandHeader"); @@ -183,7 +184,8 @@ public partial class App : Application services.AddHandler(nameof(PasswordEntryConfiguration)); services.AddHandler(nameof(MaskedTextEntryConfiguration)); services.AddHandler(nameof(DropdownEntryConfiguration)); - + services.AddHandler(nameof(DateEntryConfiguration)); + services.AddHandler(ServiceLifetime.Singleton); services.AddHandler(ServiceLifetime.Singleton); }); diff --git a/Bitvault.Avalonia/DateEntryView.axaml b/Bitvault.Avalonia/DateEntryView.axaml new file mode 100644 index 0000000..a880dd8 --- /dev/null +++ b/Bitvault.Avalonia/DateEntryView.axaml @@ -0,0 +1,11 @@ + + + + + diff --git a/Bitvault.Avalonia/DateEntryView.axaml.cs b/Bitvault.Avalonia/DateEntryView.axaml.cs new file mode 100644 index 0000000..92aa2de --- /dev/null +++ b/Bitvault.Avalonia/DateEntryView.axaml.cs @@ -0,0 +1,10 @@ +using Toolkit.UI.Controls.Avalonia; + +namespace Bitvault.Avalonia; + +public partial class DateEntryView : + SettingsExpander +{ + public DateEntryView() => + InitializeComponent(); +} diff --git a/Bitvault/DateEntryViewModel.cs b/Bitvault/DateEntryViewModel.cs new file mode 100644 index 0000000..1b70909 --- /dev/null +++ b/Bitvault/DateEntryViewModel.cs @@ -0,0 +1,15 @@ +using Toolkit.Foundation; + +namespace Bitvault; + +public partial class DateEntryViewModel(IServiceProvider provider, + IServiceFactory factory, + IMediator mediator, + IPublisher publisher, + ISubscription subscriber, + IDisposer disposer, + ItemState state, + ItemEntryConfiguration configuration, + string key, + object value, + double width) : ItemEntryViewModel(provider, factory, mediator, publisher, subscriber, disposer, state, configuration, key, value, width); diff --git a/Bitvault/DateEntryViewModelHandler.cs b/Bitvault/DateEntryViewModelHandler.cs new file mode 100644 index 0000000..1838556 --- /dev/null +++ b/Bitvault/DateEntryViewModelHandler.cs @@ -0,0 +1,31 @@ +using Toolkit.Foundation; + +namespace Bitvault; + +public class DateEntryViewModelHandler(IServiceFactory serviceFactory) : + IHandler, IItemEntryViewModel?> +{ + public Task Handle(CreateEventArgs args, + CancellationToken cancellationToken) + { + if (args.Value is DateEntryConfiguration configuration) + { + string? label = configuration.Label; + + if (!DateTimeOffset.TryParse($"{configuration.Value}", out DateTimeOffset value)) + { + value = DateTimeOffset.Now; + } + + double? width = configuration.Width; + + if (serviceFactory.Create([.. args.Parameters, configuration, label, value, width]) + is DateEntryViewModel viewModel) + { + return Task.FromResult(viewModel); + } + } + + return Task.FromResult(default); + } +} \ No newline at end of file diff --git a/Bitvault/TextEntryViewModel.cs b/Bitvault/TextEntryViewModel.cs index a115f3d..a7c8ec4 100644 --- a/Bitvault/TextEntryViewModel.cs +++ b/Bitvault/TextEntryViewModel.cs @@ -12,4 +12,4 @@ public partial class TextEntryViewModel(IServiceProvider provider, ItemEntryConfiguration configuration, string key, object value, - double width) : ItemEntryViewModel(provider, factory, mediator, publisher, subscriber, disposer, state, configuration, key, value, width); \ No newline at end of file + double width) : ItemEntryViewModel(provider, factory, mediator, publisher, subscriber, disposer, state, configuration, key, value, width);