public TextboxControl(ControlModel <TProperty> model, string type = "text", bool disableAutocomplete = false, bool hideStatusMessage = false, string helpText = "") { if ("password".Equals(type, StringComparison.OrdinalIgnoreCase)) { // SECURITY: never render the password model.Value = default(TProperty); } var inner = new ControlHolder() .Append(new Label <TProperty>(model)); var tb = new TextBox <TProperty>(model, type, disableAutocomplete); if (!string.IsNullOrEmpty(helpText)) { tb.AppendHtml(new HelpText(helpText).ToString()); } if (!hideStatusMessage) { tb.After(new StatusMessage()); } inner.Append(tb.WrapWith(new ControlWrapper())); Inner = inner; }
private static void BuildCheckbox(HtmlTag currentParent, IEnumerable <HierarchicalCheckBoxListItem> options, ControlModel <TProperty> model, bool isDisabled, int level) { foreach (var option in options) { var selectListItem = new SelectListItem { Text = option.Text, Value = option.Value, Selected = option.Selected }; var divCtrlHolder = new ControlHolder().Append(new HtmlTag("span").AddClass("label")).Id(selectListItem.Value); var divOption = new HtmlTag("div", tag => tag.AddClass("option")); divOption.Append(new HierarchicalCheckboxItem <TProperty>(model, selectListItem, isDisabled)); divOption.After(new StatusMessage()); divCtrlHolder.Append(divOption.WrapWith(new ControlWrapper())); currentParent.Append(divCtrlHolder); if (!option.Children.Any()) { continue; } level++; var divChildrenHolder = new HtmlTag("div").AddClass($"ctrl-lvl-{level}"); currentParent.Append(divChildrenHolder); BuildCheckbox(divChildrenHolder, option.Children, model, isDisabled, level); } }
public DateControl(ControlModel <DateTime?> model, DateOptions dateOptions = null) { var inner = new ControlHolder() .Append(new Label <DateTime?>(model)); var tb = new TextBox <DateTime?>(model) .After(new StatusMessage()); inner.Append(tb.WrapWith(new ControlWrapper())); tb.AddClass("datepicker js-datepicker vh"); tb.Attr("aria-hidden", "true"); dateOptions = dateOptions ?? new DateOptions(); if (model.Value != null) { tb.Value(model.Value?.ToString(dateOptions.Format)); } tb.Data("format", dateOptions.Format.ToUpperInvariant()); tb.Data("output-format", dateOptions.OutputFormat.ToUpperInvariant()); tb.Data("year-range", dateOptions.YearRange); tb.Data("today", dateOptions.ShowToday); Inner = inner; }
public TextAreaControl(ControlModel <TProperty> model) { var inner = new ControlHolder() .Append(new Label <TProperty>(model)); var tb = new TextArea <TProperty>(model) .After(new StatusMessage()); // always wrap inner.Append(tb.WrapWith(new ControlWrapper())); Inner = inner; }
public CheckBoxControl(ControlModel <bool> model, string tooltip, string helptext) { // div class="ctrl-holder" Inner = new ControlHolder().Append(new Label <bool>(model, true)); // div class="option" var divOption = new HtmlTag("div", tag => tag.AddClass("option")); // refer the native MVC implementation of CheckBoxFor // checkboxes behave weirdly - if they are not checked then they are not posted back // the fallback value of False is supplied by the hidden field divOption.Append(CheckBox(model, tooltip, helptext)); divOption.Append(new HiddenTag().Name(model.Name).Value(bool.FalseString)); // div class="status-msg" divOption.After(new StatusMessage()); Inner.Append(divOption.WrapWith(new ControlWrapper())); }
public RadioCheckBoxListControl(ControlModel <TProperty> model, IEnumerable <SelectListItem> items, string type, bool isHorizontal) { var options = items.ToList(); if (!options.Any()) { return; } Inner = new ControlHolder() .Append(new Label <TProperty>(model, true)); var ul = new HtmlTag("ul"); ul.AddClass("options"); ul.Attr("role", "radiogroup"); ul.Attr("aria-labelledby", model.Name); if (isHorizontal) { ul.AddClass("is-horizontal"); } foreach (var item in options) { var li = new HtmlTag("li", tag => tag.AddClass("option")); li.Append(new RadioCheckboxItem <TProperty>(model, item, type)); ul.Append(li); } ul.After(new StatusMessage()); Inner.Append(ul.WrapWith(new ControlWrapper())); }