示例#1
0
        public override void RenderElement(RenderContext context, Action <TagBuilder> onRender = null)
        {
            if (SkipRender(context))
            {
                return;
            }
            TagBuilder page       = null;
            Boolean    isGridPage = (Toolbar != null) || (Taskpad != null) || (Pager != null);

            // render page OR colleciton view

            void addGridAction(TagBuilder tag)
            {
                if (!isGridPage)
                {
                    return;
                }
                tag.AddCssClass("page-grid");
                if (Taskpad != null)
                {
                    if (Taskpad is Taskpad tp && tp.Width != null)
                    {
                        if (tp.Position == TaskpadPosition.Left)
                        {
                            tag.AddCssClass("taskpad-left");
                            tag.MergeStyle("grid-template-columns", $"{tp.Width.Value} 1fr");
                        }
                        else
                        {
                            tag.MergeStyle("grid-template-columns", $"1fr {tp.Width.Value}");
                        }
                    }
                }
            }

            if (CollectionView != null)
            {
                CollectionView.RenderStart(context, (tag) =>
                {
                    tag.AddCssClass("page").AddCssClass("absolute");
                    addGridAction(tag);
                    AddAttributes(tag);
                    tag.MergeAttribute("id", context.RootId);
                });
            }
            else
            {
                page = new TagBuilder("div", "page absolute");
                page.MergeAttribute("id", context.RootId);
                addGridAction(page);
                AddAttributes(page);
                if (!isGridPage)
                {
                    MergeAttributes(page, context, MergeAttrMode.Margin);
                }

                if (PrintPage != null)
                {
                    page.AddCssClass("print-target");
                    page.AddCssClass(PrintPage.Orientation.ToString().ToLowerInvariant());
                    page.MergeAttribute("v-print-page", PrintPage.ToJson());
                }

                page.RenderStart(context);
            }


            RenderTitle(context);

            if (isGridPage)
            {
                Toolbar?.RenderElement(context, (tag) => tag.AddCssClass("page-toolbar"));
                Taskpad?.RenderElement(context, (tag) => tag.AddCssClass("page-taskpad"));
                Pager?.RenderElement(context, (tag) => tag.AddCssClass("page-pager"));
                var content = new TagBuilder("div", "page-content");
                if (ChildHasWrapper)
                {
                    content.AddCssClass("with-wrapper");
                }
                MergeAttributes(content, context, MergeAttrMode.Margin);
                content.RenderStart(context);
                RenderChildren(context);
                content.RenderEnd(context);
            }
            else
            {
                RenderChildren(context);
            }

            var outer = new TagBuilder("div", "page-canvas-outer").RenderStart(context);

            new TagBuilder("div", "page-canvas").MergeAttribute("id", "page-canvas").Render(context);
            outer.RenderEnd(context);

            RenderContextMenus();
            RenderAccelCommands(context);

            if (CollectionView != null)
            {
                CollectionView.RenderEnd(context);
            }
            else
            {
                if (page == null)
                {
                    throw new InvalidProgramException();
                }
                page.RenderEnd(context);
            }
        }
示例#2
0
        internal override void RenderElement(RenderContext context, Action <TagBuilder> onRender = null)
        {
            if (SkipRender(context))
            {
                return;
            }
            TagBuilder page       = null;
            Boolean    isGridPage = (Toolbar != null) || (Taskpad != null) || (Pager != null);

            // render page OR colleciton view

            void addGridAction(TagBuilder tag)
            {
                if (!isGridPage)
                {
                    return;
                }
                tag.AddCssClass("page-grid");
                if (Taskpad != null)
                {
                    if (Taskpad is Taskpad tp && tp.Width != null)
                    {
                        tag.MergeStyle("grid-template-columns", $"1fr {tp.Width.Value}");
                    }
                }
            }

            if (CollectionView != null)
            {
                CollectionView.RenderStart(context, (tag) =>
                {
                    tag.AddCssClass("page").AddCssClass("absolute");
                    addGridAction(tag);
                    AddAttributes(tag);
                    tag.MergeAttribute("id", context.RootId);
                });
            }
            else
            {
                page = new TagBuilder("div", "page absolute");
                page.MergeAttribute("id", context.RootId);
                addGridAction(page);
                AddAttributes(page);
                page.RenderStart(context);
            }


            RenderTitle(context);

            if (isGridPage)
            {
                Toolbar?.RenderElement(context, (tag) => tag.AddCssClass("page-toolbar"));
                Taskpad?.RenderElement(context, (tag) => tag.AddCssClass("page-taskpad"));
                Pager?.RenderElement(context, (tag) => tag.AddCssClass("page-pager"));
                var content = new TagBuilder("div", "page-content").RenderStart(context);
                RenderChildren(context);
                content.RenderEnd(context);
            }
            else
            {
                RenderChildren(context);
            }

            if (CollectionView != null)
            {
                CollectionView.RenderEnd(context);
            }
            else
            {
                if (page == null)
                {
                    throw new InvalidProgramException();
                }
                page.RenderEnd(context);
            }
        }