icynet-admin/components/common/Modal/services/ModalService.ts

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;