Ejemplo n.º 1
0
        protected override void BuildRenderTree(RenderTreeBuilder builder)
        {
            if (EnableRender)
            {
                base.BuildRenderTree(builder);

                int k = -1;

                builder.OpenElement(k++, "rect");
                builder.AddAttribute(k++, "id", bsbThumb.id);
                builder.AddAttribute(k++, "x", bsbThumb.x);
                builder.AddAttribute(k++, "y", bsbThumb.y);
                builder.AddAttribute(k++, "width", bsbThumb.width);
                builder.AddAttribute(k++, "height", bsbThumb.height);
                builder.AddAttribute(k++, "fill", bsbThumb.fill);


                builder.AddAttribute(k++, "onpointerdown", EventCallback.Factory.Create <PointerEventArgs>(this, OnPointerDown));
                builder.AddAttribute(k++, "onpointermove", EventCallback.Factory.Create <PointerEventArgs>(this, OnPointerMove));

                builder.AddAttribute(k++, "onpointerup", EventCallback.Factory.Create <PointerEventArgs>(this, OnPointerUp));

                builder.AddEventPreventDefaultAttribute(k++, "onmousemove", true);
                //builder.AddAttribute(k++, "onmousemove", EventCallback.Factory.Create<MouseEventArgs>(this, "return false;")); //event.preventDefault()

                builder.AddAttribute(k++, "onwheel", EventCallback.Factory.Create <WheelEventArgs>(this, OnWheel));

                builder.CloseElement();

                EnableRender = false;
            }
        }
Ejemplo n.º 2
0
        protected override void BuildRenderTree(RenderTreeBuilder builder)
        {
            if (EnableRender)
            {
                base.BuildRenderTree(builder);

                int k = 0;
                builder.OpenElement(k++, "div");
                builder.AddAttribute(k++, "id", bSplitter.bsbSettings.ID);
                builder.AddAttribute(k++, "style", bSplitter.bsbSettings.GetStyle());

                builder.AddAttribute(k++, "onpointerdown", EventCallback.Factory.Create <PointerEventArgs>(this, OnPointerDown));
                builder.AddAttribute(k++, "onpointermove", EventCallback.Factory.Create <PointerEventArgs>(this, OnPointerMove));
                builder.AddAttribute(k++, "onpointerup", EventCallback.Factory.Create <PointerEventArgs>(this, OnPointerUp));

                builder.AddEventPreventDefaultAttribute(k++, "onmousemove", true);
                //builder.AddAttribute(k++, "onmousemove", EventCallback.Factory.Create<MouseEventArgs>(this, "return false;")); //event.preventDefault()


                builder.CloseElement();



                EnableRender = false;
            }
        }
Ejemplo n.º 3
0
 /// <inheritdoc />
 protected override void BuildRenderTree(RenderTreeBuilder builder)
 {
     builder.OpenElement(0, $"{ThemeName}-anchor");
     builder.AddAttribute(1, "onclick", EventCallback.Factory.Create <MouseEventArgs>(this, Navigate));
     builder.AddEventPreventDefaultAttribute(2, "onclick", true);
     builder.AddMultipleAttributes(3, AdditionalAttributes);
     builder.AddContent(4, ChildContent);
     builder.CloseElement();
 }
Ejemplo n.º 4
0
        ///-------------------------------------------------------------------------------------------------
        /// <summary>
        ///     Renders the component to the supplied
        ///     <see cref="T:Microsoft.AspNetCore.Components.Rendering.RenderTreeBuilder" />.
        /// </summary>
        ///
        /// <param name="builder">  A <see cref="T:Microsoft.AspNetCore.Components.Rendering.RenderTreeBuil
        ///                         der" /> that will receive the render output. </param>
        ///
        /// <seealso cref="Microsoft.AspNetCore.Components.ComponentBase.BuildRenderTree(RenderTreeBuilder)"/>
        ///-------------------------------------------------------------------------------------------------
        protected override void BuildRenderTree(RenderTreeBuilder builder)
        {
            base.BuildRenderTree(builder);

            builder.OpenElement(0, Tag);

            builder.AddMultipleAttributes(1, CustomAttributes);
            builder.AddEventPreventDefaultAttribute(2, "onclick", OnClickPreventDefault);
            builder.AddEventStopPropagationAttribute(3, "onclick", OnClickStopPropagation);

            builder.AddContent(4, ChildContent);

            builder.CloseElement();
        }
Ejemplo n.º 5
0
        /// <inheritdoc/>
        protected override void BuildRenderTree(RenderTreeBuilder builder)
        {
            base.BuildRenderTree(builder);
            builder?.OpenElement(0, TagName);

            builder.AddMultipleAttributes(1, Attributes);
            builder.AddEventPreventDefaultAttribute(2, "onclick", ClickPreventDefault);
            builder.AddEventStopPropagationAttribute(3, "onclick", ClickStopPropagation);
            builder.AddContent(4, ChildContent);
            builder.AddElementReferenceCapture(2, capturedRef =>
            {
                ElementRef = capturedRef;
                ElementRefChanged?.Invoke(ElementRef);   // Invoke the callback for the binding to work.
            });

            builder.CloseElement();
        }
Ejemplo n.º 6
0
        protected override void BuildRenderTree(RenderTreeBuilder builder)
        {
            builder.OpenElement(0, ElementName);

            builder.AddAttribute(1, "onclick", InvokeOnClickAsync);
            builder.AddEventPreventDefaultAttribute(2, "onclick", OnClickPreventDefault);
            builder.AddEventStopPropagationAttribute(3, "onclick", OnClickStopPropagation);
            builder.AddMultipleAttributes(4, AdditionalAttributes);
            builder.AddElementReferenceCapture(5, capturedRef =>
            {
                ElementRef = capturedRef;
                ElementRefChanged?.Invoke(ElementRef);
            });
            builder.AddContent(6, ChildContent);

            builder.CloseElement();
        }
 protected override void BuildRenderTree(RenderTreeBuilder builder)
 {
     base.BuildRenderTree(builder);
     builder.OpenElement(0, _Component);
     builder.AddAttribute(1, "class", _Class);
     builder.AddAttribute(2, "style", _Style);
     if (OnClick.HasDelegate)
     {
         builder.AddAttribute(3, "onclick", EventCallback.Factory.Create(this, HandleClick));
     }
     if (OnMouseLeave.HasDelegate)
     {
         builder.AddAttribute(4, "onmouseleave", EventCallback.Factory.Create(this, HandleMouseLeaveAsync));
     }
     if (OnMouseEnter.HasDelegate)
     {
         builder.AddAttribute(5, "onmouseenter", EventCallback.Factory.Create(this, HandleMouseEnterAsync));
     }
     if (OnFocus.HasDelegate)
     {
         builder.AddAttribute(6, "onfocus", EventCallback.Factory.Create <FocusEventArgs>(this, HandleFocusAsync));
     }
     if (OnBlur.HasDelegate)
     {
         builder.AddAttribute(7, "onblur", EventCallback.Factory.Create <FocusEventArgs>(this, HandleBlurAsync));
     }
     if (!string.IsNullOrWhiteSpace(Id))
     {
         builder.AddAttribute(8, "id", Id);
     }
     if (OnClickStop.HasValue)
     {
         builder.AddEventStopPropagationAttribute(9, "onclick", OnClickStop.Value);
     }
     if (OnClickPrevent.HasValue)
     {
         builder.AddEventPreventDefaultAttribute(10, "onclick", OnClickPrevent.Value);
     }
     builder.AddMultipleAttributes(11, Attributes);
     builder.AddContent(12, ChildContent);
     builder.AddElementReferenceCapture(13, (__value) => {
         RootRef.Current = (ElementReference)__value;
     });
     builder.CloseElement();
 }
Ejemplo n.º 8
0
 protected override void BuildRenderTree(RenderTreeBuilder builder)
 {
     builder.OpenElement(0, Port.Parent.Layer == RenderLayer.HTML ? "div" : "g");
     builder.AddAttribute(1, "class", "port" + " " + (Port.Alignment.ToString().ToLower()) + " " + (Port.Links.Count > 0 ? "has-links" : "") + " " + (Class));
     builder.AddAttribute(2, "data-port-id", Port.Id);
     builder.AddAttribute(3, "onmousedown", EventCallback.Factory.Create <MouseEventArgs>(this, OnMouseDown));
     builder.AddEventStopPropagationAttribute(4, "onmousedown", true);
     builder.AddAttribute(5, "onmouseup", EventCallback.Factory.Create <MouseEventArgs>(this, OnMouseUp));
     builder.AddEventStopPropagationAttribute(6, "onmouseup", true);
     builder.AddAttribute(7, "ontouchstart", EventCallback.Factory.Create <TouchEventArgs>(this, OnTouchStart));
     builder.AddEventStopPropagationAttribute(8, "ontouchstart", true);
     builder.AddAttribute(9, "ontouchend", EventCallback.Factory.Create <TouchEventArgs>(this, OnTouchEnd));
     builder.AddEventStopPropagationAttribute(10, "ontouchend", true);
     builder.AddEventPreventDefaultAttribute(11, "ontouchend", true);
     builder.AddElementReferenceCapture(12, (__value) => { _element = __value; });
     builder.AddContent(13, ChildContent);
     builder.CloseElement();
 }
Ejemplo n.º 9
0
        protected override void BuildRenderTree(RenderTreeBuilder builder)
        {
            builder.OpenElement(0, "a");

            builder.AddMultipleAttributes(1, AdditionalAttributes);
            builder.AddAttribute(2, "class", CssClass);

            if (this.OnClick.HasDelegate)
            {
                builder.AddAttribute(3, "onclick", this.OnClick);
                builder.AddEventPreventDefaultAttribute(4, "onclick", true);
                builder.AddEventStopPropagationAttribute(5, "onclick", true);
            }

            builder.AddContent(6, ChildContent);

            builder.CloseElement();
        }
Ejemplo n.º 10
0
        public void PreOrderTraversal(RenderTreeBuilder builder, BinaryTreeNode node)
        {
            if (node != null)
            {
                if (node.Father?.Right == node && node.Father?.Left == null)
                {
                    builder.OpenElement(0, "ul");
                }
                else if (node.Father?.Left == node)
                {
                    builder.OpenElement(0, "ul");
                }

                if (node != Root)
                {
                    builder.OpenElement(1, "li");
                }

                builder.OpenElement(0, "a");
                builder.AddAttribute(1, "href", " ");
                //builder.AddAttribute(2, "onclick", EventCallback.Factory.Create<MouseEventArgs>(this, () => Remove(node.Value)));
                builder.AddEventPreventDefaultAttribute(3, "onclick", true);
                builder.AddContent(4, node.Value);
                builder.CloseElement();

                PreOrderTraversal(builder, node.Left);
                PreOrderTraversal(builder, node.Right);

                if (node != Root)
                {
                    builder.CloseElement();
                }

                if (node.Father?.Right == node)
                {
                    builder.CloseElement();
                }
                else if (node.Father?.Left == node && node.Father?.Right == null)
                {
                    builder.CloseElement();
                }
            }
        }
Ejemplo n.º 11
0
 /// <summary>
 /// BuildRenderTree 方法
 /// </summary>
 /// <param name="builder"></param>
 protected override void BuildRenderTree(RenderTreeBuilder builder)
 {
     builder.OpenElement(0, TagName);
     if (AdditionalAttributes != null)
     {
         builder.AddMultipleAttributes(1, AdditionalAttributes);
     }
     if (TriggerClick && OnClick != null)
     {
         builder.AddAttribute(2, "onclick", EventCallback.Factory.Create <MouseEventArgs>(this, e => OnClick()));
     }
     if (TriggerDoubleClick && OnDoubleClick != null)
     {
         builder.AddAttribute(3, "ondblclick", EventCallback.Factory.Create <MouseEventArgs>(this, e => OnDoubleClick()));
     }
     builder.AddEventPreventDefaultAttribute(4, "onclick", PreventDefault);
     builder.AddContent(5, ChildContent);
     builder.CloseElement();
 }
Ejemplo n.º 12
0
            protected override void BuildRenderTree(RenderTreeBuilder builder)
            {
                base.BuildRenderTree(builder);

                builder.OpenElement(0, "button");
                builder.AddAttribute(1, "type", "button");

                if (OnClick.HasDelegate)
                {
                    builder.AddAttribute(2, "onclick", EventCallback.Factory.Create(this, OnClick));
                    builder.AddEventStopPropagationAttribute(3, "onclick", OnClickStopPropagation);
                    builder.AddEventPreventDefaultAttribute(4, "onclick", OnClickPreventDefault);
                }

                builder.AddElementReferenceCapture(6, elmRef => ButtomElmRef = elmRef);

                builder.AddContent(6, "Click me!");

                builder.CloseElement();
            }
Ejemplo n.º 13
0
        protected override void BuildRenderTree(RenderTreeBuilder builder)
        {
            if (!_isVisible)
            {
                return;
            }

            var componentType = Diagram.GetComponentForModel(Node) ??
                                Diagram.Options.DefaultNodeComponent ??
                                (Node.Layer == RenderLayer.HTML ? typeof(NodeWidget) : typeof(SvgNodeWidget));

            builder.OpenElement(0, Node.Layer == RenderLayer.HTML ? "div" : "g");
            builder.AddAttribute(1, "class", $"node{(Node.Locked ? " locked" : string.Empty)}");
            builder.AddAttribute(2, "data-node-id", Node.Id);

            if (Node.Layer == RenderLayer.HTML)
            {
                builder.AddAttribute(3, "style", $"top: {Node.Position.Y.ToInvariantString()}px; left: {Node.Position.X.ToInvariantString()}px");
            }
            else
            {
                builder.AddAttribute(3, "transform", $"translate({Node.Position.X.ToInvariantString()} {Node.Position.Y.ToInvariantString()})");
            }

            builder.AddAttribute(4, "onmousedown", EventCallback.Factory.Create <MouseEventArgs>(this, OnMouseDown));
            builder.AddEventStopPropagationAttribute(5, "onmousedown", true);
            builder.AddAttribute(6, "onmouseup", EventCallback.Factory.Create <MouseEventArgs>(this, OnMouseUp));
            builder.AddEventStopPropagationAttribute(7, "onmouseup", true);
            builder.AddAttribute(8, "ontouchstart", EventCallback.Factory.Create <TouchEventArgs>(this, OnTouchStart));
            builder.AddEventStopPropagationAttribute(9, "ontouchstart", true);
            builder.AddAttribute(10, "ontouchend", EventCallback.Factory.Create <TouchEventArgs>(this, OnTouchEnd));
            builder.AddEventStopPropagationAttribute(11, "ontouchend", true);
            builder.AddEventPreventDefaultAttribute(12, "ontouchend", true);
            builder.AddElementReferenceCapture(13, value => _element = value);
            builder.OpenComponent(14, componentType);
            builder.AddAttribute(15, "Node", Node);
            builder.CloseComponent();
            builder.CloseElement();
        }
Ejemplo n.º 14
0
        protected override void BuildRenderTree(RenderTreeBuilder builder)
        {
            var componentType = Diagram.GetComponentForModel(Link) ??
                                Diagram.Options.Links.DefaultLinkComponent ??
                                typeof(LinkWidget);

            builder.OpenElement(0, "g");
            builder.AddAttribute(1, "class", "link");
            builder.AddAttribute(2, "data-link-id", Link.Id);
            builder.AddAttribute(3, "onmousedown", EventCallback.Factory.Create <MouseEventArgs>(this, OnMouseDown));
            builder.AddEventStopPropagationAttribute(4, "onmousedown", true);
            builder.AddAttribute(5, "onmouseup", EventCallback.Factory.Create <MouseEventArgs>(this, OnMouseUp));
            builder.AddEventStopPropagationAttribute(6, "onmouseup", true);
            builder.AddAttribute(7, "ontouchstart", EventCallback.Factory.Create <TouchEventArgs>(this, OnTouchStart));
            builder.AddEventStopPropagationAttribute(8, "ontouchstart", true);
            builder.AddAttribute(9, "ontouchend", EventCallback.Factory.Create <TouchEventArgs>(this, OnTouchEnd));
            builder.AddEventStopPropagationAttribute(10, "ontouchend", true);
            builder.AddEventPreventDefaultAttribute(11, "ontouchend", true);
            builder.OpenComponent(12, componentType);
            builder.AddAttribute(13, "Link", Link);
            builder.CloseComponent();
            builder.CloseElement();
        }
        public static RenderTreeBuilder OnClickPreventDefault(this RenderTreeBuilder builder, bool preventDefault, [CallerLineNumber] int line = 0)
        {
            builder.AddEventPreventDefaultAttribute(GetSequence(line), "onclick", preventDefault);

            return(builder);
        }
Ejemplo n.º 16
0
 protected override void OnGenerateLabel(int sequence, RenderTreeBuilder builder)
 {
     builder.AddEventPreventDefaultAttribute(sequence, "onclick", true);
     builder.AddAttribute(sequence, "onclick", EventCallback.Factory.Create(this, OnChange));
 }
Ejemplo n.º 17
0
        protected virtual void BuildElementRenderTree(RenderTreeBuilder builder)
        {
            builder.OpenElement(0, Tag);

            //foreach (var attribute in Attributes)
            //{
            //    builder.AddAttribute(1, attribute.Key, attribute.Value);
            //}

            builder.AddMultipleAttributes(1, Attributes);

            var _class = _Class;
            var _style = _Style;

            if (!string.IsNullOrWhiteSpace(Id))
            {
                builder.AddAttribute(2, "id", Id);
            }

            if (!string.IsNullOrWhiteSpace(_class))
            {
                builder.AddAttribute(3, "class", _class);
            }

            if (!string.IsNullOrWhiteSpace(_style))
            {
                builder.AddAttribute(4, "style", _style);
            }

            if (TabIndex.HasValue)
            {
                builder.AddAttribute(5, "tabindex", Disabled.HasValue && Disabled.Value ? -1 : TabIndex);
            }

            if (OnFocus.HasDelegate)
            {
                builder.AddAttribute(6, "onfocus", EventCallback.Factory.Create <FocusEventArgs>(this, HandleFocusAsync));
            }

            if (OnBlur.HasDelegate)
            {
                builder.AddAttribute(7, "onblur", EventCallback.Factory.Create <FocusEventArgs>(this, HandleBlurAsync));
            }

            if (OnKeyDown.HasDelegate)
            {
                builder.AddAttribute(8, "onkeydown", EventCallback.Factory.Create <KeyboardEventArgs>(this, HandleKeyDownAsync));
            }

            if (OnKeyUp.HasDelegate)
            {
                builder.AddAttribute(9, "onkeyup", EventCallback.Factory.Create <KeyboardEventArgs>(this, HandleKeyUpAsync));
            }

            if (OnMouseDown.HasDelegate)
            {
                builder.AddAttribute(10, "onmousedown", EventCallback.Factory.Create <MouseEventArgs>(this, HandleMouseDownAsync));
            }

            if (OnMouseUp.HasDelegate)
            {
                builder.AddAttribute(11, "onmouseup", EventCallback.Factory.Create <MouseEventArgs>(this, HandleMouseUpAsync));
            }

            if (OnMouseEnter.HasDelegate)
            {
                builder.AddAttribute(12, "onmouseenter", EventCallback.Factory.Create <EventArgs>(this, HandleMouseEnterAsync));
            }

            if (OnMouseLeave.HasDelegate)
            {
                builder.AddAttribute(13, "onmouseleave", EventCallback.Factory.Create <EventArgs>(this, HandleMouseLeaveAsync));
            }

            if (OnMouseOver.HasDelegate)
            {
                builder.AddAttribute(14, "onmouseover", EventCallback.Factory.Create <MouseEventArgs>(this, HandleMouseOverAsync));
            }

            if (OnMouseOut.HasDelegate)
            {
                builder.AddAttribute(15, "onmouseout", EventCallback.Factory.Create <MouseEventArgs>(this, HandleMouseOutAsync));
            }

            if (OnMouseMove.HasDelegate)
            {
                builder.AddAttribute(16, "onmousemove", EventCallback.Factory.Create <MouseEventArgs>(this, HandleMouseMoveAsync));
            }

            if (OnTouchStart.HasDelegate)
            {
                builder.AddAttribute(17, "ontouchstart", EventCallback.Factory.Create <TouchEventArgs>(this, HandleTouchStartAsync));
            }

            if (OnTouchMove.HasDelegate)
            {
                builder.AddAttribute(18, "ontouchmove", EventCallback.Factory.Create <TouchEventArgs>(this, HandleTouchMoveAsync));
            }

            if (OnTouchEnd.HasDelegate)
            {
                builder.AddAttribute(19, "ontouchend", EventCallback.Factory.Create <TouchEventArgs>(this, HandleTouchEndAsync));
            }

            if (OnClick.HasDelegate)
            {
                builder.AddAttribute(20, "onclick", EventCallback.Factory.Create <EventArgs>(this, HandleClickAsync));
            }

            if (OnDrag.HasDelegate)
            {
                builder.AddAttribute(21, "ondrag", EventCallback.Factory.Create <DragEventArgs>(this, HandleDragAsync));
            }

            if (OnDrop.HasDelegate)
            {
                builder.AddAttribute(22, "ondrop", EventCallback.Factory.Create <DragEventArgs>(this, HandleDropAsync));
            }

            if (OnDragStart.HasDelegate)
            {
                builder.AddAttribute(23, "ondragstart", EventCallback.Factory.Create <DragEventArgs>(this, HandleDragStartAsync));
            }

            if (OnDragEnd.HasDelegate)
            {
                builder.AddAttribute(24, "ondragend", EventCallback.Factory.Create <DragEventArgs>(this, HandleDragEndAsync));
            }

            if (OnDragEnter.HasDelegate)
            {
                builder.AddAttribute(25, "ondragenter", EventCallback.Factory.Create <DragEventArgs>(this, HandleDragEnterAsync));
            }

            if (OnDragExit.HasDelegate)
            {
                builder.AddAttribute(26, "ondragexit", EventCallback.Factory.Create <DragEventArgs>(this, HandleDragExitAsync));
            }

            if (OnDragOver.HasDelegate)
            {
                builder.AddAttribute(27, "ondragover", EventCallback.Factory.Create <DragEventArgs>(this, HandleDragOverAsync));
            }

            if (OnDragLeave.HasDelegate)
            {
                builder.AddAttribute(28, "ondragleave", EventCallback.Factory.Create <DragEventArgs>(this, HandleDragLeaveAsync));
            }

            if (!string.IsNullOrWhiteSpace(Role))
            {
                builder.AddAttribute(29, "role", Role);
            }

            if (Disabled.HasValue)
            {
                builder.AddAttribute(30, "disabled", Disabled.Value);
            }

            if (OnClickStop.HasValue)
            {
                builder.AddEventStopPropagationAttribute(31, "onclick", OnClickStop.Value);
            }

            if (OnClickPrevent.HasValue)
            {
                builder.AddEventPreventDefaultAttribute(32, "onclick", OnClickPrevent.Value);
            }

            if (OnKeyUpStop.HasValue)
            {
                builder.AddEventStopPropagationAttribute(33, "onkeyup", OnKeyUpStop.Value);
            }

            if (OnKeyUpPrevent.HasValue)
            {
                builder.AddEventPreventDefaultAttribute(34, "onkeyup", OnKeyUpPrevent.Value);
            }

            if (ChildContent != null)
            {
                builder.AddContent(35, ChildContent(Context));
            }

            builder.AddElementReferenceCapture(36, (__value) => {
                RootRef.Current = (ElementReference)__value;
            });

            builder.CloseElement();
        }
Ejemplo n.º 18
0
            protected override void BuildRenderTree(RenderTreeBuilder b)
            {
                int seq = -1;

                b.OpenElement(++seq, "div");
                b.AddAttribute(++seq, "class", "Integrant.Element.Component Integrant.Element.Component.Combobox");
                b.AddElementReferenceCapture(++seq, elemRef => Combobox._elementRef = elemRef);

                // Input

                b.OpenElement(++seq, "div");

                var classes = new ClassSet(
                    "Integrant.Element.Component.Combobox.Input",
                    "Integrant.Element.Override.Input"
                    );

                if (Combobox._isDisabled?.Invoke() == true)
                {
                    classes.Add("Integrant.Element.Override.Input:Disabled");
                }

                if (Combobox._isRequired?.Invoke() == true && Combobox._selected == null)
                {
                    classes.Add("Integrant.Element.Override.Input:FailsRequirement");
                }

                b.AddAttribute(++seq, "class", classes.ToString());

                b.OpenElement(++seq, "input");
                b.AddAttribute(++seq, "type", "text");
                b.AddAttribute(++seq, "value", Combobox.InputValue());
                b.AddAttribute(++seq, "data-has-selection", Combobox._selected != null);
                b.AddAttribute(++seq, "disabled", Combobox._isDisabled?.Invoke() == true);
                b.AddAttribute(++seq, "required", Combobox._isRequired?.Invoke() == true);

                ++seq;
                if (Combobox._placeholder != null)
                {
                    b.AddAttribute(seq, "placeholder", Combobox._placeholder.Invoke());
                }

                b.AddAttribute(++seq, "onclick",
                               EventCallback.Factory.Create <MouseEventArgs>(this, Combobox.OnInputClick));
                b.AddAttribute(++seq, "onfocus",
                               EventCallback.Factory.Create <FocusEventArgs>(this, Combobox.OnInputFocus));
                b.AddAttribute(++seq, "onblur",
                               EventCallback.Factory.Create <FocusEventArgs>(this, Combobox.OnInputBlur));
                b.AddAttribute(++seq, "onkeydown",
                               EventCallback.Factory.Create <KeyboardEventArgs>(this, Combobox.OnInputKeyDown));
                b.AddAttribute(++seq, "oninput",
                               EventCallback.Factory.Create <ChangeEventArgs>(this, Combobox.OnInputInput));

                b.CloseElement();
                b.CloseElement();

                // Dropdown

                b.OpenElement(++seq, "div");
                b.AddAttribute(++seq, "class", "Integrant.Element.Component.Combobox.Dropdown");
                b.AddAttribute(++seq, "data-shown", Combobox._shown);

                b.OpenRegion(++seq);

                int seq2 = -1;

                for (var i = 0; i < Combobox.Options().Length; i++)
                {
                    IOption <T> o        = Combobox.Options()[i];
                    bool        selected = Combobox._selected?.Value.Equals(o.Value) == true;
                    bool        focused  = Combobox._focused?.Value.Equals(o.Value) == true;
                    bool        matches  = Combobox.Matches(o);

                    b.OpenElement(++seq2, "div");
                    b.AddAttribute(++seq, "class", "Integrant.Element.Component.Combobox.Option");
                    b.AddAttribute(++seq2, "hidden", !matches);
                    b.AddAttribute(++seq2, "data-i", i);
                    b.AddAttribute(++seq2, "data-focused", focused);
                    b.AddAttribute(++seq2, "data-selected", selected);
                    b.AddAttribute(++seq2, "data-disabled", o.Disabled);

                    b.AddAttribute(++seq2, "onmousedown",
                                   EventCallback.Factory.Create <MouseEventArgs>(this, Combobox.OnOptionMouseDown));
                    b.AddEventPreventDefaultAttribute(++seq2, "onmousedown", true);

                    b.AddAttribute(++seq2, "onclick",
                                   EventCallback.Factory.Create <MouseEventArgs>(this,
                                                                                 args => Combobox.OnOptionClick(args, o)));

                    b.AddContent(++seq2, o.OptionText);

                    b.CloseElement();
                }

                b.CloseRegion();

                b.CloseElement();

                //

                b.CloseElement();
            }