Skip to content

Create Collage Dialog ​

File Information ​

  • Path: components/dam/Dialogs/CreateCollageDialog.vue
  • Purpose: Create and edit collages with name, description, and asset selection

Overview ​

The Create Collage Dialog component provides an interface for creating new collages and editing existing ones. It supports collage name, description, asset selection, and initial configuration.

Key Features ​

  1. Collage Creation

    • Collage name input
    • Collage description
    • Name validation
    • Duplicate name checking
  2. Collage Editing

    • Edit existing collage
    • Update name and description
    • Modify collage settings
    • Save changes
  3. Asset Selection

    • Select assets for collage
    • Add/remove assets
    • Asset preview
    • Asset count display
  4. Validation

    • Name required validation
    • Name uniqueness check
    • Description length validation
    • Form error handling

Props ​

javascript
{
  dialog: {
    type: Boolean,
    default: false
  },
  collage: {
    type: Object,
    default: null
    // Existing collage to edit (null for create)
  },
  workspaceId: {
    type: [String, Number],
    required: true
  },
  initialAssets: {
    type: Array,
    default: () => []
    // Initial assets to include
  }
}

Data Properties ​

javascript
{
  form: {
    name: '',
    description: '',
    assets: []
  },
  saving: false,      // Saving state
  errors: {},       // Form errors
  availableAssets: [] // Available assets for selection
}

Computed Properties ​

isEditMode ​

Checks if editing existing collage

isFormValid ​

Validates form data

collageName ​

Returns collage name (for edit mode)

Methods ​

loadCollage() ​

Loads collage data (edit mode):

  • Fetches collage details
  • Updates form data
  • Loads collage assets
  • Handles errors

saveCollage() ​

Saves collage:

  • Validates form
  • Creates or updates collage via API
  • Adds selected assets
  • Shows success message
  • Emits saved event
  • Handles errors

addAsset(asset) ​

Adds asset to collage:

  • Validates asset
  • Adds to assets array
  • Updates UI

removeAsset(assetId) ​

Removes asset from collage:

  • Removes from assets array
  • Updates UI

validateForm() ​

Validates collage form:

  • Checks name required
  • Checks name uniqueness
  • Validates description
  • Returns validation result

Events ​

  • close - Dialog closed
  • saved - Collage saved successfully
  • created - Collage created
  • updated - Collage updated

API Endpoints ​

Create Collage ​

  • Endpoint: POST /digital-assets/collage/create
  • Request Body:
    json
    {
      "workspace_id": 123,
      "name": "My Collage",
      "description": "Collage description",
      "asset_ids": [1, 2, 3]
    }
  • Response: Created collage object

Update Collage ​

  • Endpoint: PUT /digital-assets/collage/update
  • Request Body: Collage update data
  • Response: Updated collage object

Usage Examples ​

Create Collage ​

vue
<template>
  <CreateCollageDialog
    :dialog="showCreateCollage"
    :workspace-id="workspaceId"
    :initial-assets="selectedAssets"
    @close="showCreateCollage = false"
    @created="handleCollageCreated"
  />
</template>

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

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

Edit Collage ​

vue
<template>
  <CreateCollageDialog
    :dialog="showEditCollage"
    :collage="selectedCollage"
    :workspace-id="workspaceId"
    @close="showEditCollage = false"
    @updated="handleCollageUpdated"
  />
</template>

Integration Points ​

  • Collages Page: Create new collages
  • Collage Details: Edit existing collages
  • Asset Components: Add assets to collage
  • Folder Components: Create collage from folder

Notes for Development ​

  • Name must be unique per workspace
  • Description optional
  • Assets can be added/removed
  • Edit mode loads existing data
  • Validation before save