Appearance
Mixins Documentation ​
Overview ​
Mixins are reusable Vue component options that can be shared across multiple components. The Admin Frontend uses mixins to provide common functionality, reduce code duplication, and maintain consistency.
Mixin Location ​
All mixins are located in the mixins/ directory and can be imported and used in any Vue component.
Available Mixins ​
Common Functions ​
- File:
mixins/common-functions.js - Purpose: General utility functions and analytics
Current Workspace ​
- File:
mixins/currentWorkspace.js - Purpose: Workspace management functions
File Type ​
- File:
mixins/fileType.js - Purpose: File type detection and utilities
Upload Common ​
- File:
mixins/upload-common.js - Purpose: Common upload functionality
Upload Queue ​
- File:
mixins/uploadQueue.js - Purpose: Upload queue management
Search Common Functions ​
- File:
mixins/search-common-functions.js - Purpose: Search-related utility functions
Route Params ​
- File:
mixins/routeParams.js - Purpose: Route parameter utilities
Image Style ​
- File:
mixins/imageStyle.js - Purpose: Image styling utilities
View Mode Cache ​
- File:
mixins/view-mode-cache.js - Purpose: View mode preference caching
Subscription Functions ​
- File:
mixins/subscription-functions.js - Purpose: Subscription and billing utilities
DAM Share URL ​
- File:
mixins/damShareUrl.js - Purpose: Share URL generation and management
External Uploads ​
- File:
mixins/external-uploads.js - Purpose: External user upload functionality
Shift Selection ​
- File:
mixins/shiftSelection.js - Purpose: Shift-click multi-select functionality
Version File Type ​
- File:
mixins/versionFileType.js - Purpose: Version file type handling
Zip Shot ​
- File:
mixins/zipShot.js - Purpose: ZIP file handling utilities
Branding ​
- File:
mixins/branding.js - Purpose: Registers workspace branding (logo, favicon, brand name) globally via
Vue.mixin; falls back to Collage defaults
Amplitude Analytics ​
- File:
mixins/amplitude-analytics.js - Purpose: Provides
$trackAmplitudehelper; normalises event properties before sending to Amplitude
Column Visibility Cache ​
- File:
mixins/column-visibility-cache.js - Purpose: Persists and restores visible column selections per view type via
$auth.$storage
Sort Preference Cache ​
- File:
mixins/sort-preference-cache.js - Purpose: Persists and restores sort field/direction per view type via
$auth.$storage
Thumbnail Size Cache ​
- File:
mixins/thumbnail-size-cache.js - Purpose: Persists and restores thumbnail size preference per view type via
$auth.$storage
Draggable Bar ​
- File:
mixins/draggable-bar.js - Purpose: Makes the bulk action bar draggable; persists last position in
localStorage
Marquee Selection ​
- File:
mixins/marqueeSelection.js - Purpose: Rubber-band (marquee) multi-select on list views with pixel-threshold guard and auto-scroll
For the full reference table including usage details, see Admin-Frontend Mixins.
Using Mixins ​
Import and Use ​
javascript
import commonFunctions from '~/mixins/common-functions'
export default {
mixins: [commonFunctions],
// ... component options
}Global Mixin ​
Mixins can also be registered globally in nuxt.config.js:
javascript
plugins: [
{ src: '~/mixins/common-functions.js', mode: 'client' }
]Mixin Best Practices ​
- Single Responsibility: Each mixin should have a focused purpose
- No Side Effects: Mixins should not have side effects on component lifecycle
- Documentation: Document all methods and properties provided
- Naming: Use descriptive names for mixin methods
- Conflicts: Be aware of method name conflicts when using multiple mixins
Common Patterns ​
Analytics Mixin ​
javascript
// In component
this.dispatchAnalytics({
action: 'view_asset',
asset_id: asset.id
})File Selection Mixin ​
javascript
// In component
this.toggleSelect(file)
this.toggleSelectAll()
this.clearSelection()Upload Mixin ​
javascript
// In component
this.startUpload(files)
this.pauseUpload(uploadId)
this.resumeUpload(uploadId)Related Documentation ​
- Common Functions Mixin - Common utility functions
- Mixins Overview - All available mixins