public HeaderPanel(object header, object body, string width = null)
        {
            this.SetClass("header-panel");

            if (width != null)
            {
                this.Styles["width"] = width;
            }

            var dcHeader = new DumpContainer {
                Content = header
            };
            var divHeader = new Div(dcHeader);

            divHeader.SetClass("header-panel--header");

            var dcBody = new DumpContainer();

            if (body != null)
            {
                if (body is RefreshPanel)
                {
                    dcBody.Content = body;
                }
                else
                {
                    ControlExtensions.AddPadding(dcBody, body).GetAwaiter().GetResult();
                }
            }

            var divBody = new Div(dcBody);

            divBody.SetClass("header-panel--body");

            var divContainer = new Div(divHeader, divBody);

            divContainer.SetClass("header-panel--container");

            this.VisualTree.Add(divContainer);
        }
Exemple #2
0
        public async Task <object> Render()
        {
            Container?.RemoveClass("blade-hidden");
            try
            {
                var dc = new DumpContainer();

                var buttons = new List <Control>();

                if (Index != -1)
                {
                    buttons.Add(new IconButton(Icons.Refresh, (_) =>
                    {
                        Manager.PopTo(Index, true);
                    }, theme: Theme.PrimaryAlternate));
                }

                if (Index == 0 && Manager.ShowDebugButton)
                {
                    buttons.Add(new IconButton(Icons.Duck, (_) =>
                    {
                        Manager.DebugHtml();
                    }, theme: Theme.PrimaryAlternate));
                }

                if (Index != 0)
                {
                    buttons.Add(new IconButton(Icons.Close, (_) =>
                    {
                        if (Index == -1)
                        {
                            Manager.CloseSideBlade(false);
                        }
                        else
                        {
                            Manager.PopTo(Index - 1, false);
                        }
                    }, theme: Theme.PrimaryAlternate));
                }

                _titleH1 = Element("h1", null, string.IsNullOrEmpty(Title) ? " " : Title);

                var div = Div("blade-panel",
                              Div("blade-header",
                                  _titleH1,
                                  Element("aside", null, buttons.ToArray())
                                  ),
                              Div("blade-content", dc)
                              );

                await ControlExtensions.AddPadding(dc, Renderer.Render(this));

                return(div);
            }
            catch (Exception ex)
            {
                return(Layout.Padding(true).Vertical(
                           Typography.H2(ex.GetType().Name),
                           Typography.P(ex.Message),
                           new CollapsablePanel("Stack Trace", Typography.Code(ex.StackTrace))));
            }
        }