Files
mixtape/zero.TestData/Lists/TeamMemberRenderer.cs
T

56 lines
1.6 KiB
C#
Raw Normal View History

2020-04-29 15:03:45 +02:00
using FluentValidation;
using zero.Core.Renderer;
namespace zero.TestData.Lists
{
public class TeamMemberRenderer : AbstractRenderer<TeamMember>
{
public TeamMemberRenderer()
{
2020-05-01 14:34:44 +02:00
LabelTemplate = "@_test.fields.{0}";
DescriptionTemplate = "@_test.fields.{0}_text";
2020-04-29 15:03:45 +02:00
Validator = new TeamMemberValidator();
2020-04-29 16:02:01 +02:00
Field(x => x.Name, required: true).Text(opts => opts.Placeholder = "Enter your name");
Field(x => x.Position, required: true).Text();
Field(x => x.Image).Media(opts => opts.Type = MediaOptionsType.Image);
Field(x => x.Email, required: true).Text(opts => opts.Classes.Add("email-field"));
Field(x => x.VideoUri).Text();
2020-05-03 15:43:26 +02:00
//Field(x => x.Addresses, required: true).Nested(new AddressRenderer(), opts =>
//{
// opts.Limit = 5;
// opts.AddLabel = "Add address";
//});
2020-04-29 16:02:01 +02:00
}
}
2020-04-29 15:03:45 +02:00
2020-04-29 16:02:01 +02:00
public class AddressRenderer : AbstractRenderer<TeamMemberAddress>
{
public AddressRenderer()
{
2020-05-01 14:34:44 +02:00
LabelTemplate = "@_test.fields.address.{0}";
DescriptionTemplate = "@{0}";
2020-04-29 16:02:01 +02:00
Field(x => x.City, required: true).Text();
Field(x => x.Street).Text();
Field(x => x.No).Text(opts => opts.Classes.Add("is-short"));
2020-05-01 14:34:44 +02:00
//Field(x => x.CountryId).Custom("plugins/countryPicker/countrypicker", () => new
//{
// startId = 107
//});
2020-04-29 15:03:45 +02:00
}
}
public class TeamMemberValidator : AbstractValidator<TeamMember>
{
public TeamMemberValidator()
{
2020-04-29 16:02:01 +02:00
RuleFor(x => x.Name).NotEmpty().MaximumLength(120);
2020-05-03 17:09:45 +02:00
RuleFor(x => x.Position).NotEmpty().Length(3, 60);
RuleFor(x => x.Email).NotEmpty().EmailAddress();
2020-04-29 15:03:45 +02:00
}
}
2020-04-29 16:02:01 +02:00
}