diff --git a/Bitvault.Avalonia/DropdownEntryView.axaml b/Bitvault.Avalonia/DropdownEntryView.axaml index 3340155..0107d14 100644 --- a/Bitvault.Avalonia/DropdownEntryView.axaml +++ b/Bitvault.Avalonia/DropdownEntryView.axaml @@ -15,7 +15,7 @@ SelectedValueBinding="{ReflectionBinding Value}"> - - - - - - - - - - - - - - - - - - - - - + diff --git a/Bitvault/DropdownEntryViewModel.cs b/Bitvault/DropdownEntryViewModel.cs index 4bbb41e..d5d4dcf 100644 --- a/Bitvault/DropdownEntryViewModel.cs +++ b/Bitvault/DropdownEntryViewModel.cs @@ -16,7 +16,8 @@ public partial class DropdownEntryViewModel : ItemEntryConfiguration configuration, string key, object value, - DropdownValueViewModel selectedItem) : base(provider, factory, mediator, publisher, subscriber, disposer, items, state, configuration, key, value) + double width, + DropdownValueViewModel selectedItem) : base(provider, factory, mediator, publisher, subscriber, disposer, items, state, configuration, key, value, width) { SelectedItem = selectedItem; } @@ -31,7 +32,8 @@ public partial class DropdownEntryViewModel : ItemState state, ItemEntryConfiguration configuration, string key, - object value) : base(provider, factory, mediator, publisher, subscriber, disposer, items, state, configuration, key, value) + object value, + double width) : base(provider, factory, mediator, publisher, subscriber, disposer, items, state, configuration, key, value, width) { } } \ No newline at end of file diff --git a/Bitvault/DropdownEntryViewModelHandler.cs b/Bitvault/DropdownEntryViewModelHandler.cs index cf154fc..e2b28c9 100644 --- a/Bitvault/DropdownEntryViewModelHandler.cs +++ b/Bitvault/DropdownEntryViewModelHandler.cs @@ -17,11 +17,12 @@ public class DropdownEntryViewModelHandler(IServiceFactory serviceFactory) : } string? label = configuration.Label; - object? value = configuration.Value; + object? value = configuration.Value ?? ""; + double? width = configuration.Width; DropdownValueViewModel? selected = values.FirstOrDefault(x => x.Value is not null && x.Value.Equals($"{value}")); - if (serviceFactory.Create([values, .. args.Parameters, configuration, label, value ?? "", selected]) + if (serviceFactory.Create([values, .. args.Parameters, configuration, label, value, width, selected]) is DropdownEntryViewModel viewModel) { return Task.FromResult(viewModel); diff --git a/Bitvault/ItemEntryCollectionViewModel.cs b/Bitvault/ItemEntryCollectionViewModel.cs index aa17e59..c34cb08 100644 --- a/Bitvault/ItemEntryCollectionViewModel.cs +++ b/Bitvault/ItemEntryCollectionViewModel.cs @@ -26,12 +26,19 @@ public partial class ItemEntryCollectionViewModel : ItemState state, ItemEntryConfiguration configuration, string key, - object value) : base(provider, factory, mediator, publisher, subscriber, disposer, key, value) + object value, + double width) : base(provider, factory, mediator, publisher, subscriber, disposer, key, value) { this.configuration = configuration; + State = state; + Width = width; } + [ObservableProperty] + private double width; + + public ItemEntryCollectionViewModel(IServiceProvider provider, IServiceFactory factory, IMediator mediator, @@ -42,10 +49,13 @@ public partial class ItemEntryCollectionViewModel : ItemState state, ItemEntryConfiguration configuration, string key, - object value) : base(provider, factory, mediator, publisher, subscriber, disposer, items, key, value) + object value, + double width) : base(provider, factory, mediator, publisher, subscriber, disposer, items, key, value) { this.configuration = configuration; + State = state; + Width = width; } protected override void OnValueChanged() diff --git a/Bitvault/ItemEntryConfiguration.cs b/Bitvault/ItemEntryConfiguration.cs index c13da4c..672f82d 100644 --- a/Bitvault/ItemEntryConfiguration.cs +++ b/Bitvault/ItemEntryConfiguration.cs @@ -22,4 +22,7 @@ public record ItemEntryConfiguration : [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] public object? Value { get; set; } + + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + public double? Width { get; set; } = 296; } \ No newline at end of file diff --git a/Bitvault/ItemEntryViewModel.cs b/Bitvault/ItemEntryViewModel.cs index 8e5a160..416e6ea 100644 --- a/Bitvault/ItemEntryViewModel.cs +++ b/Bitvault/ItemEntryViewModel.cs @@ -12,7 +12,8 @@ public partial class ItemEntryViewModel(IServiceProvider provider, ItemState state, ItemEntryConfiguration configuration, string key, - object value) : + object value, + double width) : Observable(provider, factory, mediator, publisher, subscriber, disposer, key, value), IItemEntryViewModel, INotificationHandler>, @@ -22,8 +23,8 @@ public partial class ItemEntryViewModel(IServiceProvider provider, [ObservableProperty] private ItemState state = state; - protected override void OnValueChanged() => - configuration.Value = Value; + [ObservableProperty] + private double width = width; public Task Handle(UpdateEventArgs args) => Task.FromResult(State = ItemState.Write); @@ -43,4 +44,7 @@ public partial class ItemEntryViewModel(IServiceProvider provider, State = ItemState.Read; return Task.CompletedTask; } + + protected override void OnValueChanged() => + configuration.Value = Value; } \ No newline at end of file diff --git a/Bitvault/MaskedTextEntryViewModel.cs b/Bitvault/MaskedTextEntryViewModel.cs index 7e35729..5a51bb3 100644 --- a/Bitvault/MaskedTextEntryViewModel.cs +++ b/Bitvault/MaskedTextEntryViewModel.cs @@ -13,7 +13,8 @@ public partial class MaskedTextEntryViewModel(IServiceProvider provider, ItemEntryConfiguration configuration, string pattern, string key, - object value) : ItemEntryViewModel(provider, factory, mediator, publisher, subscriber, disposer, state, configuration, key, value) + object value, + double width) : ItemEntryViewModel(provider, factory, mediator, publisher, subscriber, disposer, state, configuration, key, value, width) { [ObservableProperty] private string pattern = pattern; diff --git a/Bitvault/MaskedTextEntryViewModelHandler.cs b/Bitvault/MaskedTextEntryViewModelHandler.cs index 360a8a0..c592671 100644 --- a/Bitvault/MaskedTextEntryViewModelHandler.cs +++ b/Bitvault/MaskedTextEntryViewModelHandler.cs @@ -10,7 +10,11 @@ public class MaskedTextEntryViewModelHandler(IServiceFactory serviceFactory) : { if (args.Value is MaskedTextEntryConfiguration configuration) { - if (serviceFactory.Create([.. args.Parameters, configuration, configuration.Pattern, configuration.Label, configuration.Value]) + string? label = configuration.Label; + object? value = configuration.Value ?? ""; + double? width = configuration.Width; + + if (serviceFactory.Create([.. args.Parameters, configuration, configuration.Pattern, label, value, width]) is MaskedTextEntryViewModel viewModel) { return Task.FromResult(viewModel); diff --git a/Bitvault/MultilineTextEntryViewModel.cs b/Bitvault/MultilineTextEntryViewModel.cs index 1b9c367..720afc9 100644 --- a/Bitvault/MultilineTextEntryViewModel.cs +++ b/Bitvault/MultilineTextEntryViewModel.cs @@ -11,5 +11,6 @@ public partial class MultilineTextEntryViewModel(IServiceProvider provider, ItemState state, ItemEntryConfiguration configuration, string key, - object value) : ItemEntryViewModel(provider, factory, mediator, publisher, subscriber, disposer, state, configuration, key, value); + object value, + double width) : ItemEntryViewModel(provider, factory, mediator, publisher, subscriber, disposer, state, configuration, key, value, width); diff --git a/Bitvault/MultilineTextEntryViewModelHandler.cs b/Bitvault/MultilineTextEntryViewModelHandler.cs index 9f9c6cb..3538b66 100644 --- a/Bitvault/MultilineTextEntryViewModelHandler.cs +++ b/Bitvault/MultilineTextEntryViewModelHandler.cs @@ -10,7 +10,11 @@ public class MultilineTextEntryViewModelHandler(IServiceFactory serviceFactory) { if (args.Value is MultilineTextEntryConfiguration configuration) { - if (serviceFactory.Create([.. args.Parameters, configuration, configuration.Label, configuration.Value ?? ""]) + string? label = configuration.Label; + object? value = configuration.Value ?? ""; + double? width = configuration.Width; + + if (serviceFactory.Create([.. args.Parameters, configuration, label, value, width]) is MultilineTextEntryViewModel viewModel) { return Task.FromResult(viewModel); diff --git a/Bitvault/PasswordEntryViewModel.cs b/Bitvault/PasswordEntryViewModel.cs index 08c50bd..f6034ca 100644 --- a/Bitvault/PasswordEntryViewModel.cs +++ b/Bitvault/PasswordEntryViewModel.cs @@ -11,4 +11,5 @@ public partial class PasswordEntryViewModel(IServiceProvider provider, ItemState state, ItemEntryConfiguration configuration, string key, - object value) : ItemEntryViewModel(provider, factory, mediator, publisher, subscriber, disposer, state, configuration, key, value); \ No newline at end of file + object value, + double width) : ItemEntryViewModel(provider, factory, mediator, publisher, subscriber, disposer, state, configuration, key, value, width); \ No newline at end of file diff --git a/Bitvault/PasswordEntryViewModelHandler.cs b/Bitvault/PasswordEntryViewModelHandler.cs index 0e55c1a..f9efa7a 100644 --- a/Bitvault/PasswordEntryViewModelHandler.cs +++ b/Bitvault/PasswordEntryViewModelHandler.cs @@ -10,7 +10,11 @@ public class PasswordEntryViewModelHandler(IServiceFactory serviceFactory) : { if (args.Value is PasswordEntryConfiguration configuration) { - if (serviceFactory.Create([.. args.Parameters, configuration, configuration.Label, configuration.Value ?? ""]) + string? label = configuration.Label; + object? value = configuration.Value ?? ""; + double? width = configuration.Width; + + if (serviceFactory.Create([.. args.Parameters, configuration, label, value, width]) is PasswordEntryViewModel viewModel) { return Task.FromResult(viewModel); diff --git a/Bitvault/TextEntryViewModel.cs b/Bitvault/TextEntryViewModel.cs index 0924bdf..a115f3d 100644 --- a/Bitvault/TextEntryViewModel.cs +++ b/Bitvault/TextEntryViewModel.cs @@ -11,4 +11,5 @@ public partial class TextEntryViewModel(IServiceProvider provider, ItemState state, ItemEntryConfiguration configuration, string key, - object value) : ItemEntryViewModel(provider, factory, mediator, publisher, subscriber, disposer, state, configuration, key, value); \ No newline at end of file + object value, + double width) : ItemEntryViewModel(provider, factory, mediator, publisher, subscriber, disposer, state, configuration, key, value, width); \ No newline at end of file diff --git a/Bitvault/TextEntryViewModelHandler.cs b/Bitvault/TextEntryViewModelHandler.cs index 4ab6c7d..92519f5 100644 --- a/Bitvault/TextEntryViewModelHandler.cs +++ b/Bitvault/TextEntryViewModelHandler.cs @@ -10,7 +10,11 @@ public class TextEntryViewModelHandler(IServiceFactory serviceFactory) : { if (args.Value is TextEntryConfiguration configuration) { - if (serviceFactory.Create([.. args.Parameters, configuration, configuration.Label, configuration.Value ?? ""]) + string? label = configuration.Label; + object? value = configuration.Value ?? ""; + double? width = configuration.Width; + + if (serviceFactory.Create([.. args.Parameters, configuration, label, value, width]) is TextEntryViewModel viewModel) { return Task.FromResult(viewModel);