Skip to content

Commit 7dc648a

Browse files
committed
refactor: base-popover 重构代码
1 parent 2706b13 commit 7dc648a

File tree

3 files changed

+24
-7
lines changed

3 files changed

+24
-7
lines changed

src/BootstrapBlazor/Components/Button/SlideButton.razor.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,6 @@ export function dispose(id) {
6161
if (SlideButton.items.length === 0) {
6262
EventHandler.off(document, 'click', closePopup)
6363
}
64-
6564
}
6665

6766
const reset = slide => {

src/BootstrapBlazor/Components/Select/Select.razor.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,5 +50,8 @@ export function dispose(id) {
5050

5151
if (select) {
5252
unregisterSelect(select);
53+
if (select.popover) {
54+
Popover.dispose(select.popover);
55+
}
5356
}
5457
}

src/BootstrapBlazor/wwwroot/modules/base-popover.js

Lines changed: 21 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { getDescribedElement, getDescribedOwner, hackTooltip, hackPopover, isDisabled } from "./utility.js"
1+
import { getDescribedElement, getDescribedOwner, hackTooltip, hackPopover, isDisabled, registerBootstrapBlazorModule } from "./utility.js"
22
import EventHandler from "./event-handler.js"
33

44
const Popover = {
@@ -131,7 +131,7 @@ const Popover = {
131131
}
132132
}
133133

134-
const closePopover = e => {
134+
popover.closePopover = e => {
135135
const selector = `.${popover.class}.show`;
136136
const el = e.target;
137137
if (el.closest(selector)) {
@@ -161,11 +161,20 @@ const Popover = {
161161
}
162162
})
163163

164-
if (!window.bb_dropdown) {
165-
window.bb_dropdown = true
164+
const module = registerBootstrapBlazorModule('Popover', {
165+
handle: false,
166+
items: [],
167+
registerClosePopupHandler: function () {
168+
if (this.handle === false) {
169+
this.handle = true;
170+
171+
EventHandler.on(document, 'click', popover.closePopover);
172+
}
173+
}
174+
});
175+
module.registerClosePopupHandler();
176+
module.items.push(popover);
166177

167-
EventHandler.on(document, 'click', closePopover);
168-
}
169178

170179
// update handler
171180
if (popover.toggleMenu) {
@@ -207,6 +216,12 @@ const Popover = {
207216
EventHandler.off(popover.el, 'hide.bs.popover')
208217
EventHandler.off(popover.el, 'click', '.dropdown-toggle')
209218
EventHandler.off(popover.toggleMenu, 'click', '.dropdown-item')
219+
220+
const { Popover } = window.BootstrapBlazor;
221+
Popover.items.pop(popover)
222+
if (Popover.items.length === 0) {
223+
EventHandler.off(document, 'click', popover.closePopover)
224+
}
210225
}
211226
else {
212227
EventHandler.off(popover.el, 'show.bs.dropdown')

0 commit comments

Comments
 (0)