Beispiel #1
0
 static CodeFormatter()
 {
     CssClasses.Add(TokenCategory.Text, new TokenCategoryClassProvider("cr-text", new KeyValuePair <TokenLanguage, string>(TokenLanguage.Html, "cr-text-html")));
     CssClasses.Add(TokenCategory.Keyword, new TokenCategoryClassProvider("cr-keyword", new KeyValuePair <TokenLanguage, string>(TokenLanguage.Html, "cr-keyword-html"), new KeyValuePair <TokenLanguage, string>(TokenLanguage.Css, "cr-keyword-css")));
     CssClasses.Add(TokenCategory.Operator, new TokenCategoryClassProvider("cr-operator"));
     CssClasses.Add(TokenCategory.PreprocessorKeyword, new TokenCategoryClassProvider("cr-preproc", new KeyValuePair <TokenLanguage, string>(TokenLanguage.Html, "cr-preproc-html")));
     CssClasses.Add(TokenCategory.String, new TokenCategoryClassProvider("cr-string", new KeyValuePair <TokenLanguage, string>(TokenLanguage.Html, "cr-string-html"), new KeyValuePair <TokenLanguage, string>(TokenLanguage.Css, "cr-string-css")));
     CssClasses.Add(TokenCategory.Number, new TokenCategoryClassProvider("cr-number"));
     CssClasses.Add(TokenCategory.Identifier, new TokenCategoryClassProvider("cr-identifier"));
     CssClasses.Add(TokenCategory.HtmlServerSideScript, new TokenCategoryClassProvider("cr-htmlserverscript"));
     CssClasses.Add(TokenCategory.HtmlString, new TokenCategoryClassProvider("cr-htmlstring"));
     CssClasses.Add(TokenCategory.Unknown, new TokenCategoryClassProvider("cr-unknown"));
     CssClasses.Add(TokenCategory.Comment, new TokenCategoryClassProvider("cr-comment"));
     CssClasses.Add(TokenCategory.XmlComment, new TokenCategoryClassProvider("cr-xmlcomment"));
     CssClasses.Add(TokenCategory.CssComment, new TokenCategoryClassProvider("cr-csscomment"));
     CssClasses.Add(TokenCategory.CssKeyword, new TokenCategoryClassProvider("cr-csskeyword"));
     CssClasses.Add(TokenCategory.CssPropertyName, new TokenCategoryClassProvider("cr-csspropertyname"));
     CssClasses.Add(TokenCategory.CssPropertyValue, new TokenCategoryClassProvider("cr-csspropertyvalue"));
     CssClasses.Add(TokenCategory.CssSelector, new TokenCategoryClassProvider("cr-cssselector"));
     CssClasses.Add(TokenCategory.CssStringValue, new TokenCategoryClassProvider("cr-cssstringvalue"));
     CssClasses.Add(TokenCategory.HtmlElementName, new TokenCategoryClassProvider("cr-htmlelementname"));
     CssClasses.Add(TokenCategory.HtmlEntity, new TokenCategoryClassProvider("cr-htmlentity"));
     CssClasses.Add(TokenCategory.HtmlOperator, new TokenCategoryClassProvider("cr-htmloperator"));
     CssClasses.Add(TokenCategory.HtmlComment, new TokenCategoryClassProvider("cr-htmlcomment"));
     CssClasses.Add(TokenCategory.HtmlAttributeName, new TokenCategoryClassProvider("cr-htmlattributename"));
     CssClasses.Add(TokenCategory.HtmlAttributeValue, new TokenCategoryClassProvider("cr-htmlattributevalue"));
     CssClasses.Add(TokenCategory.HtmlTagDelimiter, new TokenCategoryClassProvider("cr-htmltagdelimiter"));
 }
Beispiel #2
0
        protected override void OnStart(System.IO.TextWriter writer)
        {
            // Add the outer group
            _buttonGroup = GetHelper().ButtonGroup().Component;
            if (Dropup)
            {
                _buttonGroup.AddCss(Css.Dropup);
            }
            _buttonGroup.Start(writer);

            // Add the action button if split and copy over button CSS classes
            // Also move the icon to the button (if one is present)
            // But only create the split if we actually have some text to put in it
            if (Split && !string.IsNullOrWhiteSpace(TextContent))
            {
                Button button = GetHelper().Button(TextContent).Component;
                MoveIcons(button);
                TextContent = null;
                foreach (string cssClass in CssClasses)
                {
                    button.CssClasses.Add(cssClass);
                }
                button.MergeAttributes(Attributes.Dictionary);
                Attributes.Dictionary.Clear();
                button.StartAndFinish(writer);
            }

            // Create the dropdown button, copy over CSS, add the text and caret, then render
            Button dropdown = GetHelper().Button(buttonType: ButtonType.Button).Component;

            MoveIcons(dropdown);
            dropdown.AddCss(Css.Btn, Css.BtnDefault, Css.DropdownToggle);
            dropdown.MergeAttribute("data-toggle", "dropdown");
            foreach (string cssClass in CssClasses)
            {
                dropdown.CssClasses.Add(cssClass);
            }
            dropdown.MergeAttributes(Attributes.Dictionary);
            Attributes.Dictionary.Clear();
            CssClasses.Clear();
            if (!string.IsNullOrWhiteSpace(TextContent))
            {
                dropdown.AddChild(GetHelper().Content(TextContent + " "));
            }
            else
            {
                Element element = GetHelper().Element("span").AddCss(Css.SrOnly).Component;
                element.AddChild(GetHelper().Content("Toggle Dropdown"));
                dropdown.AddChild(element);
            }
            dropdown.AddChild(GetHelper().Caret());
            TextContent = null;
            dropdown.StartAndFinish(writer);

            // Add CSS and attributes after we've copied all the user-specified stuff to the buttons
            MergeAttribute("role", "menu");
            AddCss(Css.DropdownMenu);

            base.OnStart(writer);
        }
Beispiel #3
0
        protected override void OnStart(TextWriter writer)
        {
            // Change to a div if no link was provided, otherwise wrap in a div
            string href = GetAttribute("href");

            if (string.IsNullOrWhiteSpace(href))
            {
                TagName = "div";
            }
            else
            {
                // Copy media CSS classes to the wrapping div
                _wrapper = GetHelper().Div().Component;
                foreach (string mediaClass in CssClasses.Where(x => x.StartsWith("media-")).ToList())
                {
                    _wrapper.AddCss(mediaClass);
                    CssClasses.Remove(mediaClass);
                }
                _wrapper.Start(writer);
            }

            base.OnStart(writer);

            _image = GetHelper().Image(Src, Alt).AddCss(Css.MediaObject).Component;
            _image.Start(writer);
        }
Beispiel #4
0
        //public MenuExpression<MODEL, ITEMS> For(Func<MODEL, IList<ITEMS>> expression)
        //{
        //    _nodes = expression(_model);
        //    return this;
        //}

        public override string ToString()
        {
            CssClasses.Add("entity-link-list");

            return(@"<div{0}><ul class=""sf-menu sf-vertical"">{1}</ul></div>".ToFormat(GetHtmlAttributesString(),
                                                                                        renderListItems(_items)));
        }
Beispiel #5
0
 public void AddCss(params string[] cssClasses)
 {
     foreach (string cssClass in cssClasses)
     {
         CssClasses.Add(cssClass);
     }
 }
 /// <inheritdoc/>
 protected internal override void ConstractClasses()
 {
     base.ConstractClasses();
     CssClasses.Insert(1, StackDirection.ToString().ToLower());
     CssClasses.Insert(0, "ui");
     CssClasses.Add("segments");
 }
Beispiel #7
0
 ///<inheritdoc/>
 protected internal override void ConstractClasses()
 {
     base.ConstractClasses();
     CssClasses.Insert(0, "ui");
     this.AddInvertedClass(1).AddUnselectableClass(1).AddSizeClass(1).AddColorClass(1);
     CssClasses.Add("text");
 }
        public virtual IEnumerator <IGridRow <T> > GetEnumerator()
        {
            if (CurrentRows == null)
            {
                IQueryable <T> items = Grid.Source;
                foreach (IGridProcessor <T> processor in Grid.Processors.Where(proc => proc.ProcessorType == GridProcessorType.Pre))
                {
                    items = processor.Process(items);
                }

                foreach (IGridProcessor <T> processor in Grid.Processors.Where(proc => proc.ProcessorType == GridProcessorType.Post))
                {
                    items = processor.Process(items);
                }

                CurrentRows = items
                              .ToList()
                              .Select(model => new GridRow <T>(model)
                {
                    CssClasses = CssClasses?.Invoke(model)
                });
            }

            return(CurrentRows.GetEnumerator());
        }
Beispiel #9
0
 public void RemoveCss(params string[] cssClasses)
 {
     foreach (string cssClass in cssClasses)
     {
         CssClasses.Remove(cssClass);
     }
 }
Beispiel #10
0
        /// <summary>
        ///   Creates an alert
        /// </summary>
        /// <param name="type">Type of alert</param>
        /// <param name="message">Alert message</param>
        /// <param name="title">Title/Heading of the alert</param>
        /// <param name="icon">Icon to be rendered with title/heading</param>
        private void CreateAlert(EMessage type, string message, string title, IHtmlComponent icon)
        {
            CssClasses.Add(type.GetStringValue());

            HtmlComponent bc = new HtmlComponent(EHtmlTag.B)
            {
                InnerHtml = title ?? string.Empty
            };

            if (icon != null)
            {
                bc.PrependTags.Add(icon);
            }

            if (WebExtrasSettings.CssFramework != ECssFramework.JQueryUI)
            {
                CssClasses.Add("alert");

                Button closeBtn = new Button(EButton.Regular, "&times;", string.Empty);
                closeBtn.CssClasses.Add("close");
                closeBtn.Attributes["data-dismiss"] = "alert";

                PrependTags.Add(closeBtn);
                PrependTags.Add(bc);
                InnerHtml = (!string.IsNullOrWhiteSpace(title) || icon != null)
          ? WebExtrasSettings.HTMLSpace + message
          : message;
            }
            else
            {
                HtmlComponent div = new HtmlComponent(EHtmlTag.Div);

                switch (type)
                {
                case EMessage.Error:
                    div.CssClasses.Add("ui-state-error");
                    break;

                case EMessage.Information:
                case EMessage.Warning:
                    div.CssClasses.Add("ui-state-highlight");
                    break;

                case EMessage.Success:
                    div.CssClasses.Add("ui-state-success");
                    break;
                }

                div.CssClasses.Add("ui-corner-all");
                div.PrependTags.Add(bc);
                div.InnerHtml = (!string.IsNullOrWhiteSpace(title) || icon != null)
          ? WebExtrasSettings.HTMLSpace + message
          : message;

                PrependTags.Add(div);
            }

            Type = type;
        }
Beispiel #11
0
        /// <summary>
        ///   Constructor
        /// </summary>
        /// <param name="icon">Icon to be displayed as the hypelink</param>
        /// <param name="url">Link URL</param>
        /// <param name="htmlAttributes">[Optional Extra HTML attributes</param>
        public BootstrapIconlink(EFontAwesomeIcon icon, string url, object htmlAttributes = null) :
            base(string.Empty, url, htmlAttributes)
        {
            CssClasses.Add("icon-only-link");
            m_icon = BootstrapUtil.CreateIcon(icon);

            PrependTags.Add(m_icon);
        }
Beispiel #12
0
        /// <summary>
        ///   Constructor
        /// </summary>
        /// <param name="icon">Icon to be displayed as the hypelink</param>
        /// <param name="url">Link URL</param>
        /// <param name="htmlAttributes">[Optional Extra HTML attributes</param>
        public BootstrapIconlink(EBootstrapIcon icon, string url, object htmlAttributes = null) :
            base(string.Empty, url, htmlAttributes)
        {
            CssClasses.Add("icon-only-link");
            IHtmlComponent iconElement = BootstrapUtil.CreateIcon(icon);

            PrependTags.Add(iconElement);
        }
Beispiel #13
0
        ///<inheritdoc/>
        protected internal override void ConstractClasses()
        {
            base.ConstractClasses();
            CssClasses.Insert(0, Icon.ToCssClass());
            this.AddDisabledClass(0).AddCircularClass(0).AddFittedClass(0).AddSizeClass(0).AddInvertedClass(0).AddColorClass(0);

            CssClasses.Add("icon");
        }
Beispiel #14
0
        /// <summary>
        ///   Converts current HTML component to a HTML encoded string
        /// </summary>
        /// <returns></returns>
        public virtual string ToHtml()
        {
            PreRender();

            if (Tag == EHtmlTag.Empty)
            {
                return(string.Empty);
            }

            if (Attributes.ContainsKey("class"))
            {
                CssClasses.Add(Attributes["class"]);
            }

            if (CssClasses.Count > 0)
            {
                Attributes["class"] = string.Join(" ", CssClasses.Distinct());
            }

            string innerHtml = string.Empty;

            if (Tag != EHtmlTag.Img)
            {
                innerHtml =
                    string.Join("", PrependTags.Select(f => f.ToHtml())) +
                    InnerHtml +
                    string.Join("", AppendTags.Select(f => f.ToHtml()));
            }

            List <string> parts = new List <string> {
                "<" + Tag.ToString().ToLowerInvariant()
            };

            string attribs = " " + string.Join(" ",
                                               Attributes.OrderBy(f => f.Key).Select(f => string.Format("{0}=\"{1}\"", f.Key, f.Value)));

            parts.Add(attribs);

            if (Tag == EHtmlTag.Img || Tag == EHtmlTag.Input)
            {
                parts.Add("/>");
            }
            else
            {
                parts.Add(">");

                if (!string.IsNullOrWhiteSpace(innerHtml))
                {
                    parts.Add(innerHtml);
                }

                parts.Add("</" + Tag.ToString().ToLowerInvariant() + ">");
            }

            string result = string.Join(string.Empty, parts);

            return(result);
        }
 /// <inheritdoc/>
 protected internal override void ConstractClasses()
 {
     base.ConstractClasses();
     if (IsPlaceholder)
     {
         CssClasses.Insert(1, PlaceholderClass);
     }
     CssClasses.Insert(0, "ui");
     CssClasses.Add("segment");
 }
        private void addCssClasses(StringBuilder builder, IDictionary <string, string> attributes)
        {
            if (CssClasses.Count > 0)
            {
                CssClasses.Each(name => builder.AppendFormat("{0}", name));

                attributes.Add("class", string.Join(" ", CssClasses.ToArray()));

                builder.Length = 0;
            }
        }
Beispiel #17
0
        protected override void OnStart(TextWriter writer)
        {
            // Add the text content as a child
            if (!string.IsNullOrEmpty(TextContent))
            {
                this.AddChild(new Content <THelper>(Helper, TextContent));
            }

            base.OnStart(writer);

            // Pretty print
            if (_prettyPrint && !(writer is SuppressOutputWriter))
            {
                writer.WriteLine();
                int tagIndent = (int)Helper.GetItem(TagIndentKey, 0);
                writer.Write(new String(' ', tagIndent++));
                Helper.AddItem(TagIndentKey, tagIndent);
                Helper.AddItem(LastToWriteKey, this);
            }
            else
            {
                _prettyPrint = false;
            }

            // Merge CSS classes
            if (CssClasses.Count > 0)
            {
                Attributes.Merge("class",
                                 (Attributes.Dictionary.ContainsKey("class") ? Attributes.GetValue("class") + " " : string.Empty)
                                 + string.Join(" ", CssClasses.Reverse())); // TODO: Remove the reverse call
            }

            // Generate the inline CSS style
            if (InlineStyles.Dictionary.Count > 0)
            {
                Attributes.Merge("style", string.Join(" ", InlineStyles.Dictionary.Select(x => x.Key + ": " + x.Value + ";")));
            }

            // Append the start tag
            StringBuilder startTag = new StringBuilder("<" + _tagName);

            foreach (KeyValuePair <string, string> attribute in Attributes.Dictionary.Reverse()) // TODO: Remove the reverse call
            {
                if (string.Equals(attribute.Key, "id", StringComparison.Ordinal) && string.IsNullOrEmpty(attribute.Value))
                {
                    continue;
                }
                string encoded = HttpUtility.HtmlAttributeEncode(attribute.Value);
                startTag.Append(" " + attribute.Key + "=\"" + encoded + "\"");
            }
            startTag.Append(">");
            writer.Write(startTag.ToString());
            _startTagOutput = true;
        }
 ///<inheritdoc/>
 protected internal override void ConstractClasses()
 {
     base.ConstractClasses();
     CssClasses.Insert(0, "ui");
     this.AddDisabledClass(1)
     .AddAlignmentClass(1)
     .AddContentAlignmentClass(1)
     .AddAttachClass(1)
     .AddDividingClass(1)
     .AddUnselectableClass(1)
     .AddInvertedClass(1)
     .AddColorClass(1);
     CssClasses.Add("header");
 }
Beispiel #19
0
 public void ToggleCss(string cssClass, bool add, params string[] removeIfAdding)
 {
     if (add)
     {
         foreach (string remove in removeIfAdding)
         {
             CssClasses.Remove(remove);
         }
         CssClasses.Add(cssClass);
     }
     else
     {
         CssClasses.Remove(cssClass);
     }
 }
Beispiel #20
0
 internal TThis ToggleCss(string cssClass, bool add, params string[] removeIfAdding)
 {
     if (add)
     {
         foreach (string remove in removeIfAdding)
         {
             CssClasses.Remove(remove);
         }
         CssClasses.Add(cssClass);
     }
     else
     {
         CssClasses.Remove(cssClass);
     }
     return(this.GetThis());
 }
        public SelectBuilder <TModel, TProperty> Select2(string placeholder = null, bool allowClear = false)
        {
            CssClasses.Add("select2");

            if (!string.IsNullOrEmpty(placeholder))
            {
                HtmlAttributes.Add("data-placeholder", placeholder);
            }

            if (allowClear)
            {
                HtmlAttributes.Add("data-allowClear", "true");
            }

            return(this);
        }
Beispiel #22
0
        protected override void OnStart(TextWriter writer)
        {
            // Adjust the link style if we're in a navbar
            if (GetComponent <Navbar>() != null)
            {
                CssClasses.Add(Css.NavbarLink);
            }

            // Adjust the link style if we're in an alert
            if (GetComponent <Alert>() != null)
            {
                CssClasses.Add(Css.AlertLink);
            }

            base.OnStart(writer);
        }
        protected virtual void RenderContents(BocListRenderingContext renderingContext)
        {
            ArgumentUtility.CheckNotNull("renderingContext", renderingContext);

            //  Menu Block
            if (renderingContext.Control.HasMenuBlock)
            {
                renderingContext.Writer.AddAttribute(HtmlTextWriterAttribute.Class, CssClasses.MenuBlock);

                if (!renderingContext.Control.MenuBlockWidth.IsEmpty)
                {
                    renderingContext.Writer.AddStyleAttribute(HtmlTextWriterStyle.Width, renderingContext.Control.MenuBlockWidth.ToString());
                }

                renderingContext.Writer.RenderBeginTag(HtmlTextWriterTag.Div);

                if (!renderingContext.Control.MenuBlockOffset.IsEmpty)
                {
                    renderingContext.Writer.AddStyleAttribute(HtmlTextWriterStyle.MarginLeft, renderingContext.Control.MenuBlockOffset.ToString());
                }
                renderingContext.Writer.RenderBeginTag(HtmlTextWriterTag.Div);

                MenuBlockRenderer.Render(renderingContext);

                renderingContext.Writer.RenderEndTag();
                renderingContext.Writer.RenderEndTag();
            }

            //  Table Block
            renderingContext.Writer.AddAttribute(
                HtmlTextWriterAttribute.Class, CssClasses.GetTableBlock(renderingContext.Control.HasMenuBlock, renderingContext.Control.HasNavigator));
            if (renderingContext.Control.HasMenuBlock && !renderingContext.Control.MenuBlockWidth.IsEmpty)
            {
                renderingContext.Writer.AddStyleAttribute("right", renderingContext.Control.MenuBlockWidth.ToString());
            }
            renderingContext.Writer.RenderBeginTag(HtmlTextWriterTag.Div);

            TableBlockRenderer.Render(renderingContext);

            if (renderingContext.Control.HasNavigator)
            {
                NavigationBlockRenderer.Render(renderingContext);
            }

            renderingContext.Writer.RenderEndTag();
        }
        /// <summary>
        /// Renders a table cell for <see cref="BocColumnRenderingContext.ColumnDefinition"/> containing the appropriate data from the
        /// <see cref="IBusinessObject"/> contained in <paramref name="dataRowRenderEventArgs"/>
        /// </summary>
        /// <param name="renderingContext">The <see cref="BocColumnRenderingContext{TBocColumnDefinition}"/>.</param>
        /// <param name="rowIndex">The zero-based index of the row on the page to be displayed.</param>
        /// <param name="showIcon">Specifies if an object-specific icon will be rendered in the table cell.</param>
        /// <param name="dataRowRenderEventArgs">Specifies row-specific arguments used in rendering the table cell.</param>
        /// <remarks>
        /// This is a template method. Deriving classes must implement <see cref="RenderCellContents"/> to provide the contents of
        /// the table cell (&lt;td&gt;) element.
        /// </remarks>
        public virtual void RenderDataCell(
            BocColumnRenderingContext <TBocColumnDefinition> renderingContext,
            int rowIndex,
            bool showIcon,
            BocListDataRowRenderEventArgs dataRowRenderEventArgs)
        {
            ArgumentUtility.CheckNotNull("renderingContext", renderingContext);
            ArgumentUtility.CheckNotNull("dataRowRenderEventArgs", dataRowRenderEventArgs);

            string cssClassTableCell = CssClasses.GetDataCell(dataRowRenderEventArgs.IsOddRow);

            if (!string.IsNullOrEmpty(renderingContext.ColumnDefinition.CssClass))
            {
                cssClassTableCell += " " + renderingContext.ColumnDefinition.CssClass;
            }
            renderingContext.Writer.AddAttribute(HtmlTextWriterAttribute.Class, cssClassTableCell);
            renderingContext.Writer.RenderBeginTag(HtmlTextWriterTag.Td);

            RenderCellContents(renderingContext, dataRowRenderEventArgs, rowIndex, showIcon);

            renderingContext.Writer.RenderEndTag();
        }
        ///<inheritdoc/>
        protected internal override void ConstractClasses()
        {
            base.ConstractClasses();
            CssClasses.Insert(0, "ui");
            if (IsPlaceholder)
            {
                CssClasses.Insert(1, PlaceholderClass);
            }


            this.AddContentSpacingClass(1).
            AddLoadingIndicatorClass(1).
            AddDisabledClass(1).
            AddContentAlignmentClass(1).
            AddCompactClass(1).
            AddAttachClass(1).
            AddCircularClass(1).
            AddISegmentStyleClass(1).
            AddInvertedClass(1).
            AddColorClass(1);
            CssClasses.Add("segment");
        }
Beispiel #26
0
        protected Dictionary <string, object> GetAttributesDictionary()
        {
            object attrClass;

            if (HtmlAttributes.TryGetValue("class", out attrClass))
            {
                string strClass = (string)attrClass;
                var    classes  = strClass.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
                if (classes.Length > 0)
                {
                    CssClasses.AddRange(classes);
                }

                HtmlAttributes.Remove("class");
            }

            var result = new Dictionary <string, object>(HtmlAttributes);

            result["class"] = GetCssClassString();

            return(result);
        }
        // This prepares the outer form group if we need one
        // Needs to be in a separate method so that derived classes can create the form group before outputting any wrappers of their own
        protected void Prepare(TextWriter writer)
        {
            // Only prepare once
            if (_prepared)
            {
                return;
            }
            _prepared = true;

            // Make sure we're in a form group
            IFormGroup formGroup = GetComponent <IFormGroup>();

            if (formGroup == null && EnsureFormGroup)
            {
                _formGroup = new FormGroup <THelper>(Helper);
                formGroup  = _formGroup;
            }

            // Move any validation classes to the form group, but only if it's implicit for this control and doesn't already have any
            if (CssClasses.Any(x => x.StartsWith("has-")) && _formGroup != null && formGroup != null && !formGroup.CssClasses.Any(x => x.StartsWith("has-")))
            {
                foreach (string formValidation in CssClasses.Where(x => x.StartsWith("has-")))
                {
                    formGroup.CssClasses.Add(formValidation);
                }
                CssClasses.RemoveWhere(x => x.StartsWith("has-"));
            }

            // Move any grid column classes to the form group, but only if it's implicit for this control and doesn't already have any
            if (CssClasses.Any(x => x.StartsWith("col-")) && _formGroup != null && formGroup != null && !formGroup.CssClasses.Any(x => x.StartsWith("col-")))
            {
                foreach (string col in CssClasses.Where(x => x.StartsWith("col-")))
                {
                    formGroup.CssClasses.Add(col);
                }
                CssClasses.RemoveWhere(x => x.StartsWith("col-"));
            }

            // Add the label to the form group or write it
            if (_label != null)
            {
                // Set the label's for attribute to the input name
                string name = Attributes.GetValue("name");
                if (!string.IsNullOrWhiteSpace(name))
                {
                    _label.MergeAttribute("for", name);
                }

                // Add or write the label
                if (_formGroup != null)
                {
                    _formGroup.ControlLabel = _label;
                }
                else
                {
                    _label.StartAndFinish(writer);
                }
            }

            // Start the new form group if we created one
            if (_formGroup != null)
            {
                _formGroup.Start(writer);
            }

            _prepared = true;
        }
Beispiel #28
0
        protected override void OnStart(TextWriter writer)
        {
            // Set column classes if we're horizontal
            if (AutoColumns)
            {
                ComponentBuilder <BootstrapConfig, FormGroup> builder = GetBuilder(this);
                Form form = GetComponent <Form>();
                if ((form != null && form.Horizontal && (!Horizontal.HasValue || Horizontal.Value)) || (Horizontal.HasValue && Horizontal.Value))
                {
                    int labelWidth = form == null ? Config.DefaultFormLabelWidth : form.DefaultLabelWidth;

                    // Set label column class
                    if (_label != null && !_label.CssClasses.Any(x => x.StartsWith("col-")))
                    {
                        _label.SetColumnClass(Config, "col-md-", labelWidth);
                    }

                    // Add column classes to this (these will get moved to a wrapper later in this method)
                    if (!CssClasses.Any(x => x.StartsWith("col-")))
                    {
                        builder.SetMd(Config.GridColumns - labelWidth);

                        // Also need to add an offset if no label
                        if (_label == null)
                        {
                            builder.SetMdOffset(labelWidth);
                        }
                    }
                }
                else if (form != null && form.Horizontal)
                {
                    // If the form is horizontal but we requested not to be, create a full-width column wrapper
                    builder.SetMd(Config.GridColumns);
                    _columnWrapperBeforeLabel = true;
                }
            }

            // Move any grid column classes to a container class
            if (CssClasses.Any(x => x.StartsWith("col-")))
            {
                _columnWrapper = GetHelper().Element("div").AddCss(CssClasses.Where(x => x.StartsWith("col-")).ToArray()).Component;
            }
            CssClasses.RemoveWhere(x => x.StartsWith("col-"));

            base.OnStart(writer);

            // Write the column wrapper first if needed
            if (_columnWrapperBeforeLabel && _columnWrapper != null)
            {
                _columnWrapper.Start(writer);
            }

            // Write the label
            if (_label != null)
            {
                _label.StartAndFinish(writer);
            }

            // Write the column wrapper
            if (!_columnWrapperBeforeLabel && _columnWrapper != null)
            {
                _columnWrapper.Start(writer);
            }

            // Add the feedback icon as a final child of either this or the wrapper
            if (Icon != Icon.None)
            {
                Component icon = GetHelper().Icon(Icon).AddCss(Css.FormControlFeedback).Component;
                if (_columnWrapper == null)
                {
                    AddChildAtEnd(icon);
                }
                else
                {
                    _columnWrapper.AddChildAtEnd(icon);
                }
            }
            else if (IconFontAwesome != IconFontAwesome.None)
            {
                Component icon = GetHelper().Icon(IconFontAwesome).AddCss(Css.FormControlFeedback).Component;
                if (_columnWrapper == null)
                {
                    AddChildAtEnd(icon);
                }
                else
                {
                    _columnWrapper.AddChildAtEnd(icon);
                }
            }
        }
Beispiel #29
0
 /// <inheritdoc/>
 protected internal override void ConstractClasses()
 {
     base.ConstractClasses();
     CssClasses.Insert(0, "ui");
     CssClasses.Add("header");
 }
 /// <inheritdoc/>
 protected internal override void ConstractClasses()
 {
     base.ConstractClasses();
     CssClasses.Add(Icon.ToCssClass());
     CssClasses.Add("icon");
 }