Closed dlandtaa closed 8 months ago
Okay, I got it working, thank you for the help! For reference, here is how I did it using the Vue 3 composition API:
// inside the modal component
const emit = defineEmits([Modal.EVENT_PROMPT]);
...
async function save() {
// do some work
closeModal();
emit(Modal.EVENT_PROMPT, { my: 'data' });
}
// inside the component that shows the modal
const res = await promptModal(ModalComponent);
// res is now { my: 'data' }
async function save() { // do some work // closeModal(); You can remove this. Prompt automatically closes the window emit(Modal.EVENT_PROMPT, { my: 'data' }); }
I'm glad it works great for you!
Got it, thank you!
Is your feature request related to a problem? Please describe. I'm using Vue 3 with the composition API and I'm having trouble understanding how to return a value from the modal to the component that created it.
Describe the solution you'd like I see that there is a way in Vue 2 to use
this.$emit()
to send data back to the parent component but that doesn't work in Vue 3 with the composition api. I see that thecloseModal()
method can maybe take an argument but I'm not sure how the parent component can get access to it.Describe alternatives you've considered I can hack around it by passing an emitter (using the mitt library) to the modal component as a prop and emit events back to the parent that way. Seems like there should be a cleaner way though.
Additional context If it's not possible to return a value, I would at least like a way for the parent to know that the modal has closed.