26 lines
713 B
TypeScript
26 lines
713 B
TypeScript
|
import { ModalType, ModalDetail } from '../../../../lib/types/modal.interface';
|
||
|
|
||
|
const ModalService = {
|
||
|
on(event: string, callback: (props: ModalDetail<unknown>) => void) {
|
||
|
document.addEventListener(event, (e: Event) =>
|
||
|
callback((e as CustomEvent<ModalDetail<unknown>>).detail)
|
||
|
);
|
||
|
},
|
||
|
open<T>(component: ModalType<T>, props: any = {}) {
|
||
|
return new Promise((resolve, _) => {
|
||
|
document.dispatchEvent(
|
||
|
new CustomEvent<ModalDetail<T>>('open', {
|
||
|
detail: {
|
||
|
component,
|
||
|
props,
|
||
|
resolve,
|
||
|
target: (document.activeElement as HTMLElement) || undefined,
|
||
|
},
|
||
|
})
|
||
|
);
|
||
|
});
|
||
|
},
|
||
|
};
|
||
|
|
||
|
export default ModalService;
|