diff --git a/Bitvault.Avalonia/ItemMaskedTextEntryView.axaml b/Bitvault.Avalonia/ItemMaskedTextEntryView.axaml
index 0d02a8d..5cdfec6 100644
--- a/Bitvault.Avalonia/ItemMaskedTextEntryView.axaml
+++ b/Bitvault.Avalonia/ItemMaskedTextEntryView.axaml
@@ -6,17 +6,6 @@
x:DataType="vm:ItemMaskedTextEntryViewModel"
Header="{Binding Key}">
-
-
-
-
-
-
-
-
-
-
-
-
+
\ No newline at end of file
diff --git a/Bitvault.Avalonia/ItemMaskedTextEntryView.axaml.cs b/Bitvault.Avalonia/ItemMaskedTextEntryView.axaml.cs
index dab8020..8439e2d 100644
--- a/Bitvault.Avalonia/ItemMaskedTextEntryView.axaml.cs
+++ b/Bitvault.Avalonia/ItemMaskedTextEntryView.axaml.cs
@@ -5,7 +5,7 @@ namespace Bitvault.Avalonia
public partial class ItemMaskedTextEntryView :
SettingsExpander
{
- public ItemMaskedTextEntryView() =>
+ public ItemMaskedTextEntryView() =>
InitializeComponent();
}
}
diff --git a/Bitvault.Avalonia/ItemNavigationView.axaml b/Bitvault.Avalonia/ItemNavigationView.axaml
index 6de7b0f..490e22f 100644
--- a/Bitvault.Avalonia/ItemNavigationView.axaml
+++ b/Bitvault.Avalonia/ItemNavigationView.axaml
@@ -19,6 +19,7 @@
+
diff --git a/Bitvault.Avalonia/ItemTextEntryView.axaml b/Bitvault.Avalonia/ItemTextEntryView.axaml
index 6bb9d06..25d9a3d 100644
--- a/Bitvault.Avalonia/ItemTextEntryView.axaml
+++ b/Bitvault.Avalonia/ItemTextEntryView.axaml
@@ -6,12 +6,16 @@
x:DataType="vm:ItemTextEntryViewModel"
Header="{Binding Key}">
-
+
+
+
+
+
diff --git a/Bitvault/ItemConfiguration.cs b/Bitvault/ItemConfiguration.cs
index cfb455e..666dd8a 100644
--- a/Bitvault/ItemConfiguration.cs
+++ b/Bitvault/ItemConfiguration.cs
@@ -98,18 +98,25 @@ public record ItemConfiguration
new DropdownEntryConfiguration
{
Label = "Type",
+ Values = ["American Express", "Discover", "Maestro", "Mastercard", "Visa"],
},
new MaskedTextEntryConfiguration
{
- Label = "Card number"
+ Label = "Card number",
+ Pattern = "0000-0000-0000-0000",
+ Value = "____-____-____-____",
},
new MaskedTextEntryConfiguration
{
- Label = "Expiry date"
+ Label = "Expiry date",
+ Pattern = "00/00",
+ Value = "__/__",
},
new MaskedTextEntryConfiguration
{
- Label = "Card verification code"
+ Label = "Card verification code",
+ Pattern = "000",
+ Value = "___",
},
}
}
diff --git a/Bitvault/ItemDropdownEntryViewModel.cs b/Bitvault/ItemDropdownEntryViewModel.cs
index 795eca9..ddfa54e 100644
--- a/Bitvault/ItemDropdownEntryViewModel.cs
+++ b/Bitvault/ItemDropdownEntryViewModel.cs
@@ -8,6 +8,7 @@ public partial class ItemDropdownEntryViewModel(IServiceProvider provider,
IPublisher publisher,
ISubscription subscriber,
IDisposer disposer,
+ ItemState state,
ItemEntryConfiguration configuration,
string? key = default,
- object? value = default) : ItemEntryViewModel(provider, factory, mediator, publisher, subscriber, disposer, configuration, key, value);
\ No newline at end of file
+ object? value = default) : ItemEntryViewModel(provider, factory, mediator, publisher, subscriber, disposer, state, configuration, key, value);
\ No newline at end of file
diff --git a/Bitvault/ItemDropdownEntryViewModelHandler.cs b/Bitvault/ItemDropdownEntryViewModelHandler.cs
index 012110a..34e31f2 100644
--- a/Bitvault/ItemDropdownEntryViewModelHandler.cs
+++ b/Bitvault/ItemDropdownEntryViewModelHandler.cs
@@ -10,7 +10,7 @@ public class ItemDropdownEntryViewModelHandler(IServiceFactory serviceFactory) :
{
if (args.Value is DropdownEntryConfiguration configuration)
{
- if (serviceFactory.Create(configuration, configuration.Label, configuration.Value ?? "")
+ if (serviceFactory.Create([.. args.Parameters, configuration, configuration.Label, configuration.Value ?? ""])
is ItemDropdownEntryViewModel viewModel)
{
return Task.FromResult(viewModel);
diff --git a/Bitvault/ItemEntryViewModel.cs b/Bitvault/ItemEntryViewModel.cs
index 4b7fb76..c1ebc48 100644
--- a/Bitvault/ItemEntryViewModel.cs
+++ b/Bitvault/ItemEntryViewModel.cs
@@ -9,6 +9,7 @@ public partial class ItemEntryViewModel(IServiceProvider provider,
IPublisher publisher,
ISubscription subscriber,
IDisposer disposer,
+ ItemState state,
ItemEntryConfiguration configuration,
string? key = default,
object? value = default) :
@@ -19,7 +20,7 @@ public partial class ItemEntryViewModel(IServiceProvider provider,
INotificationHandler>
{
[ObservableProperty]
- private ItemState state = ItemState.Read;
+ private ItemState state = state;
protected override void OnValueChanged() =>
configuration.Value = Value;
diff --git a/Bitvault/ItemMaskedTextEntryViewModel.cs b/Bitvault/ItemMaskedTextEntryViewModel.cs
index b472804..5753b68 100644
--- a/Bitvault/ItemMaskedTextEntryViewModel.cs
+++ b/Bitvault/ItemMaskedTextEntryViewModel.cs
@@ -1,4 +1,5 @@
-using Toolkit.Foundation;
+using CommunityToolkit.Mvvm.ComponentModel;
+using Toolkit.Foundation;
namespace Bitvault;
@@ -8,6 +9,12 @@ public partial class ItemMaskedTextEntryViewModel(IServiceProvider provider,
IPublisher publisher,
ISubscription subscriber,
IDisposer disposer,
+ ItemState state,
ItemEntryConfiguration configuration,
+ string? pattern,
string? key = default,
- object? value = default) : ItemEntryViewModel(provider, factory, mediator, publisher, subscriber, disposer, configuration, key, value);
\ No newline at end of file
+ object? value = default) : ItemEntryViewModel(provider, factory, mediator, publisher, subscriber, disposer, state, configuration, key, value)
+{
+ [ObservableProperty]
+ private string? pattern = pattern;
+}
\ No newline at end of file
diff --git a/Bitvault/ItemMaskedTextEntryViewModelHandler.cs b/Bitvault/ItemMaskedTextEntryViewModelHandler.cs
index 29c7f0d..165f730 100644
--- a/Bitvault/ItemMaskedTextEntryViewModelHandler.cs
+++ b/Bitvault/ItemMaskedTextEntryViewModelHandler.cs
@@ -10,7 +10,7 @@ public class ItemMaskedTextEntryViewModelHandler(IServiceFactory serviceFactory)
{
if (args.Value is MaskedTextEntryConfiguration configuration)
{
- if (serviceFactory.Create(configuration, configuration.Label, configuration.Value ?? "")
+ if (serviceFactory.Create([.. args.Parameters, configuration, configuration.Pattern, configuration.Label, configuration.Value])
is ItemMaskedTextEntryViewModel viewModel)
{
return Task.FromResult(viewModel);
diff --git a/Bitvault/ItemPasswordEntryViewModel.cs b/Bitvault/ItemPasswordEntryViewModel.cs
index 90c92fe..7b415c5 100644
--- a/Bitvault/ItemPasswordEntryViewModel.cs
+++ b/Bitvault/ItemPasswordEntryViewModel.cs
@@ -8,6 +8,7 @@ public partial class ItemPasswordEntryViewModel(IServiceProvider provider,
IPublisher publisher,
ISubscription subscriber,
IDisposer disposer,
+ ItemState state,
ItemEntryConfiguration configuration,
string? key = default,
- object? value = default) : ItemEntryViewModel(provider, factory, mediator, publisher, subscriber, disposer, configuration, key, value);
\ No newline at end of file
+ object? value = default) : ItemEntryViewModel(provider, factory, mediator, publisher, subscriber, disposer, state, configuration, key, value);
\ No newline at end of file
diff --git a/Bitvault/ItemPasswordEntryViewModelHandler.cs b/Bitvault/ItemPasswordEntryViewModelHandler.cs
index 295e019..fe8da09 100644
--- a/Bitvault/ItemPasswordEntryViewModelHandler.cs
+++ b/Bitvault/ItemPasswordEntryViewModelHandler.cs
@@ -10,7 +10,7 @@ public class ItemPasswordEntryViewModelHandler(IServiceFactory serviceFactory) :
{
if (args.Value is PasswordEntryConfiguration configuration)
{
- if (serviceFactory.Create(configuration, configuration.Label, configuration.Value ?? "")
+ if (serviceFactory.Create([.. args.Parameters, configuration, configuration.Label, configuration.Value ?? ""])
is ItemPasswordEntryViewModel viewModel)
{
return Task.FromResult(viewModel);
diff --git a/Bitvault/ItemTextEntryViewModel.cs b/Bitvault/ItemTextEntryViewModel.cs
index 1e66169..bfdc832 100644
--- a/Bitvault/ItemTextEntryViewModel.cs
+++ b/Bitvault/ItemTextEntryViewModel.cs
@@ -8,6 +8,7 @@ public partial class ItemTextEntryViewModel(IServiceProvider provider,
IPublisher publisher,
ISubscription subscriber,
IDisposer disposer,
+ ItemState state,
ItemEntryConfiguration configuration,
string? key = default,
- object? value = default) : ItemEntryViewModel(provider, factory, mediator, publisher, subscriber, disposer, configuration, key, value);
\ No newline at end of file
+ object? value = default) : ItemEntryViewModel(provider, factory, mediator, publisher, subscriber, disposer, state, configuration, key, value);
\ No newline at end of file
diff --git a/Bitvault/ItemTextEntryViewModelHandler.cs b/Bitvault/ItemTextEntryViewModelHandler.cs
index 946aa54..4d30ba0 100644
--- a/Bitvault/ItemTextEntryViewModelHandler.cs
+++ b/Bitvault/ItemTextEntryViewModelHandler.cs
@@ -10,7 +10,7 @@ public class ItemTextEntryViewModelHandler(IServiceFactory serviceFactory) :
{
if (args.Value is TextEntryConfiguration configuration)
{
- if (serviceFactory.Create(configuration, configuration.Label, configuration.Value ?? "")
+ if (serviceFactory.Create([.. args.Parameters, configuration, configuration.Label, configuration.Value ?? ""])
is ItemTextEntryViewModel viewModel)
{
return Task.FromResult(viewModel);
diff --git a/Bitvault/SynchronizeItemContentFromCategoryViewModelHandler.cs b/Bitvault/SynchronizeItemContentFromCategoryViewModelHandler.cs
index ed76780..04b9d4b 100644
--- a/Bitvault/SynchronizeItemContentFromCategoryViewModelHandler.cs
+++ b/Bitvault/SynchronizeItemContentFromCategoryViewModelHandler.cs
@@ -31,7 +31,7 @@ public class SynchronizeItemContentFromCategoryViewModelHandler(IItemConfigurati
Type messageType = typeof(CreateEventArgs<>).MakeGenericType(entryConfiguration.GetType());
ConstructorInfo? constructor = messageType.GetConstructor([entryConfiguration.GetType(), typeof(object[])]);
- if (constructor?.Invoke(new object[] { entryConfiguration, new object[] { sectionViewModel } }) is object message)
+ if (constructor?.Invoke(new object[] { entryConfiguration, new object[] { ItemState.New } }) is object message)
{
if (await mediator.Handle