define([ 'angular', '../core_module', 'app/core/utils/kbn', ], function (angular, coreModule, kbn) { 'use strict'; coreModule.default.directive('tip', function($compile) { return { restrict: 'E', link: function(scope, elem, attrs) { var _t = ''; _t = _t.replace(/{/g, '\\{').replace(/}/g, '\\}'); elem.replaceWith($compile(angular.element(_t))(scope)); } }; }); coreModule.default.directive('watchChange', function() { return { scope: { onchange: '&watchChange' }, link: function(scope, element) { element.on('input', function() { scope.$apply(function () { scope.onchange({ inputValue: element.val() }); }); }); } }; }); coreModule.default.directive('editorOptBool', function($compile) { return { restrict: 'E', link: function(scope, elem, attrs) { var ngchange = attrs.change ? (' ng-change="' + attrs.change + '"') : ''; var tip = attrs.tip ? (' ' + attrs.tip + '') : ''; var showIf = attrs.showIf ? (' ng-show="' + attrs.showIf + '" ') : ''; var template = '
' + ' ' + '' + ' '; elem.replaceWith($compile(angular.element(template))(scope)); } }; }); coreModule.default.directive('editorCheckbox', function($compile, $interpolate) { return { restrict: 'E', link: function(scope, elem, attrs) { var text = $interpolate(attrs.text)(scope); var model = $interpolate(attrs.model)(scope); var ngchange = attrs.change ? (' ng-change="' + attrs.change + '"') : ''; var tip = attrs.tip ? (' ' + attrs.tip + '') : ''; var label = ''; var template = '' + ' '; template = template + label; elem.addClass('gf-form-checkbox'); elem.html($compile(angular.element(template))(scope)); } }; }); coreModule.default.directive('gfDropdown', function ($parse, $compile, $timeout) { function buildTemplate(items, placement) { var upclass = placement === 'top' ? 'dropup' : ''; var ul = [ '' ]; angular.forEach(items, function (item, index) { if (item.divider) { return ul.splice(index + 1, 0, '
  • '); } var li = '' + '' + (item.text || '') + ''; if (item.submenu && item.submenu.length) { li += buildTemplate(item.submenu).join('\n'); } li += ''; ul.splice(index + 1, 0, li); }); return ul; } return { restrict: 'EA', scope: true, link: function postLink(scope, iElement, iAttrs) { var getter = $parse(iAttrs.gfDropdown), items = getter(scope); $timeout(function () { var placement = iElement.data('placement'); var dropdown = angular.element(buildTemplate(items, placement).join('')); dropdown.insertAfter(iElement); $compile(iElement.next('ul.dropdown-menu'))(scope); }); iElement.addClass('dropdown-toggle').attr('data-toggle', 'dropdown'); } }; }); });