/// <summary> /// In HTML konvertieren /// </summary> /// <returns>Das Control als HTML</returns> public override IHtmlNode ToHtml() { var classes = new List <string>(); classes.Add(Class); if (!Fluid) { classes.Add("container"); } else { classes.Add("container-fluid"); } var rows = Content.OrderBy(x => x.Key).Select(x => x.Value); var html = new HtmlElementDiv(from x in rows select new HtmlElementDiv(x.Select(y => y.ToHtml())) { Class = "row mt-5" }) { ID = ID, Class = string.Join(" ", classes.Where(x => !string.IsNullOrWhiteSpace(x))), Style = Style, Role = Role }; return(html); }
/// <summary> /// In HTML konvertieren /// </summary> /// <returns>Das Control als HTML</returns> public override IHtmlNode ToHtml() { if (!string.IsNullOrWhiteSpace(Value)) { Checked = Value == Option; } var classes = new List <string>(); classes.Add(Class); var c = new List <string>(); c.Add("radio"); if (Inline) { c.Add("form-check-inline"); } if (Disabled) { c.Add("disabled"); } var html = new HtmlElementDiv ( new HtmlElementLabel ( new HtmlElementInput() { ID = ID, Name = Name, Pattern = Pattern, Type = "radio", Disabled = Disabled, Role = Role, Checked = Checked, Class = string.Join(" ", classes.Where(x => !string.IsNullOrWhiteSpace(x))), Style = Style, Value = Option }, new HtmlText(string.IsNullOrWhiteSpace(Discription) ? string.Empty : " " + Discription) ) { } ) { Class = string.Join(" ", c.Where(x => !string.IsNullOrWhiteSpace(x))) }; return(html); }
/// <summary> /// In HTML konvertieren /// </summary> /// <returns>Das Control als HTML</returns> public override IHtmlNode ToHtml() { var classes = new List <string>(); classes.Add(Class); classes.Add("profile"); var img = null as HtmlElement; if (!string.IsNullOrWhiteSpace(Image)) { img = new HtmlElementImg() { Src = Image, Class = "" }; } else if (!string.IsNullOrWhiteSpace(User)) { var split = User.Split(' '); var i = split[0].FirstOrDefault().ToString(); i += split.Count() > 1 ? split[1].FirstOrDefault().ToString() : ""; img = new HtmlElementB(new HtmlText(i)) { Class = "bg-info text-light" }; } var html = new HtmlElementDiv(img, new HtmlText(User)) { ID = ID, Class = string.Join(" ", classes.Where(x => !string.IsNullOrWhiteSpace(x))), Style = Style, Role = Role }; if (Modal != null) { html.AddUserAttribute("data-toggle", "modal"); html.AddUserAttribute("data-target", "#" + Modal.ID); return(new HtmlList(html, Modal.ToHtml())); } return(html); }
/// <summary> /// In HTML konvertieren /// </summary> /// <returns>Das Control als HTML</returns> public override IHtmlNode ToHtml() { var classes = new List <string>(); classes.Add(Class); classes.Add("card"); switch (Layout) { case TypesLayoutCard.Primary: classes.Add("bg-primary"); break; case TypesLayoutCard.Secondary: classes.Add("bg-secondary"); break; case TypesLayoutCard.Success: classes.Add("bg-success"); break; case TypesLayoutCard.Info: classes.Add("bg-info"); break; case TypesLayoutCard.Warning: classes.Add("bg-warning"); break; case TypesLayoutCard.Danger: classes.Add("bg-danger"); break; case TypesLayoutCard.Light: classes.Add("bg-light"); break; case TypesLayoutCard.Dark: classes.Add("bg-dark"); break; } switch (HorizontalAlignment) { case TypesHorizontalAlignment.Left: classes.Add("float-left"); break; case TypesHorizontalAlignment.Right: classes.Add("float-right"); break; } if (!ShowBorder) { classes.Add("border-0"); } var html = new HtmlElementDiv() { ID = ID, Class = string.Join(" ", classes.Where(x => !string.IsNullOrWhiteSpace(x))), Style = Style, Role = Role }; if (!string.IsNullOrWhiteSpace(Header)) { html.Elements.Add(new HtmlElementDiv(new HtmlText(Header)) { Class = "card-header" }); } if (!string.IsNullOrWhiteSpace(HeaderImage)) { html.Elements.Add(new HtmlElementImg() { Src = HeaderImage, Class = "card-img-top" }); } if (!string.IsNullOrWhiteSpace(Headline)) { Content.Insert(0, new ControlText(Page) { Text = Headline, Class = "card-title", Format = TypesTextFormat.H4 }); } html.Elements.Add(new HtmlElementDiv(Content.Select(x => x.ToHtml())) { Class = "card-body" }); if (!string.IsNullOrWhiteSpace(FooterImage)) { html.Elements.Add(new HtmlElementImg() { Src = FooterImage, Class = "card-img-top" }); } if (!string.IsNullOrWhiteSpace(Footer)) { html.Elements.Add(new HtmlElementDiv(new HtmlText(Footer)) { Class = "card-footer" }); } return(html); }
/// <summary> /// In HTML konvertieren /// </summary> /// <returns>Das Control als HTML</returns> public override IHtmlNode ToHtml() { var classes = new List <string>(); classes.Add(Class); classes.Add("modal"); if (Fade) { classes.Add("fade"); } var headerText = new HtmlElementH4(Header) { Class = "modal-title" }; var headerButtonLabel = new HtmlElementSpan(new HtmlText("×")) { }; headerButtonLabel.AddUserAttribute("aria-hidden", "true"); var headerButton = new HtmlElementButton(headerButtonLabel) { Class = "close" }; headerButton.AddUserAttribute("aria-label", "close"); headerButton.AddUserAttribute("data-dismiss", "modal"); var header = new HtmlElementDiv(headerText, headerButton) { Class = "modal-header" }; var body = new HtmlElementDiv(from x in Content select x.ToHtml()) { Class = "modal-body" }; var footerButtonOK = new HtmlElementButton(new HtmlText("OK")) { Type = "submit", Class = "btn btn-success" }; //footerButtonOK.AddUserAttribute("data-dismiss", "modal"); var footerButtonCancel = new HtmlElementButton(new HtmlText("Abbrechen")) { Type = "button", Class = "btn btn-danger" }; footerButtonCancel.AddUserAttribute("data-dismiss", "modal"); var footer = new HtmlElementDiv(footerButtonOK, footerButtonCancel) { Class = "modal-footer" }; var form = new HtmlElementForm(header, body, footer) { Action = "#" + ID, Method = "post", Name = "form_" + ID }; var content = new HtmlElementDiv(form) { Class = "modal-content" }; var dialog = new HtmlElementDiv(content) { Class = "modal-dialog", Role = "document" }; var html = new HtmlElementDiv(dialog) { ID = ID, Class = string.Join(" ", classes.Where(x => !string.IsNullOrWhiteSpace(x))), Style = Style, Role = "dialog" }; if (!string.IsNullOrWhiteSpace(OnShownCode)) { var shown = "$('#" + ID + "').on('shown.bs.modal', function(e) { " + OnShownCode + " });"; Page.AddScript(ID + "_shown", shown); } if (!string.IsNullOrWhiteSpace(OnHiddenCode)) { var hidden = "$('#" + ID + "').on('hidden.bs.modal', function() { " + OnHiddenCode + " });"; Page.AddScript(ID + "_hidden", hidden); } return(html); }
/// <summary> /// In HTML konvertieren /// </summary> /// <returns>Das Control als HTML</returns> public override IHtmlNode ToHtml() { var classes = new List <string>(); classes.Add(Class); classes.Add("dropdown"); var buttonClasses = new List <string>(); buttonClasses.Add(ClassButton); buttonClasses.Add("btn"); if (Outline) { switch (Layout) { case TypesLayoutButton.Primary: buttonClasses.Add("btn-outline-primary"); break; case TypesLayoutButton.Success: buttonClasses.Add("btn-outline-success"); break; case TypesLayoutButton.Info: buttonClasses.Add("btn-outline-info"); break; case TypesLayoutButton.Warning: buttonClasses.Add("btn-outline-warning"); break; case TypesLayoutButton.Danger: buttonClasses.Add("btn-outline-danger"); break; case TypesLayoutButton.Light: buttonClasses.Add("btn-outline-light"); break; case TypesLayoutButton.Dark: buttonClasses.Add("btn-outline-dark"); break; } } else { switch (Layout) { case TypesLayoutButton.Primary: buttonClasses.Add("btn-primary"); break; case TypesLayoutButton.Success: buttonClasses.Add("btn-success"); break; case TypesLayoutButton.Info: buttonClasses.Add("btn-info"); break; case TypesLayoutButton.Warning: buttonClasses.Add("btn-warning"); break; case TypesLayoutButton.Danger: buttonClasses.Add("btn-danger"); break; case TypesLayoutButton.Light: buttonClasses.Add("btn-light"); break; case TypesLayoutButton.Dark: buttonClasses.Add("btn-dark"); break; } } switch (Size) { case TypesSize.Large: buttonClasses.Add("btn-lg"); break; case TypesSize.Small: buttonClasses.Add("btn-sm"); break; } switch (HorizontalAlignment) { case TypesHorizontalAlignment.Left: classes.Add("float-left"); break; case TypesHorizontalAlignment.Right: classes.Add("float-right"); break; } if (Block) { buttonClasses.Add("btn-block"); } var html = new HtmlElementDiv() { ID = ID, Class = string.Join(" ", classes.Where(x => !string.IsNullOrWhiteSpace(x))), Style = Style }; var button = new HtmlElementButton() { ID = string.IsNullOrWhiteSpace(ID) ? "" : ID + "_btn", Class = string.Join(" ", buttonClasses.Where(x => !string.IsNullOrWhiteSpace(x))), Style = StyleButton, DataToggle = "dropdown" }; if (!string.IsNullOrWhiteSpace(Icon) && !string.IsNullOrWhiteSpace(Text)) { button.Elements.Add(new HtmlElementSpan() { Class = Icon }); button.Elements.Add(new HtmlNbsp()); button.Elements.Add(new HtmlNbsp()); button.Elements.Add(new HtmlNbsp()); } else if (!string.IsNullOrWhiteSpace(Icon) && string.IsNullOrWhiteSpace(Text)) { button.AddClass(Icon); } if (!string.IsNullOrWhiteSpace(Text)) { button.Elements.Add(new HtmlText(Text)); } html.Elements.Add(button); html.Elements.Add ( new HtmlElementUl ( Items.Select ( x => x == null ? new HtmlElementLi() { Class = "dropdown-divider", Inline = true } : x is ControlDropdownMenuHeader ? x.ToHtml() : new HtmlElementLi(x.ToHtml().AddClass("dropdown-item")) { } ) ) { Class = HorizontalAlignment == TypesHorizontalAlignment.Right ? "dropdown-menu dropdown-menu-right" : "dropdown-menu" } ); return(html); }
/// <summary> /// In HTML konvertieren /// </summary> /// <returns>Das Control als HTML</returns> public override IHtmlNode ToHtml() { var classes = new List <string>(); classes.Add(Class); classes.Add("post"); var profile = new ControlAvatar(Page) { User = User, Image = Image }; var timespan = string.Empty; var days = (DateTime.Now - Timestamp).Days; if (days == 1) { timespan = "vor ein Tag"; } else if (days < 1) { var hours = (DateTime.Now - Timestamp).Hours; if (hours == 1) { timespan = "vor einer Stunde"; } else if (hours < 1) { var minutes = (DateTime.Now - Timestamp).Minutes; if (minutes == 1) { timespan = "vor einer Minute"; } else if (minutes < 1) { timespan = "gerade ebend"; } else { timespan = "vor " + minutes + " Minuten"; } } else { timespan = "vor " + hours + " Stunden"; } } else { timespan = "vor " + days + " Tagen"; } var date = new ControlText(Page) { Text = timespan, Tooltip = "Am " + Timestamp.ToShortDateString() + " um " + Timestamp.ToShortTimeString() + " Uhr", Format = TypesTextFormat.Span, Color = TypesTextColor.Muted }; var headerText = new HtmlElementP ( new ControlText(Page) { Text = Action, Color = TypesTextColor.Info, Format = TypesTextFormat.Span }.ToHtml(), date.ToHtml() ); var setting = new ControlDropdownMenu(Page) { Icon = "fas fa-cog", Layout = TypesLayoutButton.Light, HorizontalAlignment = TypesHorizontalAlignment.Right, Size = TypesSize.Small }; setting.Add(new ControlLink(Page) { Text = "Löschen", Icon = "fas fa-trash-alt", Color = TypesTextColor.Danger, Url = Page.GetUrl() }); var header = new HtmlElementDiv(setting.ToHtml(), profile.ToHtml(), headerText) { Class = "header" }; var body = new HtmlElementDiv(new HtmlText(Post)) { Class = string.Join(" ", classes.Where(x => !string.IsNullOrWhiteSpace(x))) }; var likeText = "Gefällt mir" + (Likes > 0 ? " (" + Likes + ")" : string.Empty); var like = new ControlButtonLink(Page) { Icon = "fas fa-thumbs-up", Text = likeText, Url = Page.GetUrl(), Size = TypesSize.Small, Layout = TypesLayoutButton.Light, Outline = true, Color = TypesTextColor.Primary }; //var comment = new ControlButtonLink(Page) { Icon = "fas fa-comment", Text = "Antworten", Url = Page.GetUrl(), Size = TypesSize.Small, Layout = TypesLayoutButton.Light, Color = TypesTextColor.Primary }; var option = new HtmlElementDiv(like.ToHtml()) { Class = "options" }; var html = new HtmlList(header, body, option); //if (Comments.Count > 0) //{ // html.Elements.Add(new HtmlElementHr()); //} html.Elements.AddRange(from x in Comments select x.ToHtml()); var form = new ControlPanelFormular(Page) { Name = !string.IsNullOrWhiteSpace(Name)? Name : "form", EnableCancelButton = false }; form.SubmitButton.Icon = "fas fa-paper-plane"; form.SubmitButton.Text = "Antworten"; form.SubmitButton.Outline = true; form.SubmitButton.Size = TypesSize.Small; form.SubmitButton.HorizontalAlignment = TypesHorizontalAlignment.Default; form.Add(new ControlFormularItemTextBox(form) { Format = TypesEditTextFormat.Multiline, Placeholder = "Kommentieren..." }); html.Elements.Add(form.ToHtml()); return(html); }
/// <summary> /// In HTML konvertieren /// </summary> /// <returns>Das Control als HTML</returns> public override IHtmlNode ToHtml() { var classes = new List <string>(); classes.Add(Class); switch (Color) { case TypesTextColor.Muted: classes.Add("text-muted"); break; case TypesTextColor.Primary: classes.Add("text-primary"); break; case TypesTextColor.Success: classes.Add("text-success"); break; case TypesTextColor.Info: classes.Add("text-info"); break; case TypesTextColor.Warning: classes.Add("text-warning"); break; case TypesTextColor.Danger: classes.Add("text-danger"); break; case TypesTextColor.Light: classes.Add("text-light"); break; case TypesTextColor.Dark: classes.Add("text-dark"); break; case TypesTextColor.White: classes.Add("text-white"); break; } switch (BackgroundColor) { case TypesBackgroundColor.Primary: classes.Add("bg-primary"); break; case TypesBackgroundColor.Secondary: classes.Add("bg-secondary"); break; case TypesBackgroundColor.Success: classes.Add("bg-success"); break; case TypesBackgroundColor.Info: classes.Add("bg-info"); break; case TypesBackgroundColor.Warning: classes.Add("bg-warning"); break; case TypesBackgroundColor.Danger: classes.Add("bg-danger"); break; case TypesBackgroundColor.Light: classes.Add("bg-light"); break; case TypesBackgroundColor.Dark: classes.Add("bg-dark"); break; case TypesBackgroundColor.White: classes.Add("bg-white"); break; case TypesBackgroundColor.Transparent: classes.Add("bg-transparent"); break; } switch (HorizontalAlignment) { case TypesHorizontalAlignment.Left: classes.Add("float-left"); break; case TypesHorizontalAlignment.Right: classes.Add("float-right"); break; } var html = null as HtmlElement; switch (Format) { case TypesTextFormat.Paragraph: html = new HtmlElementP(Text) { ID = ID, Class = string.Join(" ", classes.Where(x => !string.IsNullOrWhiteSpace(x))), Style = Style, Role = Role }; break; case TypesTextFormat.Italic: html = new HtmlElementI(Text) { ID = ID, Class = string.Join(" ", classes.Where(x => !string.IsNullOrWhiteSpace(x))), Style = Style, Role = Role }; break; case TypesTextFormat.Bold: html = new HtmlElementB(Text) { ID = ID, Class = string.Join(" ", classes.Where(x => !string.IsNullOrWhiteSpace(x))), Style = Style, Role = Role }; break; case TypesTextFormat.H1: html = new HtmlElementH1(Text) { ID = ID, Class = string.Join(" ", classes.Where(x => !string.IsNullOrWhiteSpace(x))), Style = Style, Role = Role }; break; case TypesTextFormat.H4: html = new HtmlElementH4(Text) { ID = ID, Class = string.Join(" ", classes.Where(x => !string.IsNullOrWhiteSpace(x))), Style = Style, Role = Role }; break; case TypesTextFormat.Span: html = new HtmlElementSpan(new HtmlText(Text)) { ID = ID, Class = string.Join(" ", classes.Where(x => !string.IsNullOrWhiteSpace(x))), Style = Style, Role = Role }; break; default: html = new HtmlElementDiv(new HtmlText(Text)) { ID = ID, Class = string.Join(" ", classes.Where(x => !string.IsNullOrWhiteSpace(x))), Style = Style, Role = Role }; break; } if (!string.IsNullOrWhiteSpace(Tooltip)) { html.AddUserAttribute("data-toggle", "tooltip"); html.AddUserAttribute("title", Tooltip); } return(html); }
/// <summary> /// In HTML konvertieren /// </summary> /// <returns>Das Control als HTML</returns> public override IHtmlNode ToHtml() { var classes = new List <string>(); classes.Add(Class); var barClass = new List <string>(); switch (Format) { case TypesProgressBarFormat.Colored: barClass.Add("progress-bar"); break; case TypesProgressBarFormat.Striped: barClass.Add("progress-bar"); barClass.Add("progress-bar-striped"); break; case TypesProgressBarFormat.Animated: barClass.Add("progress-bar"); barClass.Add("progress-bar-striped"); barClass.Add("progress-bar-animated"); break; default: return(new HtmlElementProgress(Value + "%") { ID = ID, Class = Class, Style = Style, Role = Role, Min = Min.ToString(), Max = Max.ToString(), Value = Value.ToString() }); } classes.Add("progress"); var styles = new List <string>(); styles.Add(Style); var barStyles = new List <string>(); barStyles.Add("width: " + Value + "%;"); switch (Layout) { case TypesLayoutProgressBar.Primary: barClass.Add("bg-primary"); break; case TypesLayoutProgressBar.Success: barClass.Add("bg-success"); break; case TypesLayoutProgressBar.Info: barClass.Add("bg-info"); break; case TypesLayoutProgressBar.Warning: barClass.Add("bg-warning"); break; case TypesLayoutProgressBar.Danger: barClass.Add("bg-danger"); break; case TypesLayoutProgressBar.Light: barClass.Add("bg-light"); break; case TypesLayoutProgressBar.Dark: barClass.Add("bg-dark"); break; case TypesLayoutProgressBar.Color: barStyles.Add("background-color: " + BackgroundColor + ";"); break; } switch (Color) { case TypesTextColor.Muted: barClass.Add("text-muted"); break; case TypesTextColor.Primary: barClass.Add("text-primary"); break; case TypesTextColor.Success: barClass.Add("text-success"); break; case TypesTextColor.Info: barClass.Add("text-info"); break; case TypesTextColor.Warning: barClass.Add("text-warning"); break; case TypesTextColor.Danger: barClass.Add("text-danger"); break; case TypesTextColor.Light: barClass.Add("text-light"); break; case TypesTextColor.Dark: barClass.Add("text-dark"); break; case TypesTextColor.White: barClass.Add("text-white"); break; } switch (Size) { case TypesSize.Large: styles.Add("height: 30px;"); break; case TypesSize.Small: styles.Add("height: 10px;"); break; } var bar = new HtmlElementDiv(new HtmlText(Text)) { ID = ID, Class = string.Join(" ", barClass.Where(x => !string.IsNullOrWhiteSpace(x))), Style = string.Join(" ", barStyles.Where(x => !string.IsNullOrWhiteSpace(x))), Role = Role }; return(new HtmlElementDiv(bar) { ID = ID, Class = string.Join(" ", classes.Where(x => !string.IsNullOrWhiteSpace(x))), Style = string.Join(" ", styles.Where(x => !string.IsNullOrWhiteSpace(x))), Role = Role }); }
/// <summary> /// In HTML konvertieren /// </summary> /// <returns>Das Control als HTML</returns> public override IHtmlNode ToHtml() { var classes = new List <string>(); classes.Add(Class); var barClass = new List <string>(); switch (Format) { case TypesProgressBarFormat.Colored: barClass.Add("progress-bar"); break; case TypesProgressBarFormat.Striped: barClass.Add("progress-bar"); barClass.Add("progress-bar-striped"); break; case TypesProgressBarFormat.Animated: barClass.Add("progress-bar"); barClass.Add("progress-bar-striped"); barClass.Add("progress-bar-animated"); break; default: return(new HtmlElementProgress(Items.Select(x => x.Value).Sum() + "%") { ID = ID, Class = Class, Style = Style, Role = Role, Min = "0", Max = "100", Value = Items.Select(x => x.Value).Sum().ToString() }); } classes.Add("progress"); var html = new HtmlElementDiv() { ID = ID, Class = string.Join(" ", classes.Where(x => !string.IsNullOrWhiteSpace(x))), Style = Style, Role = Role }; foreach (var v in Items) { var styles = new List <string>(); styles.Add("width: " + v.Value + "%;"); var c = new List <string>(barClass); switch (v.Layout) { case TypesLayoutProgressBar.Primary: c.Add("bg-primary"); break; case TypesLayoutProgressBar.Success: c.Add("bg-success"); break; case TypesLayoutProgressBar.Info: c.Add("bg-info"); break; case TypesLayoutProgressBar.Warning: c.Add("bg-warning"); break; case TypesLayoutProgressBar.Danger: c.Add("bg-danger"); break; case TypesLayoutProgressBar.Light: c.Add("bg-light"); break; case TypesLayoutProgressBar.Dark: c.Add("bg-dark"); break; case TypesLayoutProgressBar.Color: c.Add("background-color: " + v.BackgroundColor + ";"); break; } switch (v.Color) { case TypesTextColor.Muted: barClass.Add("text-muted"); break; case TypesTextColor.Primary: barClass.Add("text-primary"); break; case TypesTextColor.Success: barClass.Add("text-success"); break; case TypesTextColor.Info: barClass.Add("text-info"); break; case TypesTextColor.Warning: barClass.Add("text-warning"); break; case TypesTextColor.Danger: barClass.Add("text-danger"); break; case TypesTextColor.Light: barClass.Add("text-light"); break; case TypesTextColor.Dark: barClass.Add("text-dark"); break; case TypesTextColor.White: barClass.Add("text-white"); break; } var bar = new HtmlElementDiv(new HtmlText(v.Text)) { ID = ID, Class = string.Join(" ", c.Where(x => !string.IsNullOrWhiteSpace(x))), Style = string.Join(" ", styles.Where(x => !string.IsNullOrWhiteSpace(x))), Role = Role }; html.Elements.Add(bar); } return(html); }
/// <summary> /// In HTML konvertieren /// </summary> /// <returns>Das Control als HTML</returns> public override IHtmlNode ToHtml() { var classes = new List <string>(); classes.Add(Class); classes.Add("comment"); var profile = new ControlAvatar(Page) { User = User, Image = Image }; var timespan = string.Empty; var days = (DateTime.Now - Timestamp).Days; if (days == 1) { timespan = "vor ein Tag"; } else if (days < 1) { var hours = (DateTime.Now - Timestamp).Hours; if (hours == 1) { timespan = "vor einer Stunde"; } else if (hours < 1) { var minutes = (DateTime.Now - Timestamp).Minutes; if (minutes == 1) { timespan = "vor einer Minute"; } else if (minutes < 1) { timespan = "gerade ebend"; } else { timespan = "vor " + minutes + " Minuten"; } } else { timespan = "vor " + hours + " Stunden"; } } else { timespan = "vor " + days + " Tagen"; } var date = new ControlText(Page) { Text = timespan, Tooltip = "Am " + Timestamp.ToShortDateString() + " um " + Timestamp.ToShortTimeString() + " Uhr", Format = TypesTextFormat.Span, Color = TypesTextColor.Muted }; var header = new HtmlElementDiv(profile.ToHtml(), date.ToHtml()) { Class = "header" }; var body = new HtmlElementDiv(new HtmlText(Post)) { Class = "post" }; var likeText = "Gefällt mir" + (Likes > 0 ? " (" + Likes + ")" : string.Empty); var like = new ControlButtonLink(Page) { Icon = "fas fa-thumbs-up", Text = likeText, Url = Page.GetUrl(), Size = TypesSize.Small, Layout = TypesLayoutButton.Light, Outline = true, Color = TypesTextColor.Primary }; var option = new HtmlElementDiv(like.ToHtml()) { Class = "options" }; var html = new HtmlElementDiv(header, body, option) { Class = string.Join(" ", classes.Where(x => !string.IsNullOrWhiteSpace(x))) }; return(html); }