diff --git a/Oqtane.Client/Modules/Admin/Modules/Settings.razor b/Oqtane.Client/Modules/Admin/Modules/Settings.razor index a949271f..828d402e 100644 --- a/Oqtane.Client/Modules/Admin/Modules/Settings.razor +++ b/Oqtane.Client/Modules/Admin/Modules/Settings.razor @@ -242,7 +242,6 @@ private async Task SaveModule() { - validated = true; var interop = new Interop(JSRuntime); if (await interop.FormValid(form)) diff --git a/Oqtane.Client/Modules/Admin/Pages/Add.razor b/Oqtane.Client/Modules/Admin/Pages/Add.razor index 57c2c588..1f87ca93 100644 --- a/Oqtane.Client/Modules/Admin/Pages/Add.razor +++ b/Oqtane.Client/Modules/Admin/Pages/Add.razor @@ -469,6 +469,7 @@ } else { + _activetab = "Settings"; AddModuleMessage(Localizer["Message.Required.PageInfo"], MessageType.Warning); } @@ -476,11 +477,13 @@ catch (Exception ex) { await logger.LogError(ex, "Error Saving Page {Page} {Error}", page, ex.Message); + _activetab = "Settings"; AddModuleMessage(Localizer["Error.Page.Save"], MessageType.Error); } } else { + _activetab = "Settings"; AddModuleMessage(SharedLocalizer["Message.InfoRequired"], MessageType.Warning); } } diff --git a/Oqtane.Client/Modules/Admin/Pages/Edit.razor b/Oqtane.Client/Modules/Admin/Pages/Edit.razor index 36014225..55a7e985 100644 --- a/Oqtane.Client/Modules/Admin/Pages/Edit.razor +++ b/Oqtane.Client/Modules/Admin/Pages/Edit.razor @@ -523,7 +523,7 @@ private async Task SavePage() { - _activetab = "Settings"; + //_activetab = "Settings"; validated = true; var interop = new Interop(JSRuntime); if (await interop.FormValid(form)) @@ -672,17 +672,20 @@ } else { + _activetab = "Settings"; AddModuleMessage(Localizer["Message.Required.PageInfo"], MessageType.Warning); } } catch (Exception ex) { await logger.LogError(ex, "Error Saving Page {Page} {Error}", _page, ex.Message); + _activetab = "Settings"; AddModuleMessage(Localizer["Error.Page.Save"], MessageType.Error); } } else { + _activetab = "Settings"; AddModuleMessage(SharedLocalizer["Message.InfoRequired"], MessageType.Warning); } } diff --git a/Oqtane.Client/Modules/Controls/QuillJSTextEditor.razor b/Oqtane.Client/Modules/Controls/QuillJSTextEditor.razor index cc458f02..26bc244f 100644 --- a/Oqtane.Client/Modules/Controls/QuillJSTextEditor.razor +++ b/Oqtane.Client/Modules/Controls/QuillJSTextEditor.razor @@ -7,7 +7,7 @@ @inject IStringLocalizer SharedLocalizer
- + @if (_allowRichText) { @@ -254,11 +254,11 @@ protected override void OnInitialized() { _interop = new QuillEditorInterop(JSRuntime); - if (string.IsNullOrEmpty(Placeholder)) { Placeholder = Localizer["Placeholder"]; } + // _activetab = "Rich"; } protected override void OnParametersSet() @@ -269,6 +269,10 @@ { _activetab = "Raw"; } + // else + // { + // _activetab = "Rich"; + // } } protected override async Task OnAfterRenderAsync(bool firstRender) diff --git a/Oqtane.Client/Modules/Controls/TabPanel.razor b/Oqtane.Client/Modules/Controls/TabPanel.razor index fd1251c7..0944df4a 100644 --- a/Oqtane.Client/Modules/Controls/TabPanel.razor +++ b/Oqtane.Client/Modules/Controls/TabPanel.razor @@ -30,15 +30,20 @@ else [Parameter] public SecurityAccessLevel? Security { get; set; } // optional - can be used to specify SecurityAccessLevel - public bool IsActive { get; set; } - protected override void OnParametersSet() { base.OnParametersSet(); 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() diff --git a/Oqtane.Client/Modules/Controls/TabStrip.razor b/Oqtane.Client/Modules/Controls/TabStrip.razor index 70fc5102..9f66b9ee 100644 --- a/Oqtane.Client/Modules/Controls/TabStrip.razor +++ b/Oqtane.Client/Modules/Controls/TabStrip.razor @@ -8,9 +8,18 @@ @foreach (TabPanel tabPanel in _tabPanels) { } @@ -23,70 +32,47 @@ @code { - private List _tabPanels; - private string _tabpanelid = string.Empty; + private List _tabPanels; + private string _tabpanelid = string.Empty; - [Parameter] - public RenderFragment ChildContent { get; set; } // contains the TabPanels + [Parameter] + public RenderFragment ChildContent { get; set; } // contains the TabPanels - [Parameter] - public string ActiveTab { get; set; } // optional - defaults to first TabPanel if not specified. Can also be set using a "tab=" querystring parameter. + [Parameter] + public bool TabChangeEvent { get; set; } = true; - [Parameter] - public bool Refresh { get; set; } // optional - used in scenarios where TabPanels are added/removed dynamically within a parent form. ActiveTab may need to be reset as well when this property is used. + [Parameter] + public string ActiveTab { get; set; } // optional - defaults to first TabPanel if not specified. Can also be set using a "tab=" querystring parameter. - [Parameter] - public string Id { get; set; } // optional - used to uniquely identify an instance of a tab strip component (will be set automatically if no value provided) + [Parameter] + public bool Refresh { get; set; } // optional - used in scenarios where TabPanels are added/removed dynamically within a parent form. ActiveTab may need to be reset as well when this property is used. + + [Parameter] + public string Id { get; set; } // optional - used to uniquely identify an instance of a tab strip component (will be set automatically if no value provided) [Parameter] public string TabContentClass { get; set; } // optional - to extend the TabContent div. - protected override void OnInitialized() - { - if (string.IsNullOrEmpty(Id)) - { - // create unique id for component - Id = "TabStrip_" + Guid.NewGuid().ToString("N") + "_" ; - } - } - + protected override void OnInitialized() + { + if (string.IsNullOrEmpty(Id)) + { + // create unique id for component + Id = "TabStrip_" + Guid.NewGuid().ToString("N") + "_"; + } + } + protected override void OnParametersSet() { - base.OnParametersSet(); - if (PageState.QueryString.ContainsKey("tab")) { ActiveTab = PageState.QueryString["tab"]; } - if (_tabPanels == null || Refresh) { _tabPanels = new List(); } - - // 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); - } - } + StateHasChanged(); } internal void AddTabPanel(TabPanel tabPanel) @@ -94,20 +80,12 @@ if (!_tabPanels.Exists(item => item.Name == tabPanel.Name) && IsAuthorized(tabPanel)) { _tabPanels.Add(tabPanel); - if (string.IsNullOrEmpty(ActiveTab)) - { - ActiveTab = tabPanel.Name; - } - UpdateActiveTab(); StateHasChanged(); } - } - - private void SetActiveTab(string tabName) - { - ActiveTab = tabName; - UpdateActiveTab(); - StateHasChanged(); + if (string.IsNullOrEmpty(ActiveTab)) + { + ActiveTab = tabPanel.Name; + } } private bool IsAuthorized(TabPanel tabPanel) @@ -136,4 +114,13 @@ } return authorized; } + + private void ChangeTab(string tabName) + { + if (ActiveTab != tabName) + { + ActiveTab = tabName; + StateHasChanged(); + } + } }