public TagBuilder Render(RenderContext context, TagRenderMode mode = TagRenderMode.Normal, Boolean addSpace = false) { switch (mode) { case TagRenderMode.SelfClosing: context.Writer.Write(CreateStartTag(context, true)); break; case TagRenderMode.StartTag: context.Writer.Write(CreateStartTag(context, false)); break; case TagRenderMode.Normal: context.Writer.Write(CreateStartTag(context, false)); context.Writer.Write(context.Localize(InnerText)); context.Writer.Write($"</{TagName}>"); break; case TagRenderMode.EndTag: context.Writer.Write($"</{TagName}>"); break; } if (addSpace) { context.Writer.WriteLine(); } _bRender = true; return(this); }
void RenderHeader(RenderContext context) { if (!HasHeader) { return; } var header = new TagBuilder("div", "panel-header-slot"); header.MergeAttribute("slot", "header"); header.RenderStart(context); RenderIcon(context, Icon); var hBind = GetBinding(nameof(Header)); if (hBind != null) { var span = new TagBuilder("span"); span.MergeAttribute("v-text", hBind.GetPathFormat(context)); span.Render(context); } else if (Header is UIElementBase) { (Header as UIElementBase).RenderElement(context); } else if (Header != null) { context.Writer.Write(context.Localize(Header.ToString())); } header.RenderEnd(context); }
internal override void RenderElement(RenderContext context, Action <TagBuilder> onRender = null) { if (SkipRender(context)) { return; } var option = new TagBuilder("option"); MergeAttributes(option, context, MergeAttrMode.Visibility); if (Value != null) { if (Value is IJavaScriptSource) { var jsValue = (Value as IJavaScriptSource).GetJsValue(context); option.MergeAttribute(":value", jsValue); } else { option.MergeAttribute("value", Value.ToString()); } } else { option.MergeAttribute(":value", "null"); // JS null value } option.RenderStart(context); if (Content != null) { context.Writer.Write(context.Localize(Content)); } option.RenderEnd(context); }
internal override void RenderElement(RenderContext context, Action <TagBuilder> onRender = null) { if (SkipRender(context)) { return; } var span = new TagBuilder("span", null, IsInGrid); onRender?.Invoke(span); MergeAttributes(span, context); var cbind = GetBinding(nameof(Content)); if (cbind != null) { span.MergeAttribute("v-html", $"$sanitize({cbind.GetPathFormat(context)})"); } span.RenderStart(context); if (Content != null && Content is String) { context.Writer.Write(context.Localize(Content.ToString())); } span.RenderEnd(context); }
void RenderHeader(RenderContext context) { var header = new TagBuilder("div", "modal-header"); header.MergeAttribute("v-drag-window", String.Empty); header.RenderStart(context); var hdr = GetBinding(nameof(Title)); if ((hdr != null) || (Title != null)) { var span = new TagBuilder("span"); if (hdr != null) { span.MergeAttribute("v-text", hdr.GetPathFormat(context)); } else if (Title != null) { span.SetInnerText(context.Localize(Title)); } span.Render(context); } var close = new TagBuilder("button", "btnclose"); close.MergeAttribute("@click.prevent", "$modalClose(false)"); close.SetInnerText("✕"); close.Render(context); header.RenderEnd(context); }
protected virtual void RenderHelp(RenderContext context) { if (!HasHelp) { return; } //<a class="btn-help"><i class="ico ico-help"></i>Справка</a> var ha = new TagBuilder("a", "btn-help"); // TODO: Help path var hbind = GetBinding(nameof(HelpUrl)); if (hbind != null) { String hpath = hbind.GetPathFormat(context); ha.MergeAttribute("@click.prevent", $"$showHelp({hpath})"); ha.MergeAttribute(":href", $"$helpHref({hpath})"); } else if (!String.IsNullOrEmpty(HelpUrl)) { ha.MergeAttribute("@click.prevent", $"$showHelp('{HelpUrl}')"); ha.MergeAttribute(":href", $"$helpHref('{HelpUrl}')"); } ha.RenderStart(context); new TagBuilder("i", "ico ico-help") .Render(context); context.Writer.Write(context.Localize("@[Help]")); ha.RenderEnd(context); new TagBuilder("div", "aligner").Render(context); }
internal override void RenderElement(RenderContext context, Action <TagBuilder> onRender = null) { if (SkipRender(context)) { return; } var label = new TagBuilder("div", "a2-label", IsInGrid); onRender?.Invoke(label); var contBind = GetBinding(nameof(Content)); if (contBind != null) { label.MergeAttribute("v-text", contBind.GetPathFormat(context)); } MergeAttributes(label, context); if (Align != TextAlign.Left) { label.AddCssClass("text-" + Align.ToString().ToLowerInvariant()); } label.AddCssClassBool(Required, "required"); label.RenderStart(context); if (Content != null) { context.Writer.Write(context.Localize(Content.ToString())); } label.RenderEnd(context); }
protected virtual void RenderHelp(RenderContext context) { if (!HasHelp) { return; } var ha = new TagBuilder("a", "btn-help"); ha.MergeAttribute("rel", "help"); ha.MergeAttribute("title", context.Localize("@[Help]")); var hbind = GetBinding(nameof(HelpUrl)); if (hbind != null) { String hpath = hbind.GetPathFormat(context); ha.MergeAttribute("@click.stop.prevent", $"$showHelp({hpath})"); ha.MergeAttribute(":href", $"$helpHref({hpath})"); } else if (!String.IsNullOrEmpty(HelpUrl)) { ha.MergeAttribute("@click.stop.prevent", $"$showHelp('{HelpUrl}')"); ha.MergeAttribute(":href", $"$helpHref('{HelpUrl}')"); } ha.RenderStart(context); new TagBuilder("i", "ico ico-help") .Render(context); //context.Writer.Write(context.Localize("@[Help]")); ha.RenderEnd(context); }
internal override void RenderElement(RenderContext context, Action <TagBuilder> onRender = null) { if (SkipRender(context)) { return; } var span = new TagBuilder("span", "a2-badge", IsInGrid); onRender?.Invoke(span); MergeAttributes(span, context); var cbind = GetBinding(nameof(Content)); if (cbind != null) { span.MergeAttribute("v-text", cbind.GetPathFormat(context)); if (cbind.NegativeRed) { span.MergeAttribute(":class", $"$getNegativeRedClass({cbind.GetPath(context)})"); } } span.AddCssClassBool(Small, "small"); span.RenderStart(context); if (Content is String) { context.Writer.Write(context.Localize(Content.ToString())); } span.RenderEnd(context); }
internal override void RenderElement(RenderContext context, Action <TagBuilder> onRender = null) { if (SkipRender(context)) { return; } var po = new TagBuilder("popover", "a2-inline", IsInGrid); MergeAttributes(po, context, MergeAttrMode.All); po.AddCssClass("po-" + Placement.ToString().ToKebabCase()); if (Background != PopoverBackgroundStyle.Default) { po.AddCssClass("po-" + Background.ToString().ToKebabCase()); } if (Icon != Icon.NoIcon) { po.MergeAttribute("icon", Icon.ToString().ToKebabCase()); } MergeBindingAttributeString(po, context, "content", nameof(Text), Text); var urlBind = GetBinding(nameof(Url)); if (urlBind != null) { po.MergeAttribute(":url", urlBind.GetPathFormat(context)); } else if (!String.IsNullOrEmpty(Url)) { po.MergeAttribute("url", Url); } if (Width != null) { po.MergeAttribute("width", Width.Value); } if (Top != null) { po.MergeAttribute("top", Top.Value); } po.RenderStart(context); var cntBind = GetBinding(nameof(Content)); if (cntBind != null) { var cont = new TagBuilder("span"); cont.MergeAttribute("v-text", cntBind.GetPathFormat(context)); cont.Render(context); } else if (Content is UIElementBase) { (Content as UIElementBase).RenderElement(context); } else if (Content != null) { context.Writer.Write(context.Localize(Content.ToString())); } po.RenderEnd(context); }
void RenderFooter(RenderContext context) { if (!HasFooter) { return; } var f = new TagBuilder("div", "card-footer"); f.RenderStart(context); var fb = GetBinding(nameof(Footer)); if (fb != null) { var s = new TagBuilder("span"); s.MergeAttribute(":text", fb.GetPathFormat(context)); s.Render(context); } else if (Footer is UIElement fUiElem) { fUiElem.RenderElement(context); } else if (Footer is String fStr) { context.Writer.Write(context.Localize(fStr)); } f.RenderEnd(context); }
void RenderHeader(RenderContext context) { if (!HasHeader) { return; } var h = new TagBuilder("div", "card-header"); h.RenderStart(context); var hb = GetBinding(nameof(Header)); if (hb != null) { var s = new TagBuilder("span"); s.MergeAttribute(":text", hb.GetPathFormat(context)); s.Render(context); } else if (Header is UIElement hUiElem) { hUiElem.RenderElement(context); } else if (Header is String hStr) { context.Writer.Write(context.Localize(hStr)); } h.RenderEnd(context); }
// for text bindings only public String GetPathFormat(RenderContext context) { if (Path == null) { return(context.GetEmptyPath()); // may be scoped } String realPath = context.GetNormalizedPath(Path, _wrapped); var maskBind = GetBinding(nameof(Mask)); if (String.IsNullOrEmpty(Format) && DataType == DataType.String && String.IsNullOrEmpty(Mask) && maskBind == null && !HideZeros) { return(realPath); } var opts = new StringBuilder("{"); if (DataType != DataType.String) { opts.Append($"dataType: '{DataType.ToString()}',"); } if (!String.IsNullOrEmpty(Format)) { opts.Append($"format: '{context.Localize(Format.Replace("'", "\\'"))}',"); } if (maskBind != null) { opts.Append($"mask: {maskBind.GetPathFormat(context)},"); } else if (!String.IsNullOrEmpty(Mask)) { opts.Append($"mask: '{context.Localize(Mask.Replace("'", "\\'"))}',"); } if (HideZeros) { opts.Append("hideZeros: true,"); } opts.RemoveTailComma(); opts.Append("}"); return($"$format({realPath}, {opts})"); }
internal void MergeBindingAttributeString(TagBuilder tag, RenderContext context, String attrName, String propName, String propValue) { var attrBind = GetBinding(propName); if (attrBind != null) { tag.MergeAttribute($":{attrName}", attrBind.GetPathFormat(context)); } else { tag.MergeAttribute(attrName, context.Localize(propValue)); } }
void MergeBindingAttribute(RenderContext context, TagBuilder tag, String attr, String propName, Object propValue) { var bindProp = GetBinding(propName); if (bindProp != null) { tag.MergeAttribute(":" + attr, bindProp.GetPath(context)); } else if (propValue != null) { tag.MergeAttribute(attr, context.Localize(propValue.ToString())); } }
String CommandFileName(RenderContext context, Boolean decorate = false) { var fnBind = GetBinding(nameof(FileName)); if (fnBind != null) { if (decorate) { return($"'{{{fnBind.Path}}}'"); } return(fnBind.GetPath(context)); } return($"'{context.Localize(FileName)}'"); }
internal String GetBindingString(RenderContext context, String propertyName, String propValue) { String resVal = null; var bindString = GetBinding(propertyName); if (bindString != null) { resVal = bindString.GetPathFormat(context); } else if (propValue != null) { resVal = $"'{context.Localize(propValue)}'"; } return(resVal); }
internal override void RenderElement(RenderContext context, Action <TagBuilder> onRender = null) { if (SkipRender(context)) { return; } var tab = new TagBuilder("a2-tab-item"); onRender?.Invoke(tab); // tab.MergeAttribute("tab-style", "yellow"); tab.AddCssClassBool(FullHeight, "full-height"); MergeAttributes(tab, context, MergeAttrMode.SpecialTab); var headerBind = GetBinding(nameof(Header)); if (headerBind != null) { tab.MergeAttribute(":header", headerBind.GetPathFormat(context)); } else if (Header is String) { tab.MergeAttribute("header", context.Localize(Header?.ToString())); } var badgeBind = GetBinding(nameof(Badge)); if (badgeBind != null) { tab.MergeAttribute(":badge", badgeBind.GetPathFormat(context)); } else if (Badge != null) { tab.MergeAttribute("badge", Badge); } if (Height != null) { tab.MergeStyle("height", Height.Value); } // show/hide support MergeBindingAttributeBool(tab, context, ":show", nameof(Show), Show); // emulate v-hide MergeBindingAttributeBool(tab, context, ":show", nameof(Hide), Hide, bInvert: true); tab.RenderStart(context); RenderChildren(context); tab.RenderEnd(context); }
internal void RenderContent(RenderContext context, Object content) { // if it's a binding, it will be added via MergeAttribute if (content == null) { return; } if (content is UIElementBase) { (content as UIElementBase).RenderElement(context); } else if (content != null) { context.Writer.Write(context.Localize(content.ToString())); } }
internal void RenderBadge(RenderContext context, String badge) { var badgeBind = GetBinding("Badge"); if (badgeBind != null) { new TagBuilder("span", "badge") .MergeAttribute("v-text", badgeBind.GetPathFormat(context)) .Render(context); } else if (!String.IsNullOrEmpty(badge)) { new TagBuilder("span", "badge") .SetInnerText(context.Localize(badge)) .Render(context); } }
internal override void RenderElement(RenderContext context, Action <TagBuilder> onRender = null) { if (SkipRender(context)) { return; } if (Space == SpaceMode.Before) { context.Writer.Write(" "); } var span = new TagBuilder("span", null, IsInGrid); onRender?.Invoke(span); MergeAttributes(span, context); var cbind = GetBinding(nameof(Content)); if (cbind != null) { span.MergeAttribute("v-text", cbind.GetPathFormat(context)); if (cbind.NegativeRed) { if (GetBinding(nameof(Color)) != null) { throw new XamlException("NegativeRed property is not compatible with Color binding"); } span.MergeAttribute(":class", $"$getNegativeRedClass({cbind.GetPath(context)})"); } } span.AddCssClassBool(Small, "small"); span.AddCssClassBool(Big, "text-big"); span.RenderStart(context); if (Content is String) { context.Writer.Write(context.Localize(Content.ToString())); } span.RenderEnd(context); if (Space == SpaceMode.After) { context.Writer.Write(" "); } }
void RenderTitle(RenderContext context) { var titleBind = GetBinding(nameof(Title)); if (titleBind != null || Title != null) { var title = new TagBuilder("legend"); if (titleBind != null) { title.MergeAttribute("v-text", titleBind.GetPathFormat(context)); } title.RenderStart(context); if (Title != null) { context.Writer.Write(context.Localize(Title)); } title.RenderEnd(context); } }
internal void Render(RenderContext context) { foreach (var x in this) { if (x == null) { continue; } if (x is String) { context.Writer.Write(context.Localize(x.ToString())); } else if (x is Inline) { (x as Inline).RenderElement(context); } else { throw new XamlException($"Invalid inline element '{x.GetType().ToString()}'"); } } }
void RenderDesription(RenderContext context) { new Separator().RenderElement(context); var dBind = GetBinding(nameof(Description)); var wrap = new TagBuilder(null, "a2-tab-description"); wrap.RenderStart(context); if (dBind != null) { var span = new TagBuilder("span"); span.MergeAttribute("v-text", dBind.GetPathFormat(context)); span.Render(context); } else if (Description is UIElementBase uiDescr) { uiDescr.RenderElement(context); } else if (Description != null) { context.Writer.Write(context.Localize(Description.ToString())); } wrap.RenderEnd(context); }
void RenderBody(RenderContext context) { if (HasHeader) { var hTag = new TagBuilder("div", "list-item-header"); var bHead = GetBinding(nameof(Header)); if (bHead != null) { hTag.MergeAttribute("v-text", bHead.GetPathFormat(context)); } hTag.RenderStart(context); if (Header != null) { if (Header is UIElementBase) { (Header as UIElementBase).RenderElement(context); } else { context.Writer.Write(context.Localize(Header.ToString())); } } hTag.RenderEnd(context); } if (HasBody) { var hBody = new TagBuilder("div", "list-item-body"); var bBody = GetBinding(nameof(Content)); if (bBody != null) { hBody.MergeAttribute("v-text", bBody.GetPathFormat(context)); } hBody.RenderStart(context); if (Content is UIElementBase) { (Content as UIElementBase).RenderElement(context); } else if (Content != null) { context.Writer.Write(context.Localize(Content.ToString())); } hBody.RenderEnd(context); } if (HasFooter) { var fTag = new TagBuilder("div", "list-item-footer"); var bFoot = GetBinding(nameof(Footer)); if (bFoot != null) { fTag.MergeAttribute("v-text", bFoot.GetPathFormat(context)); } fTag.RenderStart(context); if (Footer != null) { if (Footer is UIElementBase) { (Footer as UIElementBase).RenderElement(context); } else { context.Writer.Write(context.Localize(Footer.ToString())); } } fTag.RenderEnd(context); } if (CommandBar != null) { CommandBar.RenderElement(context, tag => { tag.AddCssClass("list-item-commands"); }); } }
void RenderHyperlink(RenderContext context, Boolean inGrid, Action <TagBuilder> onRender = null, Boolean inside = false) { Boolean bHasDropDown = DropDown != null; var tag = new TagBuilder("a", "a2-hyperlink", inGrid); onRender?.Invoke(tag); var attrMode = MergeAttrMode.All; if (inside) { attrMode &= ~MergeAttrMode.Visibility; } MergeAttributes(tag, context, attrMode); MergeCommandAttribute(tag, context); tag.AddCssClassBool(Block, "block"); if (!Block) { tag.AddCssClass("a2-inline"); } if (Size != ControlSize.Default) { switch (Size) { case ControlSize.Small: tag.AddCssClass("small"); break; default: throw new XamlException("Only ControlSize.Small is supported for the Hyperlink"); } } if (bHasDropDown) { tag.MergeAttribute("toggle", String.Empty); } tag.RenderStart(context); RenderIcon(context, Icon); var cbind = GetBinding(nameof(Content)); if (cbind != null) { new TagBuilder("span") .MergeAttribute("v-text", cbind.GetPathFormat(context)) .Render(context); } else if (Content is UIElementBase) { (Content as UIElementBase).RenderElement(context); } else if (Content != null) { context.Writer.Write(context.Localize(Content.ToString())); } tag.RenderEnd(context); }