Skip to content

Preview Dialog ​

File Information ​

  • Path: components/dam/Dialogs/PreviewDialog.vue
  • Purpose: Full-screen asset preview with navigation and actions

Overview ​

The Preview Dialog component provides a full-screen preview interface for viewing assets with navigation controls, zoom functionality, and action buttons. It supports images, videos, PDFs, and other file types.

Key Features ​

  1. Asset Preview

    • Full-screen preview
    • Image preview
    • Video playback
    • PDF viewer
    • Document preview
  2. Navigation

    • Previous asset navigation
    • Next asset navigation
    • Keyboard shortcuts
    • Asset list navigation
  3. Zoom Controls

    • Zoom in/out
    • Pan functionality
    • Fit to screen
    • Reset zoom
  4. Actions

    • Download asset
    • Share asset
    • Edit asset
    • Delete asset
    • View details
  5. Asset Information

    • Asset name display
    • Asset metadata
    • File size and type
    • Creation date

Props ​

javascript
{
  dialog: {
    type: Boolean,
    default: false
  },
  asset: {
    type: Object,
    required: true
  },
  assetList: {
    type: Array,
    default: () => []
    // List of assets for navigation
  },
  currentIndex: {
    type: Number,
    default: 0
    // Current asset index in list
  }
}

Data Properties ​

javascript
{
  zoomLevel: 1,        // Zoom level (1 = 100%)
  panning: false,     // Panning state
  panStart: null,     // Pan start position
  loading: false     // Loading state
}

Computed Properties ​

currentAsset ​

Returns current asset being previewed

hasPrevious ​

Checks if previous asset exists

hasNext ​

Checks if next asset exists

previewUrl ​

Returns asset preview URL

Methods ​

openPreview(asset, index) ​

Opens preview for asset:

  • Sets current asset
  • Sets current index
  • Loads asset preview
  • Handles errors

closePreview() ​

Closes preview dialog:

  • Emits close event
  • Resets zoom
  • Clears state

Navigates to previous asset:

  • Decrements index
  • Loads previous asset
  • Updates preview

Navigates to next asset:

  • Increments index
  • Loads next asset
  • Updates preview

zoomIn() ​

Zooms in preview:

  • Increases zoom level
  • Updates zoom
  • Maintains center

zoomOut() ​

Zooms out preview:

  • Decreases zoom level
  • Updates zoom
  • Maintains center

resetZoom() ​

Resets zoom level:

  • Sets zoom to 1
  • Resets pan
  • Fits to screen

downloadAsset() ​

Downloads current asset:

  • Gets download URL
  • Triggers download
  • Handles errors

Events ​

  • close - Dialog closed
  • asset-changed - Asset changed (navigation)
  • download - Asset download requested
  • share - Asset share requested
  • edit - Asset edit requested

Keyboard Shortcuts ​

  • Arrow Left - Previous asset
  • Arrow Right - Next asset
  • Escape - Close dialog
  • + / - - Zoom in/out
  • 0 - Reset zoom

Usage Examples ​

Basic Usage ​

vue
<template>
  <PreviewDialog
    :dialog="showPreview"
    :asset="selectedAsset"
    :asset-list="assets"
    :current-index="currentIndex"
    @close="showPreview = false"
    @asset-changed="handleAssetChanged"
  />
</template>

<script>
import PreviewDialog from '~/components/dam/Dialogs/PreviewDialog.vue'

export default {
  components: {
    PreviewDialog
  }
}
</script>

Integration Points ​

  • Asset List: Opens from asset cards
  • Search Results: Preview from search
  • Folder Views: Preview from folders
  • Quick View: Alternative preview

Notes for Development ​

  • Supports multiple file types
  • Keyboard navigation enabled
  • Zoom for images only
  • Video playback supported
  • PDF viewer integration