Skip to content

Share Asset Dialog

File Information

  • Path: components/dam/Dialogs/ShareAssetDialog/index.vue
  • Purpose: Create and manage share links and embed codes for assets, folders, and collages

Overview

The Share Asset Dialog component provides a user-friendly interface for creating share links and embed codes. It supports sharing assets, folders, and collages with basic settings and links to advanced share options.

Key Features

  1. Share Link Generation

    • Generate share links for assets
    • Generate share links for folders
    • Generate share links for collages
    • Copy share link to clipboard
  2. Embed Code Generation

    • Generate embed codes for assets
    • Customize embed dimensions
    • Copy embed code to clipboard
    • Preview embed code
  3. Share Preview

    • Preview shared asset
    • Asset thumbnail display
    • Asset information display
  4. Tab Navigation

    • Link tab for share links
    • Embed tab for embed codes
    • Seamless switching

Props

javascript
{
  dialog: {
    type: Boolean,
    default: false
  },
  asset: {
    type: Object,
    required: true
    // Asset, folder, or collage object
  },
  assetType: {
    type: String,
    default: 'asset'
    // 'asset', 'folder', 'collage'
  },
  workspaceId: {
    type: [String, Number],
    required: true
  }
}

Data Properties

javascript
{
  shareLink: null,      // Share link object
  embedCode: null,      // Embed code object
  shareUrl: '',        // Share URL string
  embedCodeHtml: '',   // Embed code HTML string
  loading: false,      // Loading state
  activeTab: 'link'    // Active tab ('link' or 'embed')
}

Computed Properties

shareUrlDisplay

Returns formatted share URL for display

Checks if share link can be generated

canGenerateEmbed

Checks if embed code can be generated

Methods

Generates share link:

  • Calls share link API
  • Updates share link state
  • Updates share URL
  • Handles errors

generateEmbedCode()

Generates embed code:

  • Calls embed code API
  • Updates embed code state
  • Updates embed HTML
  • Handles errors

Copies share link to clipboard:

  • Copies URL to clipboard
  • Shows success message
  • Handles errors

copyEmbedCode()

Copies embed code to clipboard:

  • Copies HTML to clipboard
  • Shows success message
  • Handles errors

openAdvancedSettings()

Opens advanced share dialog:

  • Emits open-advanced event
  • Passes share link data
  • Closes current dialog

Events

  • close - Dialog closed
  • open-advanced - Advanced settings requested
  • share-created - Share link created
  • embed-created - Embed code created

API Endpoints

  • Endpoint: POST /digital-assets/dashboard/generate-share-assets-url
  • Request Body:
    json
    {
      "workspace_id": 123,
      "asset_id": 456,
      "asset_type": "asset"
    }
  • Response: Share link object with URL

Generate Embed Code

  • Endpoint: POST /digital-assets/embed-code/generate
  • Request Body:
    json
    {
      "workspace_id": 123,
      "asset_id": 456
    }
  • Response: Embed code object with HTML

Usage Examples

Basic Usage

vue
<template>
  <ShareAssetDialog
    :dialog="showShareDialog"
    :asset="selectedAsset"
    :asset-type="'asset'"
    :workspace-id="workspaceId"
    @close="showShareDialog = false"
    @open-advanced="openAdvancedShare"
  />
</template>

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

export default {
  components: {
    ShareAssetDialog
  },
  data() {
    return {
      showShareDialog: false,
      selectedAsset: null
    }
  },
  methods: {
    openAdvancedShare(shareLink) {
      // Open advanced share dialog
    }
  }
}
</script>

Integration Points

  • Asset Components: Share from asset cards
  • Folder Components: Share folders
  • Collage Components: Share collages
  • Advanced Share Dialog: Advanced settings

Notes for Development

  • Component supports multiple asset types
  • Share links generated on demand
  • Embed codes customizable
  • Clipboard API used for copying
  • Links to advanced share dialog