Skip to content

Commit 01c4b9c

Browse files
committed
refactor: 更新是否触发面板可见回调事件逻辑
1 parent 0e7c357 commit 01c4b9c

3 files changed

Lines changed: 6 additions & 79 deletions

File tree

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

Lines changed: 2 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -54,16 +54,6 @@ DockviewComponent.prototype.removeGroup = function(...args) {
5454
panel.api.close()
5555
})
5656
this.setVisible(group, false)
57-
58-
// let delPanelsStr = localStorage.getItem(this.params.options.localStorageKey + '-panels')
59-
// let delPanels = delPanelsStr ? JSON.parse(delPanelsStr) : delPanelsStr
60-
// delPanels = delPanels?.map(panel => {
61-
// if (panel.groupId == group.id) {
62-
// panel.groupInvisible = true
63-
// }
64-
// return panel
65-
// })
66-
// delPanels && localStorage.setItem(this.params.options.localStorageKey + '-panels', JSON.stringify(delPanels))
6757
}
6858
else if (type == 'floating') {
6959
removeDrawerBtn(group)
@@ -72,11 +62,10 @@ DockviewComponent.prototype.removeGroup = function(...args) {
7262
}
7363

7464
const closePanel = DockviewGroupPanelModel.prototype.closePanel;
75-
DockviewGroupPanelModel.prototype.closePanel = function(panel) {
76-
console.log(panel);
65+
DockviewGroupPanelModel.prototype.closePanel = function(panel, triggerVisibleChangedCallback = true) {
7766
if (!panel.group.locked) {
7867
closePanel.call(this, panel);
79-
if (!this.accessor.isClearing && this.accessor.isUpdating !== true) {
68+
if (triggerVisibleChangedCallback) {
8069
this.accessor._panelVisibleChanged?.fire({ key: panel.params.key, status: false });
8170
}
8271
}

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

Lines changed: 3 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { getIcons, getIcon } from "./dockview-icon.js"
1+
import { getIcons, getIcon } from "./dockview-icon.js"
22
import { deletePanel, findContentFromPanels, moveAlwaysRenderPanel } from "./dockview-panel.js"
33
import { saveConfig } from "./dockview-config.js"
44
import { observeGroup } from "./dockview-utils.js"
@@ -41,18 +41,6 @@ const addPanelWidthGroupId = (dockview, panel, index) => {
4141
let { rect = {}, packup, floatType, drawer, direction = 'left' } = panel.params || {}
4242
if (!group) {
4343
group = dockview.createGroup({ id: panel.groupId })
44-
// const floatingGroupPosition = isMaximized ? {
45-
// x: 0, y: 0,
46-
// width: dockview.width,
47-
// height: dockview.height
48-
// } : {
49-
// x: currentPosition?.left || 0,
50-
// y: currentPosition?.top || 0,
51-
// width: currentPosition?.width,
52-
// height: currentPosition?.height
53-
// }
54-
// dockview.addFloatingGroup(group, floatingGroupPosition, { skipRemoveGroup: true })
55-
// createGroupActions(group);
5644
const width = dockview.width > 500 ? 500 : (dockview.width - 10)
5745
const height = dockview.height > 460 ? 460 : (dockview.height - 10)
5846
const left = (dockview.width - width) / 2
@@ -74,23 +62,16 @@ const addPanelWidthGroupId = (dockview, panel, index) => {
7462
if (floatType == 'drawer') {
7563
setTimeout(() => createDrawerHandle(group, direction == 'right'), 0);
7664
}
77-
// const floatingGroup = createFloatingGroup(group, floatingGroupRect)
78-
const autoHideBtn = group.header.rightActionsContainer.querySelector('.bb-dockview-control-icon-autohide')
79-
if (autoHideBtn) {
80-
// autoHideBtn.style.display = 'none'
81-
}
82-
83-
// saveConfig(dockview)
8465
}
8566
else {
8667
if (group.api.location.type === 'grid') {
8768
let isVisible = dockview.isVisible(group)
8869
if (isVisible === false) {
8970
dockview.setVisible(group, true)
90-
// isMaximized && group.api.maximize();
9171
}
9272
}
9373
}
74+
9475
dockview.addPanel({
9576
id: panel.id,
9677
title: panel.title,
@@ -99,11 +80,10 @@ const addPanelWidthGroupId = (dockview, panel, index) => {
9980
position: { referenceGroup: group, index: index || 0 },
10081
params: { ...panel.params, rect, packup, visible: true }
10182
})
102-
dockview.isUpdating !== true && dockview._panelVisibleChanged?.fire({ key: panel.params.key, status: true });
10383
}
10484

10585
const addPanelWidthCreatGroup = (dockview, panel, panels) => {
106-
let { position = {}, currentPosition, packupHeight, isPackup, isMaximized } = panel.params || {}
86+
let { position = {}, packupHeight, isPackup, isMaximized } = panel.params || {}
10787
let brothers = panels.filter(p => p.params.parentId == panel.params.parentId && p.id != panel.id)
10888
let group, direction
10989
if (brothers.length > 0 && brothers[0].params.parentType == 'group') {
@@ -138,7 +118,6 @@ const addPanelWidthCreatGroup = (dockview, panel, panels) => {
138118
}
139119
if (direction) option.position.direction = direction
140120
dockview.addPanel(option);
141-
dockview.isUpdating !== true && dockview._panelVisibleChanged?.fire({ key: panel.params.key, status: true });
142121
}
143122

144123
const getOrientation = function (child, group) {
@@ -178,37 +157,6 @@ const createGroupActions = (group, groupType) => {
178157
}, 0)
179158
addActionEvent(group, actionContainer);
180159
}
181-
const observeDisplayChange = (icon, group) => {
182-
const dockview = group.api.accessor
183-
const element = icon.querySelector('.dropdown-menu')
184-
const mutationObserver = new MutationObserver((mutations) => {
185-
mutations.forEach(mutation => {
186-
if (mutation.attributeName == 'class') {
187-
if(mutation.target.classList.contains('show')) {
188-
const currentPanelEle = group.activePanel.view.content.element.parentElement
189-
const childEle = currentPanelEle.children[0]
190-
group.element.querySelector('&>.dv-content-container').append(childEle)
191-
currentPanelEle.style.zIndex = -1
192-
childEle.wrapperEle = currentPanelEle
193-
}
194-
else {
195-
const panelEleList = [...group.element.querySelector('&>.dv-content-container').children].map(item => {
196-
const wrapperEle = item.wrapperEle
197-
delete item.wrapperEle
198-
wrapperEle.append(item)
199-
return wrapperEle
200-
})
201-
group.element.parentElement.parentElement.append(...panelEleList)
202-
}
203-
}
204-
})
205-
});
206-
group.mutationObserver = mutationObserver
207-
mutationObserver.observe(element, {
208-
attributes: true,
209-
attributeFilter: ["class"],
210-
});
211-
}
212160

213161
const disposeGroup = group => {
214162
const { observer } = group.api.accessor.params;

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

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -122,20 +122,11 @@ const initDockview = (dockview, options, template) => {
122122
fg.group.element.parentElement.style.inset = [top, right, bottom, left]
123123
.map(item => typeof item == 'number' ? (item + 'px') : 'auto').join(' ')
124124

125-
// fg.overlay.onDidChangeEnd(e => {
126-
// saveConfig(dockview);
127-
// })
128125
observeOverlayChange(fg.overlay, fg.group)
129126
const { floatType, direction } = fg.group.getParams();
130127
if (floatType == 'drawer') {
131128
createDrawerHandle(fg.group, direction == 'right')
132129
}
133-
else {
134-
const autoHideBtn = fg.group.header.rightActionsContainer.querySelector('.bb-dockview-control-icon-autohide')
135-
if (autoHideBtn) {
136-
// autoHideBtn.style.display = 'none'
137-
}
138-
}
139130
observeFloatingGroupLocationChange(fg.group)
140131
})
141132

@@ -245,7 +236,6 @@ const toggleComponent = (dockview, options) => {
245236
const groupPanels = panels.filter(p1 => p1.params.parentId == p.params.parentId);
246237
let indexOfOptions = groupPanels.findIndex(p => p.params.key == panel?.params.key);
247238
indexOfOptions = indexOfOptions == -1 ? 0 : indexOfOptions;
248-
// const index = panel && panel.params.index
249239
addGroupWithPanel(dockview, panel, panels, indexOfOptions);
250240
}
251241
else {
@@ -263,7 +253,7 @@ const toggleComponent = (dockview, options) => {
263253
if (pan === void 0) {
264254
item.group.delPanelIndex = item.group.panels.findIndex(p => p.params.key == item.params.key);
265255
const group = item.group;
266-
group.model.closePanel(item)
256+
group.model.closePanel(item, false)
267257
if (group.panels.length === 0) {
268258
dockview.setVisible(group, false)
269259
}

0 commit comments

Comments
 (0)