diff --git a/src/Skybrud.LinkPicker/App_Plugins/Skybrud.LinkPicker/Directives/LinkPicker.js b/src/Skybrud.LinkPicker/App_Plugins/Skybrud.LinkPicker/Directives/LinkPicker.js index 2b774a8..6f90a84 100644 --- a/src/Skybrud.LinkPicker/App_Plugins/Skybrud.LinkPicker/Directives/LinkPicker.js +++ b/src/Skybrud.LinkPicker/App_Plugins/Skybrud.LinkPicker/Directives/LinkPicker.js @@ -8,7 +8,19 @@ restrict: 'E', replace: true, templateUrl: '/App_Plugins/Skybrud.LinkPicker/Views/LinkPickerDirective.html', - link: function (scope) { + link: function (scope, element) { + + function ancestorHasClass(e, className) { + var p = e.parentNode; + while (p != null) { + if (p.classList && p.classList.contains(className)) return true; + p = p.parentNode; + } + return false; + } + + // Determine wether the link picker dialog should close all other dialogs (it shouldn't when already in another dialog/modal) + var closeAllDialogs = !ancestorHasClass(element[0], 'umb-modal'); var v = Umbraco.Sys.ServerVariables.application.version.split('.'); scope.umbVersion = parseFloat(v[0] + '.' + v[1]); @@ -64,13 +76,13 @@ scope.addLink = function () { p.addLink(function (link) { scope.value.items.push(link); - }); + }, closeAllDialogs); }; scope.editLink = function (link, index) { p.editLink(link, function (newLink) { scope.value.items[index] = newLink; - }); + }, closeAllDialogs); }; scope.removeLink = function (index) {