/// import _ from 'lodash'; import coreModule from 'app/core/core_module'; import Drop from 'tether-drop'; export function infoPopover() { return { restrict: 'E', template: '', transclude: true, link: function(scope, elem, attrs, ctrl, transclude) { var offset = attrs.offset || '0 -10px'; var position = attrs.position || 'right middle'; var classes = 'drop-help drop-hide-out-of-bounds'; var openOn = 'hover'; elem.addClass('gf-form-help-icon'); if (attrs.wide) { classes += ' drop-wide'; } if (attrs.mode) { elem.addClass('gf-form-help-icon--' + attrs.mode); } transclude(function(clone, newScope) { var content = document.createElement('div'); content.className = 'markdown-html'; _.each(clone, node => { content.appendChild(node); }); var drop = new Drop({ target: elem[0], content: content, position: position, classes: classes, openOn: openOn, hoverOpenDelay: 400, tetherOptions: { offset: offset, constraints: [ { to: 'window', attachment: 'together', pin: true, }, ], }, }); var unbind = scope.$on('$destroy', function() { drop.destroy(); unbind(); }); }); }, }; } coreModule.directive('infoPopover', infoPopover);