TIP
The useDialogPluginComponent composable is part of Quasar Dialog Plugin (Invoking custom component). If you haven’t dug into it by now, please have a first read there.
This composable is to be used on the custom components which a Dialog plugin is invoked with. It will bootstrap all the necessary communication of the component with the plugin.
Syntax
import { useDialogPluginComponent } from 'quasar' setup () { const { dialogRef, onDialogHide, onDialogOK, onDialogCancel } = useDialogPluginComponent() // dialogRef - Vue ref to be applied to QDialog // onDialogHide - Function to be used as handler for @hide on QDialog // onDialogOK - Function to call to settle dialog with "ok" outcome // example: onDialogOK() - no payload // example: onDialogOK({ /*.../* }) - with payload // onDialogCancel - Function to call to settle dialog with "cancel" outcome return { dialogRef, onDialogHide } }
Full example
<template> <!-- notice dialogRef here --> <q-dialog ref="dialogRef" @hide="onDialogHide"> <q-card class="q-dialog-plugin"> <!-- ...content ... use q-card-section for it? --> <!-- buttons example --> <q-card-actions align="right"> <q-btn color="primary" label="OK" @click="onOKClick" /> <q-btn color="primary" label="Cancel" @click="onCancelClick" /> </q-card-actions> </q-card> </q-dialog> </template> <script> import { useDialogPluginComponent } from 'quasar' export default { props: { // ...your custom props }, emits: [ // REQUIRED; need to specify some events that your // component will emit through useDialogPluginComponent() ...useDialogPluginComponent.emits ], setup () { // REQUIRED; must be called inside of setup() const { dialogRef, onDialogHide, onDialogOK, onDialogCancel } = useDialogPluginComponent() // dialogRef - Vue ref to be applied to QDialog // onDialogHide - Function to be used as handler for @hide on QDialog // onDialogOK - Function to call to settle dialog with "ok" outcome // example: onDialogOK() - no payload // example: onDialogOK({ /*.../* }) - with payload // onDialogCancel - Function to call to settle dialog with "cancel" outcome return { // This is REQUIRED; // Need to inject these (from useDialogPluginComponent() call) // into the vue scope for the vue html template dialogRef, onDialogHide, // other methods that we used in our vue html template; // these are part of our example (so not required) onOKClick () { // on OK, it is REQUIRED to // call onDialogOK (with optional payload) onDialogOK() // or with payload: onDialogOK({ ... }) // ...and it will also hide the dialog automatically }, // we can passthrough onDialogCancel directly onCancelClick: onDialogCancel } } } </script>