public static string Table(this BootstrapRenderer renderer, IEnumerable <string> headerRow, IEnumerable <IEnumerable <string> > dataRows, object htmlAttributes = null) { var defaultAttributes = new HtmlAttributes(new { @class = "table" }); var headerContent = headerRow == null ? string.Empty : TableRow(renderer, headerRow, renderer.Templates.TableHeaderCell); var bodyContent = new StringBuilder(); if (dataRows != null) { foreach (var dataRow in dataRows) { bodyContent.Append(TableRow(renderer, dataRow, renderer.Templates.TableCell)); } } var header = headerRow == null ? string.Empty : renderer.Templates.TableHeader.FormatFromDictionary(new Dictionary <string, string> { { "content", headerContent } }); var body = dataRows == null ? string.Empty : renderer.Templates.TableBody.FormatFromDictionary(new Dictionary <string, string> { { "content", bodyContent.ToString() } }); return(renderer.Templates.Table.FormatFromDictionary(new Dictionary <string, string> { { "attributes", defaultAttributes.Merge(new HtmlAttributes(htmlAttributes)).ToString() }, { "content", header + body } })); }
public static string SelectList <TValue>(this BootstrapRenderer renderer, string name, IEnumerable <ListOption <TValue> > options, Func <ListOption <TValue>, bool> selectedOptions, bool allowMultiple = false, object htmlAttributes = null) { var optionsBuilder = new StringBuilder(); var defaultAttributes = new HtmlAttributes(new { @class = "form-control" }); if (allowMultiple) { defaultAttributes["multiple"] = "true"; } foreach (var option in options) { optionsBuilder.Append(renderer.Templates.SelectListOption.FormatFromDictionary(new Dictionary <string, string> { { "value", option.Value.ToString() }, { "label", option.Label }, { "selected", selectedOptions(option) ? " selected" : string.Empty } })); } return(renderer.Templates.SelectList.FormatFromDictionary(new Dictionary <string, string> { { "name", name }, { "attributes", defaultAttributes.Merge(new HtmlAttributes(htmlAttributes)).ToString() }, { "options", optionsBuilder.ToString() } })); }
public FormGroup(NancyRazorViewBase <TModel> view, BootstrapRenderer renderer, object htmlAttributes = null) { _view = view; _renderer = renderer; _view.WriteLiteral(_renderer.BeginFormGroup(htmlAttributes)); }
// TODO: allow passing html attributes public static string RadioButtonGroup <TValue>(this BootstrapRenderer renderer, string name, IEnumerable <ListOption <TValue> > options, Func <ListOption <TValue>, bool> selectedOption) { var optionsBuilder = new StringBuilder(); foreach (var radioGroupOption in options) { optionsBuilder.Append(RadioButton(renderer, name, radioGroupOption.Value, radioGroupOption.Label, selectedOption(radioGroupOption))); } return(optionsBuilder.ToString()); }
public static string BeginFormGroup(this BootstrapRenderer renderer, HtmlAttributes attributes) { var defaultAttributes = new HtmlAttributes(new { @class = "form-group" }); return(renderer.Templates.BeginFormGroup.FormatFromDictionary(new Dictionary <string, string> { { "attributes", defaultAttributes.Merge(attributes).ToString() } })); }
public static string ValidationMessage(this BootstrapRenderer renderer, string message, object htmlAttributes = null) { var defaultAttributes = new HtmlAttributes(new { @class = "help-block" }); return(renderer.Templates.ValidationMessage.FormatFromDictionary(new Dictionary <string, string> { { "message", message }, { "attributes", defaultAttributes.Merge(new HtmlAttributes(htmlAttributes)).ToString() } })); }
public static string CheckboxList <TValue>(this BootstrapRenderer renderer, string name, IEnumerable <ListOption <TValue> > options, Func <ListOption <TValue>, bool> selectedOptions) { var optionsBuilder = new StringBuilder(); foreach (var checkboxListOption in options) { optionsBuilder.Append(Checkbox(renderer, name, checkboxListOption.Value, checkboxListOption.Label, selectedOptions(checkboxListOption))); } return(optionsBuilder.ToString()); }
public static string TableRow(this BootstrapRenderer renderer, IEnumerable <string> row, string template) { var rowContent = new StringBuilder(); foreach (var cell in row) { rowContent.Append(template.FormatFromDictionary(new Dictionary <string, string> { { "content", cell } })); } return(renderer.Templates.TableRow.FormatFromDictionary(new Dictionary <string, string> { { "content", rowContent.ToString() } })); }
public static string Input(this BootstrapRenderer renderer, string name, object value, string type, object htmlAttributes = null) { var attributes = new HtmlAttributes(htmlAttributes); attributes.Merge(new HtmlAttributes(new { @class = "form-control" })); return(renderer.Templates.Input.FormatFromDictionary(new Dictionary <string, string> { { "name", name }, { "attributes", attributes.ToString() }, { "type", type }, { "value", value == null ? String.Empty : value.ToString() } })); }
public static string RadioButton(this BootstrapRenderer renderer, string name, object value, string label, bool selected = false, object htmlAttributes = null) { var defaultAttributes = new HtmlAttributes(new { @class = "radio" }); var ctx = new Dictionary <string, string> { { "attributes", new HtmlAttributes(htmlAttributes).Merge(defaultAttributes).ToString() }, { "name", name }, { "value", value == null ? string.Empty : value.ToString() }, { "selected", selected ? " checked" : "" }, { "label", label } }; return(renderer.Templates.RadioButton.FormatFromDictionary(ctx)); }
public static string Label(this BootstrapRenderer renderer, string label, string @for, object htmlAttributes = null) { var attributes = new HtmlAttributes(htmlAttributes); attributes.Merge(new HtmlAttributes(new { @class = "control-label" })); if (!string.IsNullOrEmpty(@for)) { attributes["for"] = @for; } return(renderer.Templates.Label.FormatFromDictionary(new Dictionary <string, string> { { "attributes", attributes.ToString() }, { "label", label } })); }
public static string Search(this BootstrapRenderer renderer, string name, object value, object htmlAttributes = null) { return(Input(renderer, name, value, "search", htmlAttributes)); }
public static string TelephoneNumber(this BootstrapRenderer renderer, string name, object value, object htmlAttributes = null) { return(Input(renderer, name, value, "tel", htmlAttributes)); }
public static string Date(this BootstrapRenderer renderer, string name, DateTime value, object htmlAttributes = null) { return(Input(renderer, name, value.ToString("yyyy-MM-dd"), "date", htmlAttributes)); }
public static string DateTimeLocal(this BootstrapRenderer renderer, string name, DateTime value, object htmlAttributes = null) { return(Input(renderer, name, string.Format("{0:s}", value), "datetime-local", htmlAttributes)); }
public BootstrapHelpers(BootstrapRenderer renderer, RazorViewEngine engine, IRenderContext renderContext, TModel model, NancyRazorViewBase <TModel> view) { _view = view; _renderer = renderer; _renderContext = renderContext; }
public static string MultipleSelectList <TValue>(this BootstrapRenderer renderer, string name, IEnumerable <ListOption <TValue> > options, IEnumerable <TValue> selectedValues, object htmlAttributes = null) { return(SelectList(renderer, name, options, o => selectedValues.Any(sv => sv.Equals(o.Value)), true, htmlAttributes)); }
public static string EndFormGroup(this BootstrapRenderer renderer) { return(renderer.Templates.EndFormGroup); }
// TODO: allow passing html attributes public static string RadioButtonGroup <TValue>(this BootstrapRenderer renderer, string name, IEnumerable <ListOption <TValue> > options) { return(RadioButtonGroup(renderer, name, options, o => false)); }
public static string BeginFormGroup(this BootstrapRenderer renderer, object attributes) { return(BeginFormGroup(renderer, new HtmlAttributes(attributes))); }
public static string MultipleSelectList <TValue>(this BootstrapRenderer renderer, string name, IEnumerable <ListOption <TValue> > options, Func <ListOption <TValue>, bool> selectedOptions, object htmlAttributes = null) { return(SelectList(renderer, name, options, selectedOptions, true, htmlAttributes)); }
// TODO: allow passing html attributes public static string CheckboxList <TValue>(this BootstrapRenderer renderer, string name, IEnumerable <ListOption <TValue> > options, IEnumerable <TValue> selectedOptions) { return(CheckboxList(renderer, name, options, o => selectedOptions.Any(so => o.Value.Equals(so)))); }
public static string Url(this BootstrapRenderer renderer, string name, string value, object htmlAttributes = null) { return(Input(renderer, name, value, "url", htmlAttributes)); }
public BootstrapRendererFixture() { _renderer = new BootstrapRenderer(new BootstrapTemplates()); }
public static string SelectList <TValue>(this BootstrapRenderer renderer, string name, IEnumerable <ListOption <TValue> > options, TValue selectedValue, object htmlAttributes = null) { return(SelectList(renderer, name, options, o => o.Value.Equals(selectedValue), false, htmlAttributes)); }
public static string BeginFormGroup(this BootstrapRenderer renderer) { return(BeginFormGroup(renderer, null)); }
public static string TextBox(this BootstrapRenderer renderer, string name, object value, object htmlAttributes = null) { return(Input(renderer, name, value, "text", htmlAttributes)); }
public static string RadioButtonGroup <TValue>(this BootstrapRenderer renderer, string name, IEnumerable <ListOption <TValue> > options, TValue selectedOption) { return(RadioButtonGroup(renderer, name, options, o => o.Value.Equals(selectedOption))); }
public static string Label(this BootstrapRenderer renderer, string label, object htmlAttributes = null) { return(Label(renderer, label, "", htmlAttributes)); }
// TODO: allow passing html attributes public static string CheckboxList <TValue>(this BootstrapRenderer renderer, string name, IEnumerable <ListOption <TValue> > options) { return(CheckboxList(renderer, name, options, o => false)); }