Skip to content

Commit 714d065

Browse files
committed
feat: 增加渲染 Active/Inactive 标签页逻辑
1 parent 76233bf commit 714d065

5 files changed

Lines changed: 64 additions & 24 deletions

File tree

src/components/BootstrapBlazor.DockView/Components/DockViewComponent.razor.cs renamed to src/components/BootstrapBlazor.DockView/Components/DockViewComponent.cs

Lines changed: 38 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,17 @@
1-
// Copyright (c) Argo Zhang (argo@163.com). All rights reserved.
1+
// Copyright (c) Argo Zhang (argo@163.com). All rights reserved.
22
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
33
// Website: https://www.blazor.zone or https://argozhang.github.io/
44

55
using Microsoft.AspNetCore.Components;
6+
using Microsoft.AspNetCore.Components.Rendering;
67
using System.Text.Json.Serialization;
78

89
namespace BootstrapBlazor.Components;
910

1011
/// <summary>
1112
/// DockContentItem 配置项子项对标 content 配置项内部 content 配置
1213
/// </summary>
13-
public partial class DockViewComponent
14+
public class DockViewComponent : DockViewComponentBase
1415
{
1516
/// <summary>
1617
/// 获得/设置 组件是否显示 Header 默认 true 显示
@@ -143,6 +144,41 @@ protected override void OnInitialized()
143144
Type = DockViewContentType.Component;
144145
}
145146

147+
/// <summary>
148+
/// <inheritdoc/>
149+
/// </summary>
150+
/// <param name="builder"></param>
151+
protected override void BuildRenderTree(RenderTreeBuilder builder)
152+
{
153+
builder.OpenElement(0, "div");
154+
builder.AddAttribute(10, "id", Id);
155+
builder.AddAttribute(20, "class", "bb-dockview-panel");
156+
builder.AddAttribute(30, "data-bb-key", Key);
157+
builder.AddAttribute(40, "data-bb-title", Title);
158+
159+
if (TitleTemplate != null)
160+
{
161+
builder.OpenElement(50, "div");
162+
builder.AddAttribute(51, "class", "bb-dockview-item-title");
163+
builder.AddContent(53, TitleTemplate);
164+
builder.CloseElement();
165+
}
166+
else if (ShowTitleBar)
167+
{
168+
builder.OpenComponent<DockViewTitleBar>(60);
169+
builder.AddAttribute(61, nameof(DockViewTitleBar.BarIcon), TitleBarIcon);
170+
builder.AddAttribute(62, nameof(DockViewTitleBar.BarIconUrl), TitleBarIconUrl);
171+
builder.AddAttribute(63, nameof(DockViewTitleBar.OnClickBarCallback), OnClickBar);
172+
builder.CloseComponent();
173+
}
174+
175+
if (Visible)
176+
{
177+
//builder.AddContent(70, ChildContent);
178+
}
179+
builder.CloseElement();
180+
}
181+
146182
private async Task OnClickBar()
147183
{
148184
if (OnClickTitleBarCallback != null)

src/components/BootstrapBlazor.DockView/Components/DockViewComponent.razor

Lines changed: 0 additions & 18 deletions
This file was deleted.

src/components/BootstrapBlazor.DockView/Components/DockViewRenderMode.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,8 @@ public enum DockViewRenderMode
2424
Always,
2525

2626
/// <summary>
27-
/// <para lang="zh">可见版面渲染 不可见版面异步渲染</para>
28-
/// <para lang="en">Render visible layout, asynchronously render invisible layout</para>
27+
/// <para lang="zh">部分渲染 可见版面渲染 不可见版面异步渲染</para>
28+
/// <para lang="en"></para>
2929
/// </summary>
3030
Partial
3131
}

src/components/BootstrapBlazor.DockView/Components/DockViewV2.razor

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
@inherits BootstrapModuleComponentBase
1+
@inherits BootstrapModuleComponentBase
22
@attribute [JSModuleAutoLoader("./_content/BootstrapBlazor.DockView/Components/DockViewV2.razor.js", JSObjectReference = true)]
33

44
<div @attributes="@AdditionalAttributes" id="@Id" class="@ClassString">

src/components/BootstrapBlazor.DockView/Components/DockViewV2.razor.js

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { addLink, getTheme } from '../../BootstrapBlazor/modules/utility.js'
1+
import { addLink, getTheme } from '../../BootstrapBlazor/modules/utility.js'
22
import { cerateDockview } from '../js/dockview-utils.js'
33
import Data from '../../BootstrapBlazor/modules/data.js'
44
import EventHandler from "../../BootstrapBlazor/modules/event-handler.js"
@@ -32,10 +32,32 @@ export async function init(id, invoke, options) {
3232
dockview.on('groupSizeChanged', () => {
3333
invoke.invokeMethodAsync(options.splitterCallback);
3434
});
35+
dockview.on('loadActiveTabs', tabs => {
36+
invoke.invokeMethodAsync(options.loadActiveTabs, tabs);
37+
});
38+
dockview.on('loadInactiveTabs', tabs => {
39+
invoke.invokeMethodAsync(options.loadInactiveTabs, tabs);
40+
});
3541

3642
EventHandler.on(document, 'changed.bb.theme', updateTheme);
3743
}
3844

45+
export function reloadActiveTab() {
46+
const dock = Data.get(id)
47+
if (dock) {
48+
const { dockview } = dock;
49+
dockview.reloadActiveTab();
50+
}
51+
}
52+
53+
export function reloadInactiveTab() {
54+
const dock = Data.get(id)
55+
if (dock) {
56+
const { dockview } = dock;
57+
dockview.reloadInactiveTab();
58+
}
59+
}
60+
3961
export function update(id, options) {
4062
const dock = Data.get(id)
4163
if (dock) {

0 commit comments

Comments
 (0)