public override RenderFragment GetInternalComponents(SampleComponent selectedSampleComponent) { return(new RenderFragment(builder => { builder.AddContent(0, HtmlContent); })); }
public override RenderFragment GetRenderFragment(SampleComponent selectedSampleComponent) { return(new RenderFragment(builder => { int x = 0; builder.OpenElement(++x, "div"); builder.AddAttribute(++x, "class", "ui row padding buttons"); foreach (var item in Actions) { builder.OpenElement(++x, "button"); builder.AddAttribute(++x, "class", "ui small button"); builder.AddAttribute <MouseEventArgs>(++x, "onclick", EventCallback.Factory.Create <MouseEventArgs>(this, d => item.OnExecute(this.Component)) ); builder.AddContent(++x, item.Name); builder.CloseElement(); } builder.CloseElement(); builder.OpenComponent <T>(++x); builder.AddAttribute(++x, "class", selectedSampleComponent == this ? "editable selected" : ""); if (GetInternalComponents(selectedSampleComponent) != null) { builder.AddAttribute(++x, "ChildContent", GetInternalComponents(selectedSampleComponent)); } builder.AddComponentReferenceCapture(++x, d => Component = (T)d); builder.CloseComponent(); })); }
public override RenderFragment GetInternalComponents(SampleComponent selectedSampleComponent) { return(new RenderFragment(builder => { int i = 0; foreach (var item in InternalComponents) { builder.AddContent(i++, item.GetRenderFragment(selectedSampleComponent)); } })); }
public async void Select(SampleComponent x) { currentComponent = x; if (currentComponent != null) { var t = currentComponent.ThisComponent.GetType(); var NestedClasses = t.GetProperties().Where( prop => Attribute.IsDefined(prop, typeof(NestedParamterAttribute))).ToList(); Prop = t.GetProperties().Where( prop => Attribute.IsDefined(prop, typeof(ParameterAttribute))) .Select(d => new Tuple <string, object, PropertyInfo>("", this.currentComponent.ThisComponent, d)).ToList(); Methods = t.GetMethods().Where( prop => Attribute.IsDefined(prop, typeof(ComponentActionAttribute))) .Select(d => new Tuple <string, object, MethodInfo>("", this.currentComponent.ThisComponent, d)).ToList(); foreach (var item in NestedClasses) { var nt = item.PropertyType; Prop.AddRange(nt.GetProperties().Where( prop => Attribute.IsDefined(prop, typeof(ParameterAttribute))) .Select(d => new Tuple <string, object, PropertyInfo>(item.Name, item.GetValue(this.currentComponent.ThisComponent), d)).ToList()); var nestedMethods = nt.GetMethods() .Where(prop => Attribute.IsDefined(prop, typeof(ComponentActionAttribute))) .Select(d => new Tuple <string, object, MethodInfo>(item.Name, item.GetValue(this.currentComponent.ThisComponent), d)).ToList(); Console.WriteLine($"adding {item.Name}({nt.Name}) nested param with Nested {nestedMethods.Count} methods"); Methods.AddRange(nestedMethods); } this.StateHasChanged(); await JsRuntime.InvokeVoidAsync("window.demo.initPropSheetElements"); } }
public async void Open() { currentComponent = null; await JsRuntime.InvokeVoidAsync("window.demo.togglePropSheet", sideMenu1, sideMenu2, DotNetObjectReference.Create(this)); }
public void Close() { currentComponent = null; isEditing = false; this.StateHasChanged(); }
public SampleComponentActionWithChildren(string variableName, SampleComponent parentComponent, Action <T> onComponentCreate = null) : base(parentComponent, onComponentCreate) { VariableName = variableName; }
public abstract RenderFragment GetRenderFragment(SampleComponent selectedSampleComponent);
public SampleComponentWithChildren(SampleComponent parentComponent, Action <T> onComponentCreate = null) : base(parentComponent, onComponentCreate) { }
public SampleComponentWithHtmlContent(SampleComponent parentComponent, Action <T> onComponentCreate = null) : base(parentComponent, onComponentCreate) { }
public SampleComponent(SampleComponent parent) { ParentComponent = parent; }