Fix: use Value/ValueChanged callback pattern for MultiLangInput binding instead of inline lambda

This commit is contained in:
Saidamin Kattan
2026-08-08 18:52:40 +03:00
parent ed47a77b73
commit a9c8dfe24a
13 changed files with 16 additions and 10 deletions
@@ -78,7 +78,7 @@
<div class="badge badge-primary badge-sm">@(_languages[_activeLang])</div>
</h4>
</div>
<MultiLangInput @bind-Value="_names" ActiveCulture="@_activeLang" HideTabs="true"
<MultiLangInput Value="_names" ValueChanged="OnNamesChanged" ActiveCulture="@_activeLang" HideTabs="true"
Placeholder="Enter category name in the selected language..." />
<ValidationMessage For="@(() => _names)" class="text-error text-sm mt-1" />
</div>
@@ -89,7 +89,7 @@
Description
<div class="badge badge-secondary badge-sm">@(_languages[_activeLang])</div>
</h4>
<MultiLangInput @bind-Value="_descriptions" ActiveCulture="@_activeLang"
<MultiLangInput Value="_descriptions" ValueChanged="OnDescriptionsChanged" ActiveCulture="@_activeLang"
HideTabs="true" IsTextArea="true"
Placeholder="Summarize what this category contains..." />
<ValidationMessage For="@(() => _descriptions)" class="text-error text-sm mt-1" />
@@ -231,7 +231,7 @@
{
category = await categoryAPIConsumer.GetCategory(Id);
}
// Map from Translations to local dictionaries
foreach(var t in category.Translations ?? new())
{
@@ -254,6 +254,9 @@
_editContext = new EditContext(category);
}
private void OnNamesChanged(Dictionary<string, string> val) => _names = val;
private void OnDescriptionsChanged(Dictionary<string, string> val) => _descriptions = val;
void SyncTranslations()
{
category.Translations = _languages.Keys.Select(lang => new CategoryTranslationVM
+5 -2
View File
@@ -103,7 +103,7 @@
<div class="badge badge-primary badge-sm">@(_languages[_activeLang])</div>
</h4>
</div>
<MultiLangInput @bind-Value="_names" ActiveCulture="@_activeLang" HideTabs="true"
<MultiLangInput Value="_names" ValueChanged="OnNamesChanged" ActiveCulture="@_activeLang" HideTabs="true"
Placeholder="Enter product name in the selected language..." />
<ValidationMessage For="@(() => _names)" class="text-error text-sm mt-1" />
</div>
@@ -114,7 +114,7 @@
Description
<div class="badge badge-secondary badge-sm">@(_languages[_activeLang])</div>
</h4>
<MultiLangInput @bind-Value="_descriptions" ActiveCulture="@_activeLang" HideTabs="true"
<MultiLangInput Value="_descriptions" ValueChanged="OnDescriptionsChanged" ActiveCulture="@_activeLang" HideTabs="true"
IsTextArea="true" Placeholder="Write a compelling product description..." />
<ValidationMessage For="@(() => _descriptions)" class="text-error text-sm mt-1" />
</div>
@@ -422,6 +422,9 @@
_editContext = new EditContext(product);
}
private void OnNamesChanged(Dictionary<string, string> val) => _names = val;
private void OnDescriptionsChanged(Dictionary<string, string> val) => _descriptions = val;
void SyncTranslations()
{
product.Translations = _languages.Keys.Select(lang => new ProductTranslationVM