diff -r bca3e4b1d0f1 -r 81945eedc63f src_js/iconolab-bundle/src/components/editor/mixins/tooltip.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src_js/iconolab-bundle/src/components/editor/mixins/tooltip.js Wed Feb 15 16:42:06 2017 +0100 @@ -0,0 +1,80 @@ +import Snap from 'snapsvg' +import Tooltip from '../Tooltip.vue' + +var popoverOptions = { + placement: 'auto', + container: 'body', + trigger: 'manual', + html: true, + title: '', + content: '', +} + +export default { + methods: { + addTooltip: function() { + + var vm = new Vue(Tooltip); + + if (this.originalAnnotation) { + vm.originalTitle = this.originalAnnotation.title; + vm.originalDescription = this.originalAnnotation.description; + vm.originalTags = this.originalAnnotation.tags; + } + + vm.$mount(jQuery('
').get(0)); + + vm.$on('close', () => { + this.clear(); + }); + vm.$on('save', (data) => { + this.save(data); + }); + + popoverOptions.content = vm.$el; + + var target = new Snap(this.getTooltipTarget()); + + var $el = $(target.node); + $el + .popover(popoverOptions) + .popover('show'); + + this.$on('drag:start', function() { + $el.popover('hide'); + }); + this.$on('drag:end', function() { + $el.popover('show'); + }); + + $el.on('shown.bs.popover', (e) => { + var $tip = $el.data('bs.popover').$tip; + $tip.find('input[name="title"]').focus(); + }); + }, + destroyTooltip: function() { + var target = new Snap(this.getTooltipTarget()); + + var $el = $(target.node); + if ($el.data('bs.popover')) { + $el.popover('destroy'); + } + }, + hideTooltip: function() { + var target = new Snap(this.getTooltipTarget()); + + var $el = $(target.node); + if ($el.data('bs.popover')) { + $el.popover('hide'); + } + }, + showTooltip: function() { + var target = new Snap(this.getTooltipTarget()); + + var $el = $(target.node); + if ($el.data('bs.popover')) { + $el.popover('show'); + } + }, + } +}