public IViewComponentResult Invoke( string label, IEnumerable <CheckboxListItemViewModel> checkboxes, bool populateWithCurrentValues, string?hintText ) { var checkboxList = checkboxes.Select( c => new CheckboxItemViewModel( c.AspFor, c.AspFor, c.Label, GetValueFromModel(c.AspFor, populateWithCurrentValues), c.HintText, null ) ); var viewModel = new CheckboxesViewModel( label, string.IsNullOrEmpty(hintText) ? null : hintText, checkboxList ); return(View(viewModel)); }
public static IHtmlContent GovUkCheckboxes( this IHtmlHelper htmlHelper, CheckboxesViewModel checkboxesViewModel) { return(htmlHelper.Partial("/GovUkDesignSystemComponents/Checkboxes.cshtml", checkboxesViewModel)); }
public CheckboxesView() { InitializeComponent(); BindingContext = new CheckboxesViewModel(); }
public static IHtmlContent GenerateHtml <TModel, TPropertyListItem>( IHtmlHelper <TModel> htmlHelper, Expression <Func <TModel, List <TPropertyListItem> > > propertyLambdaExpression, FieldsetViewModel fieldsetOptions = null, HintViewModel hintOptions = null, Dictionary <TPropertyListItem, Func <object, object> > conditionalOptions = null) where TModel : GovUkViewModel where TPropertyListItem : struct, IConvertible { PropertyInfo property = ExpressionHelpers.GetPropertyFromExpression(propertyLambdaExpression); ThrowIfPropertyTypeIsNotListOfEnums <TPropertyListItem>(property); string propertyName = property.Name; TModel model = htmlHelper.ViewData.Model; List <TPropertyListItem> currentlySelectedValues = ExpressionHelpers.GetPropertyValueFromModelAndExpression(model, propertyLambdaExpression); List <TPropertyListItem> allEnumValues = Enum.GetValues(typeof(TPropertyListItem)) .Cast <TPropertyListItem>() .ToList(); List <ItemViewModel> checkboxes = allEnumValues .Select(enumValue => { var isEnumValueInListOfCurrentlySelectedValues = currentlySelectedValues != null && currentlySelectedValues.Contains(enumValue); string checkboxLabelText = GetCheckboxLabelText(enumValue); var checkboxItemViewModel = new CheckboxItemViewModel { Value = enumValue.ToString(), Id = $"GovUk_Checkbox_{propertyName}_{enumValue}", Checked = isEnumValueInListOfCurrentlySelectedValues, Label = new LabelViewModel { Text = checkboxLabelText } }; if (conditionalOptions != null && conditionalOptions.TryGetValue(enumValue, out Func <object, object> conditionalHtml)) { checkboxItemViewModel.Conditional = new Conditional { Html = conditionalHtml }; } return(checkboxItemViewModel); }) .Cast <ItemViewModel>() .ToList(); var checkboxesViewModel = new CheckboxesViewModel { Name = $"GovUk_Checkbox_{propertyName}", IdPrefix = $"GovUk_{propertyName}", Items = checkboxes, Fieldset = fieldsetOptions, Hint = hintOptions }; if (model.HasErrorFor(property)) { checkboxesViewModel.ErrorMessage = new ErrorMessageViewModel { Text = model.GetErrorFor(property) }; } return(htmlHelper.Partial("/GovUkDesignSystemComponents/Checkboxes.cshtml", checkboxesViewModel)); }
public static IHtmlContent GovUkCheckboxes( this IHtmlHelper htmlHelper, CheckboxesViewModel checkboxesViewModel) { return(htmlHelper.Partial("~/Partials/Checkboxes.cshtml", checkboxesViewModel)); }