D7net
Home
Console
Upload
information
Create File
Create Folder
About
Tools
:
/
home
/
ltfsolutionsco
/
www
/
wp-content
/
plugins
/
ml-slider
/
admin
/
assets
/
js
/
app
/
slides
/
parts
/
Filename :
Caption.vue
back
Copy
<template> <div class="row caption"> <div class="flex justify-between"> <label class="mr-4 caption-label">{{ __("Caption", "ml-slider") }}</label> <div :aria-labelledby="'caption_source_' + $parent.id" role="radiogroup" class="mb-1 mr-1"> <div v-for="(caption, source) in sources" :key="source" class="whitespace-no-wrap inline-block mb-1 px-1"> <input :id="source + '-' + $parent.id" :value="source" :name="'attachment[' + $parent.id + '][caption_source]'" v-model="selectedSource" class="m-0" type="radio" @click="maybeFocusTextarea"> <label :for="source + '-' + $parent.id" :title="language[source]" class="m-0 truncate"> {{ language[source] }} </label> </div> </div> </div> <textarea v-if="selectedSource !== 'override'" :value="!sources[selectedSource].length ? __('No default was found', 'ml-slider') : sources[selectedSource]" :title="__('Automatically updates directly from the WP Media Library', 'ml-slider')" class="tipsy-tooltip-top" readonly/> <textarea v-if="selectedSource === 'override'" v-model="sources['override']" :title="__('You may use HTML here', 'ml-slider')" :id="'caption_override_' + $parent.id" :name="'attachment[' + $parent.id + '][post_excerpt]'" class="tipsy-tooltip-top"/> </div> </template> <script> import { EventManager } from '../../utils' export default { props: { imageCaption: { type: [String], default: '' }, imageDescription: { type: [String], default: '' }, override: { type: [String], default: '' }, captionSource: { type: [String], default: 'image-caption' } }, data() { return { sources: { 'image-caption': this.imageCaption, 'image-description': this.imageDescription, 'override': this.override }, language: {}, selectedSource: '' } }, created() { this.selectedSource = this.captionSource ? this.captionSource : 'image-caption' }, mounted() { // When an image is updated, check that the data is fresh (via Vue or jQuery) EventManager.$on('metaslider/image-meta-updated', (slides, metadata) => this.updateMetadata(slides, metadata)) window.jQuery(window).on('metaslider/image-meta-updated', (event, slides, metadata) => this.updateMetadata(slides, metadata)) // Set specific wording for the options this.language = { 'image-caption': this.__('Media caption', 'ml-slider'), 'image-description': this.__('Media description', 'ml-slider'), 'override': this.__('Manual entry', 'ml-slider') } }, methods: { maybeFocusTextarea(event) { // Happens on click only 'override' === event.target.defaultValue && setTimeout(() => document.getElementById('caption_override_' + this.$parent.id).focus(), 300) }, updateMetadata(slides, metadata) { console.log(slides) if (slides.includes(this.$parent.id)) { this.sources['image-caption'] = metadata.caption this.sources['image-description'] = metadata.description } } } } </script>
Name
Size
Last Modified
Owner
Permissions
Actions
Caption.vue
2.994
KB
February 03 2024 3:18:15
ltfsolutionsco
0644
2017 © D7net | D704T team