Skip to content

useConfirmDialog

useConfirmDialog è una funzione progettata per creare dialog di conferma personalizzabili in progetti Nuxt, utilizzando la libreria vuetify-use-dialog. Include opzioni predefinite e un'opzione di countdown che aggiunge un contatore prima che l'utente possa confermare o annullare l'azione.

Per prima cosa bisogna creare il plugin di nuxt nella cartella plugins

typescript
import VuetifyUseDialog from 'vuetify-use-dialog'

export default defineNuxtPlugin((app) => {
  app.vueApp.use(VuetifyUseDialog)
})
import VuetifyUseDialog from 'vuetify-use-dialog'

export default defineNuxtPlugin((app) => {
  app.vueApp.use(VuetifyUseDialog)
})

Opzioni:

ParametroDescrizioneDefault
titleTitolo del dialog di conferma$i18n.t('msg.are_you_sure')
contentContenuto del messaggio di conferma$i18n.t('msg.action_is_permanent')
countdownNumero di secondi per il countdown prima della conferma3
cardPropsProprietà per il componente v-card, usato per personalizzare lo stile del dialog{ maxWidth: 350 }
dialogPropsProprietà per il componente v-dialog, usato per configurare il comportamento del dialog{ maxWidth: 350 }
confirmationTextTesto per il pulsante di conferma$i18n.t('btn.confirm')
cancellationTextTesto per il pulsante di annullamento$i18n.t('btn.cancel')
confirmationButtonPropsProprietà per il pulsante di conferma{ color: 'error' }
cancellationButtonPropsProprietà per il pulsante di annullamento{ variant: 'text', color: 'grey' }

Esempio di utilizzo:

typescript
const confirm = useConfirmDialog()

const confirmed = await confirm.ask({
    // opzioni
    title: t('msg.reset_settings'),
    content: t('msg.reset_warning'),
    countdown: 10,
    confirmationButtonProps: {
      color: 'blue',
      variant: 'outlined',
    },
    cancellationButtonProps: {
      color: 'grey',
      icon: 'mdi-close',
    },
    confirmationText: t('btn.reset'),
    cancellationText: t('btn.cancel'),
})

if(confirmed) {
  // azione da eseguire se l'utente conferma
}
const confirm = useConfirmDialog()

const confirmed = await confirm.ask({
    // opzioni
    title: t('msg.reset_settings'),
    content: t('msg.reset_warning'),
    countdown: 10,
    confirmationButtonProps: {
      color: 'blue',
      variant: 'outlined',
    },
    cancellationButtonProps: {
      color: 'grey',
      icon: 'mdi-close',
    },
    confirmationText: t('btn.reset'),
    cancellationText: t('btn.cancel'),
})

if(confirmed) {
  // azione da eseguire se l'utente conferma
}