internal static TabsSetup GetTabsSetup(TabsDefinition tabsModel) { TabsSetup setup = new TabsSetup() { TabStyle = Manager.CurrentSite.TabStyle, ActiveTabIndex = tabsModel.ActiveTabIndex, ActiveTabHiddenId = null, }; return(setup); }
/// <summary> /// Called by the framework when the component needs to be rendered as HTML. /// </summary> /// <param name="model">The model being rendered by the component.</param> /// <returns>The component rendered as HTML.</returns> public async Task <string> RenderAsync(TabsDefinition model) { HtmlBuilder hb = new HtmlBuilder(); TabsSetup setup = GetTabsSetup(model); string tabsCss = Manager.CurrentSite.TabStyle == YetaWF.Core.Site.TabStyleEnum.JQuery ? "t_jquery" : "t_kendo"; hb.Append($@" <div id='{model.Id}' class='yt_tabs t_display {tabsCss}'> <ul class='t_tabstrip'>"); // Render tabs int count = 0; foreach (TabEntry tabEntry in model.Tabs) { string tabCss = string.IsNullOrWhiteSpace(tabEntry.TabCssClasses) ? "" : $" class='{tabEntry.TabCssClasses}'"; if (Manager.CurrentSite.TabStyle == YetaWF.Core.Site.TabStyleEnum.JQuery) { string tabId = $"{model.Id}_tab{count}"; hb.Append($"<li data-tab='{count}'{tabCss}><a href='#{tabId}' {Basics.CssTooltip}='{Utility.HtmlAttributeEncode(tabEntry.ToolTip?.ToString())}'>{Utility.HtmlEncode(tabEntry.Caption?.ToString())}</a></li>"); } else { hb.Append($"<li data-tab='{count}' {Basics.CssTooltip}='{Utility.HtmlAttributeEncode(tabEntry.ToolTip?.ToString())}'{tabCss}>{Utility.HtmlEncode(tabEntry.Caption?.ToString())}</li>"); } ++count; } hb.Append($@" </ul>"); // Render panes count = 0; foreach (TabEntry tabEntry in model.Tabs) { string cssClass = string.IsNullOrWhiteSpace(tabEntry.PaneCssClasses) ? "" : $" {tabEntry.PaneCssClasses}"; hb.Append($@" <div class='t_proptable t_cat t_tabpanel{cssClass}' data-tab='{count}' id='{model.Id}_tab{count}'>"); if (tabEntry.RenderPaneAsync != null) { hb.Append(await tabEntry.RenderPaneAsync(count)); } hb.Append($@" </div>"); ++count; } setup.ActiveTabHiddenId = Manager.UniqueId(); hb.Append($@" <input name='_ActiveTab' type='hidden' value='{model.ActiveTabIndex}' id='{setup.ActiveTabHiddenId}'>"); hb.Append($@" </div>"); Manager.ScriptManager.AddLast($"new YetaWF_ComponentsHTML.TabsComponent('{model.Id}', {JsonConvert.SerializeObject(setup)});"); return(hb.ToString()); }