private void OnModelChanged(object sender, ElementConstructModel model) { if (Model != model) { return; } _modelPreviewFragment = new RenderFragment(builder => { builder.AddContent(0, model.ToMarkup()); }); StateHasChanged(); }
private RenderFragment BuildLink(ElementConstructModel model) { if (!(model is LinkConstructModel)) { throw new ArgumentException(model.GetType().FullName); } RenderFragment RenderFragment(LinkConstructModel internalModel) { return(builder => { var index = 0; builder.OpenElement(index++, "div"); builder.AddAttribute(index++, "class", "mat-elevation-z24"); builder.AddContent(index++, BuildFallback(internalModel, "Link")); builder.OpenElement(index, "p"); builder.AddAttribute(index++, "class", "mat-subtitle2"); builder.AddContent(index++, "Link Content"); builder.CloseElement(); builder.OpenElement(index++, "input"); builder.AddAttribute(index++, "type", "input"); builder.AddAttribute(index++, "value", internalModel.Content); builder.AddAttribute(index++, "onchange", EventCallback.Factory.CreateBinder(internalModel, value => { internalModel.Content = value; ModelChanged?.Invoke(this, internalModel); }, internalModel.Content)); builder.SetUpdatesAttributeName("value"); builder.AddAttribute(index++, "oninput", EventCallback.Factory.CreateBinder(internalModel, value => { internalModel.Content = value; ModelChanged?.Invoke(this, internalModel); }, internalModel.Content)); builder.SetUpdatesAttributeName("value"); builder.CloseElement(); builder.CloseElement(); builder.AddMarkupContent(index, "<hr />"); }); } return(RenderFragment((LinkConstructModel)model)); }
private RenderFragment BuildFallback(ElementConstructModel model, string modelName) { RenderFragment RenderFragment(ElementConstructModel internalModel) { return(builder => { var index = 0; builder.OpenElement(index++, "div"); builder.AddAttribute(index++, "class", "mat-elevation-z7"); builder.OpenElement(index++, "p"); builder.AddAttribute(index++, "class", "mat-subtitle2"); builder.AddContent(index++, $"{modelName}:"); builder.CloseElement(); builder.OpenElement(index++, "input"); builder.AddAttribute(index++, "type", "input"); builder.AddAttribute(index++, "value", internalModel.Value); builder.AddAttribute(index++, "onchange", EventCallback.Factory.CreateBinder(internalModel, value => { internalModel.Value = value; ModelChanged?.Invoke(this, internalModel); }, internalModel.Value)); builder.SetUpdatesAttributeName("value"); builder.AddAttribute(index++, "oninput", EventCallback.Factory.CreateBinder(internalModel, value => { internalModel.Value = value; ModelChanged?.Invoke(this, internalModel); }, internalModel.Value)); builder.SetUpdatesAttributeName("value"); builder.CloseElement(); builder.CloseElement(); builder.AddMarkupContent(index, "<hr />"); }); } return(RenderFragment(model)); }