Reverted TabStrip and Panel

This commit is contained in:
Leigh Pointer 2024-11-26 10:33:18 +01:00
parent f5cc61384f
commit 9d7549da70
5 changed files with 39 additions and 50 deletions

View File

@ -302,13 +302,13 @@
} }
else else
{ {
_activetab = "Settings"; //_activetab = "Settings";
AddModuleMessage(Localizer["Message.Required.Title"], MessageType.Warning); AddModuleMessage(Localizer["Message.Required.Title"], MessageType.Warning);
} }
} }
else else
{ {
_activetab = "Settings"; //_activetab = "Settings";
AddModuleMessage(SharedLocalizer["Message.InfoRequired"], MessageType.Warning); AddModuleMessage(SharedLocalizer["Message.InfoRequired"], MessageType.Warning);
} }
} }

View File

@ -523,7 +523,7 @@
private async Task SavePage() private async Task SavePage()
{ {
_activetab = "Settings"; //_activetab = "Settings";
validated = true; validated = true;
var interop = new Interop(JSRuntime); var interop = new Interop(JSRuntime);
if (await interop.FormValid(form)) if (await interop.FormValid(form))
@ -672,17 +672,23 @@
} }
else else
{ {
_activetab = "Settings";
_refresh = true;
AddModuleMessage(Localizer["Message.Required.PageInfo"], MessageType.Warning); AddModuleMessage(Localizer["Message.Required.PageInfo"], MessageType.Warning);
} }
} }
catch (Exception ex) catch (Exception ex)
{ {
await logger.LogError(ex, "Error Saving Page {Page} {Error}", _page, ex.Message); await logger.LogError(ex, "Error Saving Page {Page} {Error}", _page, ex.Message);
_activetab = "Settings";
_refresh = true;
AddModuleMessage(Localizer["Error.Page.Save"], MessageType.Error); AddModuleMessage(Localizer["Error.Page.Save"], MessageType.Error);
} }
} }
else else
{ {
_activetab = "Settings";
_refresh = true;
AddModuleMessage(SharedLocalizer["Message.InfoRequired"], MessageType.Warning); AddModuleMessage(SharedLocalizer["Message.InfoRequired"], MessageType.Warning);
} }
} }

View File

@ -254,11 +254,11 @@
protected override void OnInitialized() protected override void OnInitialized()
{ {
_interop = new QuillEditorInterop(JSRuntime); _interop = new QuillEditorInterop(JSRuntime);
if (string.IsNullOrEmpty(Placeholder)) if (string.IsNullOrEmpty(Placeholder))
{ {
Placeholder = Localizer["Placeholder"]; Placeholder = Localizer["Placeholder"];
} }
// _activetab = "Rich";
} }
protected override void OnParametersSet() protected override void OnParametersSet()
@ -269,6 +269,10 @@
{ {
_activetab = "Raw"; _activetab = "Raw";
} }
// else
// {
// _activetab = "Rich";
// }
} }
protected override async Task OnAfterRenderAsync(bool firstRender) protected override async Task OnAfterRenderAsync(bool firstRender)

View File

@ -30,15 +30,20 @@ else
[Parameter] [Parameter]
public SecurityAccessLevel? Security { get; set; } // optional - can be used to specify SecurityAccessLevel public SecurityAccessLevel? Security { get; set; } // optional - can be used to specify SecurityAccessLevel
public bool IsActive { get; set; }
protected override void OnParametersSet() protected override void OnParametersSet()
{ {
base.OnParametersSet(); base.OnParametersSet();
Parent.AddTabPanel((TabPanel)this); Parent.AddTabPanel((TabPanel)this);
Heading = string.IsNullOrEmpty(Heading) ? Localize(nameof(Name), Name) : Localize(nameof(Heading), Heading); if (string.IsNullOrEmpty(Heading))
{
Heading = Localize(nameof(Name), Name);
}
else
{
Heading = Localize(nameof(Heading), Heading);
}
} }
public string DisplayHeading() public string DisplayHeading()

View File

@ -8,9 +8,18 @@
@foreach (TabPanel tabPanel in _tabPanels) @foreach (TabPanel tabPanel in _tabPanels)
{ {
<li class="nav-item" @key="tabPanel.Name"> <li class="nav-item" @key="tabPanel.Name">
<a class="nav-link @(tabPanel.IsActive ? "active" : "")" data-bs-toggle="tab" href="#@(Id + tabPanel.Name)" role="tab" @onclick:preventDefault="true" @onclick="() => SetActiveTab(tabPanel.Name)"> @if (tabPanel.Name.ToLower() == ActiveTab.ToLower())
{
<a class="nav-link active" data-bs-toggle="tab" href="#@(Id + tabPanel.Name)" role="tab" @onclick:preventDefault="true">
@tabPanel.DisplayHeading() @tabPanel.DisplayHeading()
</a> </a>
}
else
{
<a class="nav-link" data-bs-toggle="tab" href="#@(Id + tabPanel.Name)" role="tab" @onclick:preventDefault="true">
@tabPanel.DisplayHeading()
</a>
}
</li> </li>
} }
</ul> </ul>
@ -52,41 +61,14 @@
protected override void OnParametersSet() protected override void OnParametersSet()
{ {
base.OnParametersSet();
if (PageState.QueryString.ContainsKey("tab")) if (PageState.QueryString.ContainsKey("tab"))
{ {
ActiveTab = PageState.QueryString["tab"]; ActiveTab = PageState.QueryString["tab"];
} }
if (_tabPanels == null || Refresh) if (_tabPanels == null || Refresh)
{ {
_tabPanels = new List<TabPanel>(); _tabPanels = new List<TabPanel>();
} }
// Ensure the active tab is valid and exists
if (!string.IsNullOrEmpty(ActiveTab) && _tabPanels.Any())
{
var activeTabExists = _tabPanels.Any(tp => tp.Name.Equals(ActiveTab, StringComparison.OrdinalIgnoreCase));
if (!activeTabExists)
{
ActiveTab = _tabPanels[0].Name;
}
}
// Update the active tab in the UI
UpdateActiveTab();
}
private void UpdateActiveTab()
{
if (!string.IsNullOrEmpty(ActiveTab) && _tabPanels != null)
{
foreach (var tabPanel in _tabPanels)
{
tabPanel.IsActive = tabPanel.Name.Equals(ActiveTab, StringComparison.OrdinalIgnoreCase);
}
}
} }
internal void AddTabPanel(TabPanel tabPanel) internal void AddTabPanel(TabPanel tabPanel)
@ -94,20 +76,12 @@
if (!_tabPanels.Exists(item => item.Name == tabPanel.Name) && IsAuthorized(tabPanel)) if (!_tabPanels.Exists(item => item.Name == tabPanel.Name) && IsAuthorized(tabPanel))
{ {
_tabPanels.Add(tabPanel); _tabPanels.Add(tabPanel);
StateHasChanged();
}
if (string.IsNullOrEmpty(ActiveTab)) if (string.IsNullOrEmpty(ActiveTab))
{ {
ActiveTab = tabPanel.Name; ActiveTab = tabPanel.Name;
} }
UpdateActiveTab();
StateHasChanged();
}
}
private void SetActiveTab(string tabName)
{
ActiveTab = tabName;
UpdateActiveTab();
StateHasChanged();
} }
private bool IsAuthorized(TabPanel tabPanel) private bool IsAuthorized(TabPanel tabPanel)