update api

This commit is contained in:
2020-04-29 16:02:01 +02:00
parent 8a9cea3104
commit 1fdb9535d2
10 changed files with 80 additions and 36 deletions
-5
View File
@@ -12,11 +12,6 @@ namespace zero.Core.Renderer
protected IValidator<T> Validator = null;
protected virtual IRendererFieldBuilder Field(ConstructorField field)
{
return null;
}
protected virtual IRendererFieldBuilder Field(Expression<Func<T, object>> mapExpression, string label = null, string description = null, bool required = false)
{
return null;
+7 -2
View File
@@ -6,9 +6,9 @@ namespace zero.Core.Renderer
{
IRendererFieldBuilder Required();
IRendererFieldBuilder Text();
IRendererFieldBuilder Text(Action<TextOptions> optionsBuilder = null);
IRendererFieldBuilder Textarea();
IRendererFieldBuilder Textarea(Action<TextOptions> optionsBuilder = null);
IRendererFieldBuilder Rte();
@@ -20,6 +20,11 @@ namespace zero.Core.Renderer
IRendererFieldBuilder Media(Action<MediaOptions> optionsBuilder = null);
IRendererFieldBuilder Output();
IRendererFieldBuilder Nested<T>(IRenderer<T> renderer, Action<NestedOptions> optionsBuilder = null);
IRendererFieldBuilder Custom(string path, Func<object> optionsBuilder = null);
}
}
-2
View File
@@ -5,7 +5,5 @@ namespace zero.Core.Renderer
public interface IRendererOptions
{
string ComponentPath { get; set; }
IList<ConstructorTab> Tabs { get; set; }
}
}
@@ -0,0 +1,9 @@
using System.Collections.Generic;
namespace zero.Core.Renderer
{
public abstract class AbstractFieldOptions
{
public List<string> Classes { get; set; } = new List<string>();
}
}
+1 -1
View File
@@ -4,7 +4,7 @@ using System.Text;
namespace zero.Core.Renderer
{
public class MediaOptions
public class MediaOptions : AbstractFieldOptions
{
public MediaOptionsType Type { get; set; }
}
@@ -0,0 +1,13 @@
using System;
using System.Collections.Generic;
using System.Text;
namespace zero.Core.Renderer
{
public class NestedOptions : AbstractFieldOptions
{
public int Max { get; set; }
public string AddLabel { get; set; }
}
}
+1 -1
View File
@@ -4,7 +4,7 @@ using System.Text;
namespace zero.Core.Renderer
{
public class StateOptions
public class StateOptions : AbstractFieldOptions
{
public void Add(string label, object value) { }
}
@@ -0,0 +1,9 @@
namespace zero.Core.Renderer
{
public class TextOptions : AbstractFieldOptions
{
public int MaxLength { get; set; }
public string Placeholder { get; set; }
}
}
+16 -1
View File
@@ -1,4 +1,5 @@
using zero.Core.Entities;
using System.Collections.Generic;
using zero.Core.Entities;
namespace zero.TestData
{
@@ -11,5 +12,19 @@ namespace zero.TestData
public string Email { get; set; }
public string VideoUri { get; set; }
public List<TeamMemberAddress> Addresses { get; set; } = new List<TeamMemberAddress>();
}
public class TeamMemberAddress
{
public string City { get; set; }
public string Street { get; set; }
public string No { get; set; }
public string CountryId { get; set; }
}
}
+24 -24
View File
@@ -12,32 +12,32 @@ namespace zero.TestData.Lists
Validator = new TeamMemberValidator();
Field(x => x.Name, required: true).Text();
Tab("@team.tab.extras", () =>
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();
Field(x => x.Addresses, required: true).Nested(new AddressRenderer(), opts =>
{
Field(x => x.Position, required: true).Text();
Field(x => x.Image).Media(opts =>
{
opts.Type = MediaOptionsType.Image;
});
Field(x => x.Email, required: true).Text();
Field(x => x.VideoUri).Text();
opts.Max = 5;
opts.AddLabel = "Add address";
});
}
}
Tab("@team.tab.permissions", () =>
public class AddressRenderer : AbstractRenderer<TeamMemberAddress>
{
public AddressRenderer()
{
LabelTemplate = "@team.fields.address.{0}";
Field(x => x.City, required: true).Text();
Field(x => x.Street).Text();
Field(x => x.No).Text(opts => opts.Classes.Add("is-short"));
Field(x => x.CountryId).Custom("plugins/countryPicker/countrypicker", () => new
{
Box("Acess to sections", null, () =>
{
Field(x => x.Alias).Toggle();
Field(x => x.AppId).Toggle();
Field(x => x.CreatedDate).State(opts =>
{
opts.Add("None", "none");
opts.Add("View", "view");
opts.Add("Edit", "edit");
});
});
startId = 107
});
}
}
@@ -47,7 +47,7 @@ namespace zero.TestData.Lists
{
public TeamMemberValidator()
{
RuleFor(x => x.Name).NotEmpty().MaximumLength(120);
}
}
}
}