@typeparam TVal where TVal : new() @* * dbMango * * Copyright 2025 Deutsche Bank AG * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. *@
@if (!IsDisabled) { }
@if (Icon != null) {
} @if (Enabled) { }
@code { public class NameValuePair { public string Name { get; set; } = ""; public TVal Value { get; set; } = new(); } [Parameter] public string Name { get; set; } = ""; [Parameter] public List Value { get; set; } = []; [Parameter] public string? Placeholder { get; set; } = ""; [Parameter] public string? Icon { get; set; } [Parameter] public bool Enabled { get; set; } = true; [Parameter] public bool Multiline { get; set; } [Parameter] public string Class { get; set; } = ""; [Parameter] public Func GetValue { get; set; } = x => x.Value?.ToString() ?? ""; [Parameter] public Action SetValue { get; set; } = DefaultSetValue; [Parameter] public Action Changed { get; set; } = () => { }; private static void DefaultSetValue(NameValuePair x, string val) { var newVal = Convert.ChangeType(val, typeof(TVal)); if (newVal is TVal tv) x.Value = tv; } private bool IsDisabled => !Enabled; private bool IsUpDisabled(NameValuePair data) { var index = GetIndex(data); return index <= 0; } private int GetIndex(NameValuePair data) { var index = Value.IndexOf(data); if ( index >= 0 ) return index; var dataRef = Value.FirstOrDefault(x => x.Name == data.Name); if (dataRef == null) return -1; index = Value.IndexOf(dataRef); return index; } private Task Up(NameValuePair data) { var index = GetIndex(data); if (index <= 0) return Task.CompletedTask; var dataRef = Value[index]; Value.RemoveAt(index); Value.Insert(index - 1, dataRef); Changed(); return InvokeAsync(StateHasChanged); } private bool IsDownDisabled(NameValuePair data) { var index = GetIndex(data); return index >= Value.Count - 1; } private Task Down(NameValuePair data) { var index = GetIndex(data); if (index >= Value.Count - 1) return Task.CompletedTask; var dataRef = Value[index]; Value.RemoveAt(index); Value.Insert(index + 1, dataRef); Changed(); return InvokeAsync(StateHasChanged); } private Task Delete(NameValuePair data) { Value.Remove(data); Changed(); return InvokeAsync(StateHasChanged); } private Task SetValueInternal(ChangeEventArgs e, NameValuePair data) { SetValue(data, e.Value?.ToString() ?? ""); var dataRef = GetIndex(data); if ( dataRef < 0 ) return InvokeAsync(StateHasChanged); SetValue(Value[dataRef],e.Value?.ToString() ?? ""); Changed(); return InvokeAsync(StateHasChanged); } private Task SetNameInternal(ChangeEventArgs e, NameValuePair data) { data.Name = e.Value?.ToString() ?? ""; var dataRef = GetIndex(data); if (dataRef < 0) return InvokeAsync(StateHasChanged); Value[dataRef].Name = e.Value?.ToString() ?? ""; Changed(); return InvokeAsync(StateHasChanged); } private Task AddNewKeyValue() { Value.Add(new ()); Changed(); return InvokeAsync(StateHasChanged); } }