/// <summary> /// In HTML konvertieren /// </summary> /// <param name="context">Der Kontext, indem das Steuerelement dargestellt wird</param> /// <returns>Das Control als HTML</returns> public override IHtmlNode Render(RenderContextFormular context) { var html = new HtmlElementTextContentDiv ( new HtmlElementFieldLabel ( new HtmlElementFieldInput() { Name = Name, Pattern = Pattern, Type = "checkbox", Disabled = Disabled, //Role = Role, Checked = Value.Equals("true") }, new HtmlText(string.IsNullOrWhiteSpace(Description) ? string.Empty : " " + context.I18N(Description)) ) { } ) { Class = Css.Concatenate("checkbox", GetClasses()), Style = GetStyles(), }; return(html); }
/// <summary> /// Initialisiert das Formularelement /// </summary> /// <param name="context">Der Kontext, indem das Steuerelement dargestellt wird</param> public override void Initialize(RenderContextFormular context) { if (Group != null) { Group.Initialize(context); } }
/// <summary> /// In HTML konvertieren /// </summary> /// <param name="context">Der Kontext, indem das Steuerelement dargestellt wird</param> /// <returns>Das Control als HTML</returns> public override IHtmlNode Render(RenderContextFormular context) { switch (ValidationResult) { case TypesInputValidity.Success: Classes.Add("input-success"); break; case TypesInputValidity.Warning: Classes.Add("input-warning"); break; case TypesInputValidity.Error: Classes.Add("input-error"); break; } var html = new HtmlElementFieldInput() { ID = ID, Value = Value, Name = Name, Type = "file", Class = Css.Concatenate("form-control-file", GetClasses()), Style = GetStyles(), Role = Role, Placeholder = Placeholder }; html.AddUserAttribute("accept", string.Join(",", AcceptFile)); return(html); }
/// <summary> /// Initialisiert das Formularelement /// </summary> /// <param name="context">Der Kontext, indem das Steuerelement dargestellt wird</param> public override void Initialize(RenderContextFormular context) { var module = ModuleManager.GetModule("webexpress"); if (module != null) { context.Page.CssLinks.Add(new UriResource(module.ContextPath, new UriRelative("/assets/css/moveselector.css"))); context.Page.HeaderScriptLinks.Add(new UriResource(module.ContextPath, new UriRelative("/assets/js/moveselector.js"))); } if (context.Page.HasParam(Name)) { Value = context?.Page.GetParamValue(Name); } var value = string.Empty; var options = string.Join(",", Options.Select(x => "{id:'" + x.ID + "',value:'" + x.Value + "'}")); if (Value != null) { value = string.Join(",", Value?.Split(";", System.StringSplitOptions.RemoveEmptyEntries).Select(x => $"'{ x }'")); } context.Page.AddScript(ID, $"new MoveSelector('#moveselector_{ ID }', '{ Name }', [{ options }], [{ value }]);"); }
/// <summary> /// Initialisiert das Formularelement /// </summary> /// <param name="context">Der Kontext, indem das Steuerelement dargestellt wird</param> public override void Initialize(RenderContextFormular context) { if (context.Page.HasParam(Name)) { Value = context?.Page.GetParamValue(Name); } }
/// <summary> /// In HTML konvertieren /// </summary> /// <param name="context">Der Kontext, indem das Steuerelement dargestellt wird</param> /// <returns>Das Control als HTML</returns> public override IHtmlNode Render(RenderContextFormular context) { //Classes.Add("form-control"); if (Disabled) { Classes.Add("disabled"); } switch (ValidationResult) { case TypesInputValidity.Success: Classes.Add("input-success"); break; case TypesInputValidity.Warning: Classes.Add("input-warning"); break; case TypesInputValidity.Error: Classes.Add("input-error"); break; } var html = new HtmlElementTextContentDiv() // HtmlElementFieldInput form-control { ID = $"tag_{ID}", Class = Css.Concatenate("form-control simpletags", GetClasses()), Style = GetStyles(), Role = "tags" }; return(html); }
/// <summary> /// Initialisiert das Formularelement /// </summary> /// <param name="context">Der Kontext, indem das Steuerelement dargestellt wird</param> public override void Initialize(RenderContextFormular context) { if (context.Page.HasParam(Name)) { Value = context.Page.GetParamValue(Name).Equals("on", StringComparison.OrdinalIgnoreCase) ? "true" : "false"; } }
/// <summary> /// Initialisiert das Formularelement /// </summary> /// <param name="context">Der Kontext, indem das Steuerelement dargestellt wird</param> public override void Initialize(RenderContextFormular context) { var grpupContex = new RenderContextFormularGroup(context, this); foreach (var item in Items) { item.Initialize(grpupContex); } }
/// <summary> /// Initialisiert das Formularelement /// </summary> /// <param name="context">Der Kontext, indem das Steuerelement dargestellt wird</param> public override void Initialize(RenderContextFormular context) { context.Page.AddParam(Name, context.Formular.Scope); if (context.Page.HasParam(Name)) { Value = context.Page.GetParamValue(Name); } }
/// <summary> /// In HTML konvertieren /// </summary> /// <param name="context">Der Kontext, indem das Steuerelement dargestellt wird</param> /// <returns>Das Control als HTML</returns> public override IHtmlNode Render(RenderContextFormular context) { return(new HtmlElementFieldInput() { ID = ID, Value = Value, Name = Name, Type = "hidden", Role = Role }); }
/// <summary> /// In HTML konvertieren /// </summary> /// <param name="context">Der Kontext, indem das Steuerelement dargestellt wird</param> /// <returns>Das Control als HTML</returns> public override IHtmlNode Render(RenderContextFormular context) { if (!string.IsNullOrWhiteSpace(Value)) { Checked = Value == Option; } var c = new List <string> { "radio" }; if (Inline) { c.Add("form-check-inline"); } if (Disabled) { c.Add("disabled"); } var html = new HtmlElementTextContentDiv ( new HtmlElementFieldLabel ( new HtmlElementFieldInput() { ID = ID, Name = Name, Pattern = Pattern, Type = "radio", Disabled = Disabled, Checked = Checked, Class = string.Join(" ", Classes.Where(x => !string.IsNullOrWhiteSpace(x))), Style = string.Join("; ", Styles.Where(x => !string.IsNullOrWhiteSpace(x))), Role = Role, Value = Option }, new HtmlText(string.IsNullOrWhiteSpace(Description) ? string.Empty : " " + Description) ) { } ) { Class = string.Join(" ", c.Where(x => !string.IsNullOrWhiteSpace(x))) }; return(html); }
/// <summary> /// In HTML konvertieren /// </summary> /// <param name="context">Der Kontext, indem das Steuerelement dargestellt wird</param> /// <returns>Das Control als HTML</returns> public override IHtmlNode Render(RenderContextFormular context) { return(new HtmlElementFieldLabel() { Text = Text, Class = GetClasses(), Style = GetStyles(), Role = Role, For = FormularItem != null? string.IsNullOrWhiteSpace(FormularItem.ID) ? FormularItem.Name : FormularItem.ID: null }); }
/// <summary> /// In HTML konvertieren /// </summary> /// <param name="context">Der Kontext, indem das Steuerelement dargestellt wird</param> /// <param name="formular">Das Formular</param> /// <returns>Das Control als HTML</returns> public override IHtmlNode Render(RenderContextFormular context) { var c = new List <string> { "form-control-static" }; var html = new HtmlElementTextContentP() { Text = Text, Class = string.Join(" ", Classes.Where(x => !string.IsNullOrWhiteSpace(x))), Style = string.Join("; ", Styles.Where(x => !string.IsNullOrWhiteSpace(x))), Role = Role }; return(html); }
/// <summary> /// Initialisiert das Formularelement /// </summary> /// <param name="context">Der Kontext, indem das Steuerelement dargestellt wird</param> public override void Initialize(RenderContextFormular context) { AutoInitialize = true; if (context.Page.HasParam(Name)) { Value = context.Page.GetParamValue(Name); } var module = ModuleManager.GetModule("webexpress"); if (module != null) { context.Page.HeaderScriptLinks.Add(new UriResource(module.ContextPath, new UriRelative("/assets/js/bootstrap-datepicker.min.js"))); context.Page.HeaderScriptLinks.Add(new UriResource(module.ContextPath, new UriRelative("/assets/js/locales_datepicker/bootstrap-datepicker." + context.Culture.TwoLetterISOLanguageName.ToLower() + ".min.js"))); context.Page.CssLinks.Add(new UriResource(module.ContextPath, new UriRelative("/assets/css/bootstrap-datepicker3.min.css"))); } context.Page.AddScript(ID, @"$('#" + ID + @"').datepicker({format: ""dd.mm.yyyy"", todayBtn: true, language: ""de"", zIndexOffset: 999});"); }
/// <summary> /// Initialisiert das Formularelement /// </summary> /// <param name="context">Der Kontext, indem das Steuerelement dargestellt wird</param> public override void Initialize(RenderContextFormular context) { Rows = 8; AutoInitialize = true; if (context.Page.HasParam(Name)) { Value = context?.Page.GetParamValue(Name); } if (Format == TypesEditTextFormat.Wysiwyg) { var module = ModuleManager.GetModule("webexpress"); if (module != null) { context.Page.CssLinks.Add(new UriResource(module.ContextPath, new UriRelative("/assets/css/summernote-bs4.min.css"))); context.Page.HeaderScriptLinks.Add(new UriResource(module.ContextPath, new UriRelative("/assets/js/summernote-bs4.min.js"))); } } }
/// <summary> /// In HTML konvertieren /// </summary> /// <param name="context">Der Kontext, indem das Steuerelement dargestellt wird</param> /// <returns>Das Control als HTML</returns> public override IHtmlNode Render(RenderContextFormular context) { //if (Disabled) //{ // Classes.Add("disabled"); //} //if (AutoInitialize) //{ // context.Page.AddScript(ID, InitializeCode); // AutoInitialize = false; //} var input = new HtmlElementFieldInput() { ID = ID, Name = Name, Type = "text", Class = "form-control", Value = Value }; //var span = new HtmlElementTextSemanticsSpan() //{ // Class = TypeIcon.Calendar.ToClass() //}; //var div = new HtmlElementTextContentDiv(span) //{ // Class = "input-group-text" //}; //var html = new HtmlElementTextContentDiv(input, div) //{ // ID = ID, // Class = "input-group", // //DataProvide = "datepicker" //}; return(input); }
/// <summary> /// In HTML konvertieren /// </summary> /// <param name="context">Der Kontext, indem das Steuerelement dargestellt wird</param> /// <returns>Das Control als HTML</returns> public override IHtmlNode Render(RenderContextFormular context) { var html = new HtmlElementFieldSelect() { ID = ID, Name = Name, Class = Css.Concatenate("custom-select", GetClasses()), Style = GetStyles(), Role = Role, Disabled = Disabled, OnChange = OnChange?.ToString() }; foreach (var v in Items) { if (v.SubItems.Count > 0) { html.Elements.Add(new HtmlElementFormOptgroup() { Label = v.Text }); foreach (var s in v.SubItems) { html.Elements.Add(new HtmlElementFormOption() { Value = s.Value, Text = s.Text, Selected = (s.Value == Value) }); } } else { html.Elements.Add(new HtmlElementFormOption() { Value = v.Value, Text = v.Text, Selected = (v.Value == Value) }); } } return(html); }
/// <summary> /// Initialisiert das Formular /// </summary> /// <param name="context">Der Kontext, indem das Steuerelement dargestellt wird</param> public virtual void Initialize(RenderContext context) { var renderContext = new RenderContextFormular(context, this); Scope = ParameterScope.Local; Name = "Form"; SubmitButton.Click += (s, e) => { Validate(); if (Valid) { OnProcess(); if (!string.IsNullOrWhiteSpace(RedirectUri?.ToString())) { context.Page.Redirecting(RedirectUri); } } }; }
/// <summary> /// Initialisiert das Formularelement /// </summary> /// <param name="context">Der Kontext, indem das Steuerelement dargestellt wird</param> public override void Initialize(RenderContextFormular context) { var module = ModuleManager.GetModule("webexpress"); if (module != null) { context.Page.HeaderScriptLinks.Add(new UriResource(module.ContextPath, new UriRelative("/assets/js/simpletags.js"))); context.Page.CssLinks.Add(new UriResource(module.ContextPath, new UriRelative("/assets/css/simpletags.css"))); } if (context.Page.HasParam(Name)) { Value = context?.Page.GetParamValue(Name); } var list = new List <string>(); if (Value != null) { list.AddRange(Value.Split(';', System.StringSplitOptions.RemoveEmptyEntries).Select(x => $"\"{ x.Trim() }\"")); } context.Page.AddScript(ID, $"new Tags('#tag_{ ID }', '{ Name }', [{ string.Join(',', list) }]);"); }
/// <summary> /// Initialisiert das Formularelement /// </summary> /// <param name="context">Der Kontext, indem das Steuerelement dargestellt wird</param> public override void Initialize(RenderContextFormular context) { //AddParam(name, Formular.Scope); //Value = GetParam(Name); }
/// <summary> /// In HTML konvertieren /// </summary> /// <param name="context">Der Kontext, indem das Steuerelement dargestellt wird</param> /// <returns>Das Control als HTML</returns> public override IHtmlNode Render(RenderContextFormular context) { return(Group?.Render(context)); }
/// <summary> /// In HTML konvertieren /// </summary> /// <param name="context">Der Kontext, indem das Steuerelement dargestellt wird</param> /// <returns>Das Control als HTML</returns> public override IHtmlNode Render(RenderContextFormular context) { var renderContext = new RenderContextFormularGroup(context, this); var html = new HtmlElementTextContentDiv() { ID = ID, Class = Css.Concatenate("", GetClasses()), Style = GetStyles(), }; foreach (var item in Items) { var input = item as ControlFormularItemInput; if (input != null) { var icon = new ControlIcon() { Icon = input?.Icon }; var label = new ControlFormularItemLabel(!string.IsNullOrEmpty(item.ID) ? item.ID + "_label" : string.Empty); var help = new ControlFormularItemHelpText(!string.IsNullOrEmpty(item.ID) ? item.ID + "_help" : string.Empty); var fieldset = new HtmlElementFormFieldset() { Class = "form-group" }; label.Initialize(renderContext); help.Initialize(renderContext); label.Text = context.I18N(input?.Label); label.FormularItem = item; help.Text = context.I18N(input?.Help); if (icon.Icon != null) { icon.Classes.Add("mr-2 pt-1"); fieldset.Elements.Add(new HtmlElementTextSemanticsSpan(icon.Render(renderContext), label.Render(renderContext)) { Style = "display: flex;" }); } else { fieldset.Elements.Add(label.Render(renderContext)); } fieldset.Elements.Add(item.Render(renderContext)); if (!string.IsNullOrWhiteSpace(input?.Help)) { fieldset.Elements.Add(help.Render(renderContext)); } html.Elements.Add(fieldset); } else { html.Elements.Add(item?.Render(context)); } } return(html); }
/// <summary> /// Konstruktor /// </summary> /// <param name="context">Der Kontext, indem das Steuerelement gerendert wird</param> /// <param name="group">Die Gruppe</param> public RenderContextFormularGroup(RenderContextFormular context, ControlFormularItemGroup group) : base(context.Page, context.Formular) { Group = group; }
/// <summary> /// In HTML konvertieren /// </summary> /// <param name="context">Der Kontext, indem das Steuerelement dargestellt wird</param> /// <returns>Das Control als HTML</returns> public abstract IHtmlNode Render(RenderContextFormular context);
/// <summary> /// In HTML konvertieren /// </summary> /// <param name="context">Der Kontext, indem das Steuerelement dargestellt wird</param> /// <returns>Das Control als HTML</returns> public override IHtmlNode Render(RenderContextFormular context) { if (Disabled) { Classes.Add("disabled"); } switch (ValidationResult) { case TypesInputValidity.Success: Classes.Add("input-success"); break; case TypesInputValidity.Warning: Classes.Add("input-warning"); break; case TypesInputValidity.Error: Classes.Add("input-error"); break; } var html = new HtmlElementTextContentDiv() { ID = $"moveselector_{ID}", Class = Css.Concatenate("moveselector", GetClasses()), // form-control Style = GetStyles(), Role = "moveselector" }; var selectedHeader = new ControlText("selectedHeader") { Text = context.I18N("webexpress", "form.moveselector.selected"), TextColor = new PropertyColorText(TypeColorText.Muted), Format = TypeFormatText.Paragraph }; var selectedList = new ControlList("selectedOptions") { Layout = TypeLayoutList.Flush }; var leftAllButton = new ControlButton("") { Text = "<<", BackgroundColor = new PropertyColorButton(TypeColorButton.Primary), Block = TypeBlockButton.Block }; var leftButton = new ControlButton("") { Text = "<", BackgroundColor = new PropertyColorButton(TypeColorButton.Primary), Block = TypeBlockButton.Block }; var rightButton = new ControlButton("") { Text = ">", BackgroundColor = new PropertyColorButton(TypeColorButton.Primary), Block = TypeBlockButton.Block }; var rightAllButton = new ControlButton("") { Text = ">>", BackgroundColor = new PropertyColorButton(TypeColorButton.Primary), Block = TypeBlockButton.Block }; var availableHeader = new ControlText("availableHeader") { Text = context.I18N("webexpress", "form.moveselector.available"), TextColor = new PropertyColorText(TypeColorText.Muted), Format = TypeFormatText.Paragraph }; var availableList = new ControlList("availableOptions") { Layout = TypeLayoutList.Flush }; var sticky = new List <string>(new string[] { "position: sticky;" }); html.Elements.Add(new HtmlElementTextContentDiv ( selectedHeader.Render(context), selectedList.Render(context) ) { Class = "moveselector-list" }); html.Elements.Add(new HtmlElementTextContentDiv ( leftAllButton.Render(context), leftButton.Render(context), rightButton.Render(context), rightAllButton.Render(context) ) { Class = "moveselector-button" }); html.Elements.Add(new HtmlElementTextContentDiv ( availableHeader.Render(context), availableList.Render(context) ) { Class = "moveselector-list" }); return(html); }
/// <summary> /// In HTML konvertieren /// </summary> /// <param name="context">Der Kontext, indem das Steuerelement dargestellt wird</param> /// <returns>Das Control als HTML</returns> public override IHtmlNode Render(RenderContextFormular context) { Classes.Add("form-control"); if (Disabled) { Classes.Add("disabled"); } switch (ValidationResult) { case TypesInputValidity.Success: Classes.Add("input-success"); break; case TypesInputValidity.Warning: Classes.Add("input-warning"); break; case TypesInputValidity.Error: Classes.Add("input-error"); break; } if (AutoInitialize && Format == TypesEditTextFormat.Wysiwyg && !string.IsNullOrWhiteSpace(ID)) { context.Page.AddScript(ID, InitializeCode); AutoInitialize = false; } return(Format switch { TypesEditTextFormat.Multiline => new HtmlElementFormTextarea() { ID = ID, Value = Value, Name = Name, Class = string.Join(" ", Classes.Where(x => !string.IsNullOrWhiteSpace(x))), Style = string.Join("; ", Styles.Where(x => !string.IsNullOrWhiteSpace(x))), Role = Role, Placeholder = Placeholder, Rows = Rows.ToString() }, TypesEditTextFormat.Wysiwyg => new HtmlElementFormTextarea() { ID = ID, Value = Value, Name = Name, Class = string.Join(" ", Classes.Where(x => !string.IsNullOrWhiteSpace(x))), Style = string.Join("; ", Styles.Where(x => !string.IsNullOrWhiteSpace(x))), Role = Role, Placeholder = Placeholder, Rows = Rows.ToString() }, _ => new HtmlElementFieldInput() { ID = ID, Value = Value, Name = Name, MinLength = MinLength?.ToString(), MaxLength = MaxLength?.ToString(), Required = Required, Pattern = Pattern, Type = "text", Disabled = Disabled, Class = string.Join(" ", Classes.Where(x => !string.IsNullOrWhiteSpace(x))), Style = string.Join("; ", Styles.Where(x => !string.IsNullOrWhiteSpace(x))), Role = Role, Placeholder = Placeholder }, });
/// <summary> /// Initialisiert das Formularelement /// </summary> /// <param name="context">Der Kontext, indem das Steuerelement dargestellt wird</param> public override void Initialize(RenderContextFormular context) { }
/// <summary> /// In HTML konvertieren /// </summary> /// <param name="context">Der Kontext, indem das Steuerelement dargestellt wird</param> /// <returns>Das Control als HTML</returns> public override IHtmlNode Render(RenderContextFormular context) { var renderContext = new RenderContextFormularGroup(context, this); var html = new HtmlElementTextContentDiv() { ID = ID, Class = Css.Concatenate("form-group-column", GetClasses()), Style = GetStyles(), }; var max = 100; var offset = 0; foreach (var item in Items) { var input = item as ControlFormularItemInput; var div = new HtmlElementTextContentDiv() { Style = "" }; var width = -1; if (Distribution.Count > offset) { width = Distribution.Skip(offset).Take(1).FirstOrDefault(); div.Style = $"width: { width }%"; max = max - width; offset++; } else if (Items.Count > offset) { width = max / (Items.Count - offset); div.Style = $"width: { width }%"; } if (input != null) { var icon = new ControlIcon() { Icon = input?.Icon }; var label = new ControlFormularItemLabel(!string.IsNullOrEmpty(item.ID) ? item.ID + "_label" : string.Empty); var help = new ControlFormularItemHelpText(!string.IsNullOrEmpty(item.ID) ? item.ID + "_help" : string.Empty); var fieldset = new HtmlElementFormFieldset() { Class = "form-group" }; label.Initialize(renderContext); help.Initialize(renderContext); label.Text = context.I18N(input?.Label); label.FormularItem = item; help.Text = context.I18N(input?.Help); if (icon.Icon != null) { icon.Classes.Add("mr-2 pt-1"); fieldset.Elements.Add(new HtmlElementTextSemanticsSpan(icon.Render(renderContext), label.Render(renderContext)) { Style = "display: flex;" }); } else { fieldset.Elements.Add(label.Render(renderContext)); } fieldset.Elements.Add(item.Render(renderContext)); if (!string.IsNullOrWhiteSpace(input?.Help)) { fieldset.Elements.Add(help.Render(renderContext)); } div.Elements.Add(fieldset); } else { div.Elements.Add(item.Render(context)); } html.Elements.Add(div); } return(html); }
/// <summary> /// In HTML konvertieren /// </summary> /// <param name="context">Der Kontext, indem das Steuerelement dargestellt wird</param> /// <returns>Das Control als HTML</returns> public override IHtmlNode Render(RenderContext context) { var renderContext = new RenderContextFormular(context, this); var formName = $"form_{ Name }"; Initialize(context); (Items as List <ControlFormularItem>).ForEach(x => x.Initialize(renderContext)); OnInitialize(); SubmitButton.Initialize(renderContext); // Prüfe ob Formular abgeschickt wurde -> Fomular mit Daten füllen if (!context.Page.HasParam(formName)) { OnFill(); } PreProcess(renderContext); var button = SubmitButton.Render(renderContext); var html = new HtmlElementFormForm() { ID = ID, Class = Css.Concatenate("form-inline", GetClasses()), Style = GetStyles(), Role = Role, Name = Name.ToLower() != "form" ? "form_" + Name.ToLower() : Name.ToLower(), Action = Uri?.ToString(), Method = "post", Enctype = TypeEnctype.None }; html.Elements.Add(new ControlFormularItemInputHidden(formName) { Value = Name }.Render(renderContext)); foreach (var item in Items) { if (item is ControlFormularItemInput input) { var icon = new ControlIcon() { Icon = input?.Icon }; var label = new ControlFormularItemLabel(!string.IsNullOrEmpty(item.ID) ? item.ID + "_label" : string.Empty); var help = new ControlFormularItemHelpText(!string.IsNullOrEmpty(item.ID) ? item.ID + "_help" : string.Empty); var fieldset = new HtmlElementFormFieldset() { Class = "form-group" }; label.Initialize(renderContext); help.Initialize(renderContext); label.Text = context.I18N(input?.Label); label.FormularItem = item; label.Classes.Add("mr-2"); help.Text = context.I18N(input?.Help); help.Classes.Add("ml-2"); if (icon.Icon != null) { icon.Classes.Add("mr-2 pt-1"); fieldset.Elements.Add(new HtmlElementTextSemanticsSpan(icon.Render(renderContext), label.Render(renderContext)) { Style = "display: flex;" }); } else { fieldset.Elements.Add(label.Render(renderContext)); } fieldset.Elements.Add(item.Render(renderContext)); if (input != null) { fieldset.Elements.Add(help.Render(renderContext)); } html.Elements.Add(fieldset); } else { html.Elements.Add(item.Render(context)); } } html.Elements.Add(button); return(html); }
/// <summary> /// In HTML konvertieren /// </summary> /// <param name="context">Der Kontext, indem das Steuerelement dargestellt wird</param> /// <returns>Das Control als HTML</returns> public override IHtmlNode Render(RenderContextFormular context) { var renderContext = new RenderContextFormularGroup(context, this); var html = new HtmlElementTextContentDiv() { ID = ID, Class = Css.Concatenate("form-group-mix", GetClasses()), Style = GetStyles(), }; var body = new HtmlElementTextContentDiv() { }; foreach (var item in Items) { var input = item as ControlFormularItemInput; var row = new HtmlElementTextContentDiv() { }; if (input != null) { var icon = new ControlIcon() { Icon = input?.Icon }; var label = new ControlFormularItemLabel(!string.IsNullOrEmpty(item.ID) ? item.ID + "_label" : string.Empty); var help = new ControlFormularItemHelpText(!string.IsNullOrEmpty(item.ID) ? item.ID + "_help" : string.Empty); label.Initialize(renderContext); help.Initialize(renderContext); label.Text = context.I18N(input?.Label); label.FormularItem = item; label.Classes.Add("mr-2"); help.Text = context.I18N(input?.Help); if (icon.Icon != null) { icon.Classes.Add("mr-2 pt-1"); row.Elements.Add(new HtmlElementTextContentDiv(icon.Render(renderContext), label.Render(renderContext))); } else { row.Elements.Add(new HtmlElementTextContentDiv(label.Render(renderContext))); } if (!string.IsNullOrWhiteSpace(input?.Help)) { row.Elements.Add(new HtmlElementTextContentDiv(item.Render(renderContext), help.Render(renderContext))); } else { row.Elements.Add(new HtmlElementTextContentDiv(item.Render(renderContext))); } } else { row.Elements.Add(new HtmlElementTextContentDiv()); row.Elements.Add(item.Render(context)); row.Elements.Add(new HtmlElementTextContentDiv()); } body.Elements.Add(row); } html.Elements.Add(body); return(html); }