%PDF- %PDF-
Direktori : /home/dopla/www/wp-content/plugins/ml-slider/admin/assets/js/app/slides/parts/ |
Current File : /home/dopla/www/wp-content/plugins/ml-slider/admin/assets/js/app/slides/parts/Caption.vue |
<template> <div class="row caption"> <div class="flex justify-between"> <label class="mr-2">{{ __("Caption", "ml-slider") }}</label> <div :aria-labelledby="'caption_source_' + $parent.id" role="radiogroup" class="flex mb-1 -mx-1"> <div v-for="(caption, source) in sources" :key="source" class="whitespace-no-wrap 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]" style="max-width:150px" class="m-0 truncate"> {{ language[source] }} </label> </div> </div> </div> <div v-if="selectedSource !== 'override'" :title="__('Automatically updates directly from the WP Media Library', 'ml-slider')" class="default tipsy-tooltip-top"> <span v-if="!sources[selectedSource].length" class="no-content">{{ __('No default was found', 'ml-slider') }}</span> <span v-else v-text="sources[selectedSource]"/> </div> <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" style="margin:0"/> </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 library caption', 'ml-slider'), 'image-description': this.__('Media library description', 'ml-slider'), 'override': this.__('Enter manually', '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>