예제 #1
0
파일: UIElement.cs 프로젝트: dmitrkov/A2v10
        public override void MergeAttributes(TagBuilder tag, RenderContext context, MergeAttrMode mode = MergeAttrMode.All)
        {
            base.MergeAttributes(tag, context, mode);

            var boldBind   = GetBinding(nameof(Bold));
            var italicBind = GetBinding(nameof(Italic));

            if (boldBind != null || italicBind != null)
            {
                var sb = new StringBuilder("{");
                if (boldBind != null)
                {
                    sb.Append($"bold: {boldBind.GetPath(context)}, ");
                }
                if (italicBind != null)
                {
                    sb.Append($"italic: {italicBind.GetPath(context)}, ");
                }
                sb.RemoveTailComma();
                sb.Append("}");
                tag.MergeAttribute(":class", sb.ToString());
            }
            tag.AddCssClassBoolNo(Bold, "bold");
            tag.AddCssClassBoolNo(Italic, "italic");
            tag.AddCssClassBoolNo(UserSelect, "user-select");
            tag.AddCssClass(CssClass);
        }
예제 #2
0
 public override void MergeAttributes(TagBuilder tag, RenderContext context, MergeAttrMode mode = MergeAttrMode.All)
 {
     base.MergeAttributes(tag, context, mode);
     if (mode.HasFlag(MergeAttrMode.Content))
     {
         var contBind = GetBinding(nameof(Content));
         if (contBind != null)
         {
             tag.MergeAttribute("v-text", contBind.GetPathFormat(context));
         }
     }
 }
예제 #3
0
파일: Inline.cs 프로젝트: dmitrkov/A2v10
        public override void MergeAttributes(TagBuilder tag, RenderContext context, MergeAttrMode mode = MergeAttrMode.All)
        {
            base.MergeAttributes(tag, context, mode);
            tag.AddCssClassBool(Block, "block");
            var bindColor = GetBinding(nameof(Color));

            if (bindColor != null)
            {
                tag.MergeAttribute(":class", $"'text-color-'+{bindColor.GetPath(context)}");
            }
            else if (Color != TextColor.Default)
            {
                tag.AddCssClass("text-color-" + Color.ToString().ToKebabCase());
            }
            if (Float != FloatMode.None)
            {
                tag.AddCssClass("float-" + Float.ToString().ToLowerInvariant());
            }
        }
예제 #4
0
        void RenderControl(RenderContext context, Action <TagBuilder> onRender, MergeAttrMode mode)
        {
            var tag = new TagBuilder("label", ControlType, IsInGrid);

            onRender?.Invoke(tag);
            MergeAttributes(tag, context, mode);
            if (IsLabelEmpty)
            {
                tag.AddCssClass("no-label");
            }
            if (Color != TextColor.Default)
            {
                tag.AddCssClass("text-color-" + Color.ToString().ToKebabCase());
            }
            tag.RenderStart(context);
            var input = new TagBuilder("input");

            input.MergeAttribute("type", InputControlType);
            if (TabIndex != 0)
            {
                input.MergeAttribute("tabindex", TabIndex.ToString());
            }
            input.MergeAttribute("v-settabindex", String.Empty);
            MergeCheckBoxValue(input, context);
            MergeCheckBoxAttributes(input, context);
            input.Render(context, TagRenderMode.SelfClosing);
            var span    = new TagBuilder("span");
            var lblBind = GetBinding(nameof(Label));

            if (lblBind != null)
            {
                span.MergeAttribute("v-text", lblBind.GetPathFormat(context));
            }
            else if (Label != null)
            {
                span.SetInnerText(Label.ToString());
            }
            span.Render(context);             // always (empty too)
            tag.RenderEnd(context);
        }
예제 #5
0
        internal virtual void MergeAttributes(TagBuilder tag, RenderContext context, MergeAttrMode mode = MergeAttrMode.All)
        {
            if (mode.HasFlag(MergeAttrMode.Visibility))
            {
                MergeVisibilityAttribures(tag, context);
            }

            if (mode.HasFlag(MergeAttrMode.Tip))
            {
                MergeBindingAttributeString(tag, context, "title", "Tip", Tip);
            }

            if (mode.HasFlag(MergeAttrMode.Wrap))
            {
                if (Wrap != WrapMode.Default)
                {
                    tag.AddCssClass(Wrap.ToString().ToKebabCase());
                }
            }

            if (mode.HasFlag(MergeAttrMode.Margin))
            {
                if (Margin != null)
                {
                    Margin.MergeStyles("margin", tag);
                }
                if (Padding != null)
                {
                    Padding.MergeStyles("padding", tag);
                }
            }

            if (Absolute != null)
            {
                Absolute.MergeAbsolute(tag);
            }

            tag.MergeAttribute("id", HtmlId);
        }
예제 #6
0
 public override void MergeAttributes(TagBuilder tag, RenderContext context, MergeAttrMode mode = MergeAttrMode.All)
 {
     base.MergeAttributes(tag, context, mode);
     tag.AddCssClassBool(Block, "block");
     if (Popover != null)
     {
         tag.AddCssClass("with-popover");
     }
     AddControlAttributes(tag, context);
     if (TabIndex != 0 && mode.HasFlag(MergeAttrMode.TabIndex))
     {
         tag.MergeAttribute(":tab-index", TabIndex.ToString());
     }
     if (Width != null)
     {
         tag.MergeStyle("width", Width.Value);
         tag.AddCssClass("with-width");
     }
     if (!String.IsNullOrEmpty(TestId) && context.IsDebugConfiguration)
     {
         tag.MergeAttribute("test-id", TestId);
     }
 }
예제 #7
0
        internal virtual void MergeAttributes(TagBuilder tag, RenderContext context, MergeAttrMode mode = MergeAttrMode.All)
        {
            if (mode.HasFlag(MergeAttrMode.Visibility))
            {
                MergeBindingAttributeBool(tag, context, "v-if", nameof(If), If);
                MergeBindingAttributeBool(tag, context, "v-show", nameof(Show), Show);
                // emulate v-hide
                MergeBindingAttributeBool(tag, context, "v-show", nameof(Hide), Hide, bInvert: true);
            }
            if (mode.HasFlag(MergeAttrMode.Tip))
            {
                MergeBindingAttributeString(tag, context, "title", "Tip", Tip);
            }
            if (mode.HasFlag(MergeAttrMode.Wrap))
            {
                if (Wrap != WrapMode.Default)
                {
                    tag.AddCssClass(Wrap.ToString().ToKebabCase());
                }
            }
            if (mode.HasFlag(MergeAttrMode.Margin))
            {
                if (Margin != null)
                {
                    Margin.MergeStyles("margin", tag);
                }
                if (Padding != null)
                {
                    Padding.MergeStyles("padding", tag);
                }

                if (Absolute != null)
                {
                    Absolute.MergeAbsolute(tag);
                }
            }
        }
예제 #8
0
        public override void MergeAttributes(TagBuilder tag, RenderContext context, MergeAttrMode mode = MergeAttrMode.All)
        {
            base.MergeAttributes(tag, context, mode);

            var boldBind   = GetBinding(nameof(Bold));
            var italicBind = GetBinding(nameof(Italic));
            var cssBind    = GetBinding(nameof(CssClass));

            if (cssBind != null)
            {
                tag.MergeAttribute(":class", cssBind.GetPath(context));
                if (boldBind != null || italicBind != null)
                {
                    throw new XamlException("CssClass binding is incompatible with Bold and Italic bindings");
                }
            }
            else if (boldBind != null || italicBind != null)
            {
                var sb = new StringBuilder("{");
                if (boldBind != null)
                {
                    sb.Append($"bold: {boldBind.GetPath(context)}, ");
                }
                if (italicBind != null)
                {
                    sb.Append($"italic: {italicBind.GetPath(context)}, ");
                }
                sb.RemoveTailComma();
                sb.Append("}");
                tag.MergeAttribute(":class", sb.ToString());
            }
            tag.AddCssClassBoolNo(Bold, "bold");
            tag.AddCssClassBoolNo(Italic, "italic");
            tag.AddCssClassBoolNo(UserSelect, "user-select");
            tag.AddCssClassBoolNo(Print, "print");
            tag.AddCssClass(CssClass);
        }
예제 #9
0
 internal void MergeAttributesBase(TagBuilder tag, RenderContext context, MergeAttrMode mode = MergeAttrMode.All)
 {
     // without commands
     base.MergeAttributes(tag, context, mode);
 }
예제 #10
0
 internal override void MergeAttributes(TagBuilder tag, RenderContext context, MergeAttrMode mode = MergeAttrMode.All)
 {
     base.MergeAttributes(tag, context, mode);
     MergeCommandAttribute(tag, context);
 }
예제 #11
0
 internal override void MergeAttributes(TagBuilder tag, RenderContext context, MergeAttrMode mode = MergeAttrMode.All)
 {
     base.MergeAttributes(tag, context, mode);
     tag.AddCssClassBool(Block, "block");
 }