Skip to content

⬅️ Back to Table of Contents

📄 index.ts

📊 Analysis Summary

Metric Count
🔧 Functions 4
📦 Imports 8
📊 Variables & Constants 1
⚡ Async/Await Patterns 2
🟢 Vue Composition API 1
📐 Interfaces 1
📑 Type Aliases 1

📚 Table of Contents

🛠️ File Location:

📂 packages/core/useConfirmDialog/index.ts

📦 Imports

Name Source
EventHook @vueuse/shared
EventHookOn @vueuse/shared
ComputedRef vue
ShallowRef vue
createEventHook @vueuse/shared
noop @vueuse/shared
computed vue
shallowRef vue

Variables & Constants

Name Type Kind Value Exported
_resolve (arg0: UseConfirmDialogRevealResult<ConfirmData, CancelData>) => void let/var noop

Async/Await Patterns

Type Function Await Expressions Promise Chains
promise-chain useConfirmDialog none new Promise(...)
promise-chain reveal none new Promise(...)

Vue Composition API

Name Type Reactive Variables Composables
computed computed none none

Functions

useConfirmDialog(revealed: ShallowRef<boolean>): UseConfirmDialogReturn<RevealData, ConfirmData, CancelData>

Code
export function useConfirmDialog<
  RevealData = any,
  ConfirmData = any,
  CancelData = any,
>(
  revealed: ShallowRef<boolean> = shallowRef(false),
): UseConfirmDialogReturn<RevealData, ConfirmData, CancelData> {
  const confirmHook: EventHook = createEventHook<ConfirmData>()
  const cancelHook: EventHook = createEventHook<CancelData>()
  const revealHook: EventHook = createEventHook<RevealData>()

  let _resolve: (arg0: UseConfirmDialogRevealResult<ConfirmData, CancelData>) => void = noop

  const reveal = (data?: RevealData) => {
    revealHook.trigger(data)
    revealed.value = true

    return new Promise<UseConfirmDialogRevealResult<ConfirmData, CancelData>>((resolve) => {
      _resolve = resolve
    })
  }

  const confirm = (data?: ConfirmData) => {
    revealed.value = false
    confirmHook.trigger(data)

    _resolve({ data, isCanceled: false })
  }

  const cancel = (data?: CancelData) => {
    revealed.value = false
    cancelHook.trigger(data)
    _resolve({ data, isCanceled: true })
  }

  return {
    isRevealed: computed(() => revealed.value),
    reveal,
    confirm,
    cancel,
    onReveal: revealHook.on,
    onConfirm: confirmHook.on,
    onCancel: cancelHook.on,
  }
}
  • JSDoc:

    /**
     * Hooks for creating confirm dialogs. Useful for modal windows, popups and logins.
     *
     * @see https://vueuse.org/useConfirmDialog/
     * @param revealed `boolean` `ref` that handles a modal window
     */
    

  • Parameters:

  • revealed: ShallowRef<boolean>
  • Return Type: UseConfirmDialogReturn<RevealData, ConfirmData, CancelData>
  • Calls:
  • createEventHook (from @vueuse/shared)
  • revealHook.trigger
  • confirmHook.trigger
  • _resolve
  • cancelHook.trigger
  • computed (from vue)

reveal(data: RevealData): Promise<UseConfirmDialogRevealResult<ConfirmData, CancelData>>

Code
(data?: RevealData) => {
    revealHook.trigger(data)
    revealed.value = true

    return new Promise<UseConfirmDialogRevealResult<ConfirmData, CancelData>>((resolve) => {
      _resolve = resolve
    })
  }
  • Parameters:
  • data: RevealData
  • Return Type: Promise<UseConfirmDialogRevealResult<ConfirmData, CancelData>>
  • Calls:
  • revealHook.trigger

confirm(data: ConfirmData): void

Code
(data?: ConfirmData) => {
    revealed.value = false
    confirmHook.trigger(data)

    _resolve({ data, isCanceled: false })
  }
  • Parameters:
  • data: ConfirmData
  • Return Type: void
  • Calls:
  • confirmHook.trigger
  • _resolve

cancel(data: CancelData): void

Code
(data?: CancelData) => {
    revealed.value = false
    cancelHook.trigger(data)
    _resolve({ data, isCanceled: true })
  }
  • Parameters:
  • data: CancelData
  • Return Type: void
  • Calls:
  • cancelHook.trigger
  • _resolve

Interfaces

UseConfirmDialogReturn<RevealData, ConfirmData, CancelData>

Interface Code
export interface UseConfirmDialogReturn<RevealData, ConfirmData, CancelData> {
  /**
   * Revealing state
   */
  isRevealed: ComputedRef<boolean>

  /**
   * Opens the dialog.
   * Create promise and return it. Triggers `onReveal` hook.
   */
  reveal: (data?: RevealData) => Promise<UseConfirmDialogRevealResult<ConfirmData, CancelData>>

  /**
   * Confirms and closes the dialog. Triggers a callback inside `onConfirm` hook.
   * Resolves promise from `reveal()` with `data` and `isCanceled` ref with `false` value.
   * Can accept any data and to pass it to `onConfirm` hook.
   */
  confirm: (data?: ConfirmData) => void

  /**
   * Cancels and closes the dialog. Triggers a callback inside `onCancel` hook.
   * Resolves promise from `reveal()` with `data` and `isCanceled` ref with `true` value.
   * Can accept any data and to pass it to `onCancel` hook.
   */
  cancel: (data?: CancelData) => void

  /**
   * Event Hook to be triggered right before dialog creating.
   */
  onReveal: EventHookOn<RevealData>

  /**
   * Event Hook to be called on `confirm()`.
   * Gets data object from `confirm` function.
   */
  onConfirm: EventHookOn<ConfirmData>

  /**
   * Event Hook to be called on `cancel()`.
   * Gets data object from `cancel` function.
   */
  onCancel: EventHookOn<CancelData>
}

Properties

Name Type Optional Description
isRevealed ComputedRef<boolean>
reveal (data?: RevealData) => Promise<UseConfirmDialogRevealResult<ConfirmData, CancelData>>
confirm (data?: ConfirmData) => void
cancel (data?: CancelData) => void
onReveal EventHookOn<RevealData>
onConfirm EventHookOn<ConfirmData>
onCancel EventHookOn<CancelData>

Type Aliases

UseConfirmDialogRevealResult<C, D>

type UseConfirmDialogRevealResult<C, D> = {
    data?: C
    isCanceled: false
  } | {
    data?: D
    isCanceled: true
  };