Skip to content

Commit 9910602

Browse files
committed
feat: BootstrapDialog event hooks
1 parent d238db4 commit 9910602

1 file changed

Lines changed: 37 additions & 0 deletions

File tree

src/hooks/BootstrapDialog.js

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
wrap(() => {
2+
function setter(key, args) {
3+
const original = args[`on${key}`];
4+
function wrapper(dialog) {
5+
if (typeof original === 'function') {
6+
original(dialog);
7+
}
8+
eventManager.emit(`BootstrapDialog:${key}`, dialog);
9+
}
10+
return wrapper;
11+
}
12+
13+
function construct(Target, [args = {}]) {
14+
const obj = new Target({
15+
...args,
16+
onshow: setter('show', args),
17+
onshown: setter('shown', args),
18+
onhide: setter('hide', args),
19+
onhidden: setter('hidden', args),
20+
});
21+
eventManager.emit('BootstrapDialog:create', obj);
22+
return obj;
23+
}
24+
25+
function get(target, prop, R) {
26+
if (prop === 'show') {
27+
return (o = {}) => new R(o).open();
28+
}
29+
return Reflect.get(target, prop, R);
30+
}
31+
32+
eventManager.on(':load', () => {
33+
if (window.BootstrapDialog) {
34+
window.BootstrapDialog = new Proxy(window.BootstrapDialog, { construct, get });
35+
}
36+
});
37+
});

0 commit comments

Comments
 (0)