Skip to content

Commit fdbe66f

Browse files
committed
refactor: 支持服务器端无 Key 逻辑
1 parent d0e0b02 commit fdbe66f

2 files changed

Lines changed: 13 additions & 12 deletions

File tree

src/components/BootstrapBlazor.DockView/wwwroot/js/dockview-extensions.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,15 +62,14 @@ DockviewComponent.prototype.removeGroup = function(...args) {
6262
}
6363

6464
const closePanel = DockviewGroupPanelModel.prototype.closePanel;
65-
DockviewGroupPanelModel.prototype.closePanel = function(panel, triggerVisibleChangedCallback = true) {
65+
DockviewGroupPanelModel.prototype.closePanel = function(panel, triggerVisibleChangedCallback = true, moveToTemplate = true) {
6666
if (!panel.group.locked) {
6767
closePanel.call(this, panel);
6868
if (triggerVisibleChangedCallback) {
6969
this.accessor._panelVisibleChanged?.fire({ key: panel.params.key, status: false });
7070
}
7171
}
7272

73-
const moveToTemplate = !this.accessor.firstLoad;
7473
if (moveToTemplate) {
7574
if (panel.view.content.element) {
7675
if (panel.titleMenuEle) {

src/components/BootstrapBlazor.DockView/wwwroot/js/dockview-utils.js

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@ const cerateDockview = (el, options) => {
2121
createComponent: option => new DockviewPanelContent(option)
2222
});
2323
initDockview(dockview, options, template);
24-
dockview.firstLoad = true;
2524
dockview.init();
2625
return dockview;
2726
}
@@ -34,7 +33,6 @@ const initDockview = (dockview, options, template) => {
3433
const config = getConfig(options);
3534
dockview.params.floatingGroups = config.floatingGroups || []
3635
dockview.fromJSON(config);
37-
// window.dockview = dockview;
3836
}
3937

4038
dockview.switchTheme = theme => {
@@ -46,7 +44,6 @@ const initDockview = (dockview, options, template) => {
4644
}
4745

4846
dockview.update = options => {
49-
dockview.isUpdating = true;
5047
if (dockview.params.options.lock !== options.lock) {
5148
dockview.params.options.lock = options.lock;
5249
toggleGroupLock(dockview, options);
@@ -61,8 +58,6 @@ const initDockview = (dockview, options, template) => {
6158
else {
6259
toggleComponent(dockview, options);
6360
}
64-
dockview.firstLoad = false;
65-
dockview.isUpdating = false;
6661
}
6762

6863
dockview.reset = options => {
@@ -98,10 +93,12 @@ const initDockview = (dockview, options, template) => {
9893
if (options.enableLocalStorage) {
9994
panels.forEach(panel => {
10095
const visible = panel.params.visible
101-
if (!visible) {
96+
if (visible) {
97+
dockview._panelVisibleChanged?.fire({ key: panel.params.key, status: true });
98+
}
99+
else {
102100
panel.group.model.closePanel(panel)
103101
}
104-
dockview._panelVisibleChanged?.fire({ key: panel.params.key, status: visible });
105102
})
106103
delPanels.forEach(panel => {
107104
dockview._panelVisibleChanged?.fire({ key: panel.params.key, status: false });
@@ -133,7 +130,7 @@ const initDockview = (dockview, options, template) => {
133130
dockview.groups.forEach(group => {
134131
observeGroup(group)
135132
})
136-
dockview.element.querySelector('&>.dv-dockview>.dv-branch-node').addEventListener('click', function (e) {
133+
dockview.element.querySelector('&>.dv-dockview>.dv-branch-node').addEventListener('click', function(e) {
137134
this.parentElement.querySelectorAll('&>.dv-resize-container-drawer, &>.dv-render-overlay-float-drawer').forEach(item => {
138135
item.classList.remove('active')
139136
})
@@ -239,7 +236,7 @@ const toggleComponent = (dockview, options) => {
239236
addGroupWithPanel(dockview, panel, panels, indexOfOptions);
240237
}
241238
else {
242-
if ( pan.title !== p.title ) {
239+
if (pan.title !== p.title) {
243240
pan.setTitle(p.title)
244241
}
245242
pan._params = {
@@ -248,12 +245,17 @@ const toggleComponent = (dockview, options) => {
248245
}
249246
}
250247
})
248+
251249
localPanels.forEach(item => {
252250
let pan = findContentFromPanels(panels, item);
253251
if (pan === void 0) {
254252
item.group.delPanelIndex = item.group.panels.findIndex(p => p.params.key == item.params.key);
255253
const group = item.group;
256-
group.model.closePanel(item, false)
254+
255+
const moveToTemplate = dockview.firstLoad ?? false;
256+
group.model.closePanel(item, false, moveToTemplate);
257+
dockview.firstLoad = true;
258+
257259
if (group.panels.length === 0) {
258260
dockview.setVisible(group, false)
259261
}

0 commit comments

Comments
 (0)