src_js/iconolab-bundle/src/components/editor/mixins/tooltip.js
changeset 320 81945eedc63f
child 323 55c024fc7c60
equal deleted inserted replaced
319:bca3e4b1d0f1 320:81945eedc63f
       
     1 import Snap from 'snapsvg'
       
     2 import Tooltip from '../Tooltip.vue'
       
     3 
       
     4 var popoverOptions = {
       
     5     placement: 'auto',
       
     6     container: 'body',
       
     7     trigger: 'manual',
       
     8     html: true,
       
     9     title: '',
       
    10     content: '',
       
    11 }
       
    12 
       
    13 export default {
       
    14     methods: {
       
    15         addTooltip: function() {
       
    16 
       
    17             var vm = new Vue(Tooltip);
       
    18 
       
    19             if (this.originalAnnotation) {
       
    20                 vm.originalTitle = this.originalAnnotation.title;
       
    21                 vm.originalDescription = this.originalAnnotation.description;
       
    22                 vm.originalTags = this.originalAnnotation.tags;
       
    23             }
       
    24 
       
    25             vm.$mount(jQuery('<div>').get(0));
       
    26 
       
    27             vm.$on('close', () => {
       
    28                 this.clear();
       
    29             });
       
    30             vm.$on('save', (data) => {
       
    31                 this.save(data);
       
    32             });
       
    33 
       
    34             popoverOptions.content = vm.$el;
       
    35 
       
    36             var target = new Snap(this.getTooltipTarget());
       
    37 
       
    38             var $el = $(target.node);
       
    39             $el
       
    40                 .popover(popoverOptions)
       
    41                 .popover('show');
       
    42 
       
    43             this.$on('drag:start', function() {
       
    44                 $el.popover('hide');
       
    45             });
       
    46             this.$on('drag:end', function() {
       
    47                 $el.popover('show');
       
    48             });
       
    49 
       
    50             $el.on('shown.bs.popover', (e) => {
       
    51                 var $tip = $el.data('bs.popover').$tip;
       
    52                 $tip.find('input[name="title"]').focus();
       
    53             });
       
    54         },
       
    55         destroyTooltip: function() {
       
    56             var target = new Snap(this.getTooltipTarget());
       
    57 
       
    58             var $el = $(target.node);
       
    59             if ($el.data('bs.popover')) {
       
    60                 $el.popover('destroy');
       
    61             }
       
    62         },
       
    63         hideTooltip: function() {
       
    64             var target = new Snap(this.getTooltipTarget());
       
    65 
       
    66             var $el = $(target.node);
       
    67             if ($el.data('bs.popover')) {
       
    68                 $el.popover('hide');
       
    69             }
       
    70         },
       
    71         showTooltip: function() {
       
    72             var target = new Snap(this.getTooltipTarget());
       
    73 
       
    74             var $el = $(target.node);
       
    75             if ($el.data('bs.popover')) {
       
    76                 $el.popover('show');
       
    77             }
       
    78         },
       
    79     }
       
    80 }