diff --git a/UI/Templates/AdministrationUI/UIxAdministrationAclEditor.wox b/UI/Templates/AdministrationUI/UIxAdministrationAclEditor.wox index a1413247c..4ff9ec262 100644 --- a/UI/Templates/AdministrationUI/UIxAdministrationAclEditor.wox +++ b/UI/Templates/AdministrationUI/UIxAdministrationAclEditor.wox @@ -71,10 +71,10 @@ - - +
@@ -89,7 +89,12 @@
{{user.cn}}
{{user.c_email}}
- + select_all + + delete diff --git a/UI/Templates/UIxAclEditor.wox b/UI/Templates/UIxAclEditor.wox index 879ccca8a..9bb6d07c0 100644 --- a/UI/Templates/UIxAclEditor.wox +++ b/UI/Templates/UIxAclEditor.wox @@ -46,10 +46,10 @@
- -
+
@@ -69,7 +69,7 @@ ng-hide="user.uid != acl.selectedUid || user.$isSpecial()"> select_all - delete diff --git a/UI/WebServerResources/js/Administration/AdministrationAclController.js b/UI/WebServerResources/js/Administration/AdministrationAclController.js index 1eda87b1e..ee587686a 100644 --- a/UI/WebServerResources/js/Administration/AdministrationAclController.js +++ b/UI/WebServerResources/js/Administration/AdministrationAclController.js @@ -7,8 +7,8 @@ /** * @ngInject */ - AdministrationAclController.$inject = ['$animate', '$state', '$mdMedia', '$mdToast', 'stateUser', 'stateFolder', 'User']; - function AdministrationAclController($animate, $state, $mdMedia, $mdToast, stateUser, stateFolder, User) { + AdministrationAclController.$inject = ['$timeout', '$state', '$mdMedia', '$mdToast', 'stateUser', 'stateFolder', 'User']; + function AdministrationAclController($timeout, $state, $mdMedia, $mdToast, stateUser, stateFolder, User) { var vm = this; vm.user = stateUser; @@ -17,6 +17,7 @@ vm.selectedUser = null; vm.selectedUid = null; vm.selectUser = selectUser; + vm.selectAllRights = selectAllRights; vm.removeUser = removeUser; vm.getTemplate = getTemplate; vm.close = close; @@ -38,7 +39,13 @@ return '../' + stateFolder.owner + '/Calendar/' + stateFolder.id + '/UIxCalUserRightsEditor'; } - function selectUser(user) { + function selectAllRights(user) { + stateFolder.$acl.$selectAllRights(user); + } + + function selectUser(user, $event) { + if ($event && $event.target.parentNode.classList.contains('md-secondary')) + return false; if (vm.selectedUid == user.uid) { vm.selectedUid = null; } @@ -54,18 +61,19 @@ } function removeUser(user) { - stateFolder.$acl.$removeUser(user.uid, stateFolder.owner).catch(function(data, status) { - Dialog.alert(l('Warning'), l('An error occured please try again.')); - }); + $timeout(function() { + stateFolder.$acl.$removeUser(user.uid, stateFolder.owner); + }, 500); // wait for CSS transition to complete (see card.scss) } function addUser(data) { if (data) { - stateFolder.$acl.$addUser(data, stateFolder.owner).then(function() { + stateFolder.$acl.$addUser(data, stateFolder.owner).then(function(user) { vm.userToAdd = ''; vm.searchText = ''; - }, function(error) { - Dialog.alert(l('Warning'), error); + vm.selectedUid = null; + if (user) + selectUser(user); }); } } @@ -88,8 +96,6 @@ // Close acls on small devices if ($mdMedia('xs')) close(); - }, function(data, status) { - Dialog.alert(l('Warning'), l('An error occured please try again.')); }); } } diff --git a/UI/WebServerResources/js/Common/AclController.js b/UI/WebServerResources/js/Common/AclController.js index 47951b807..babbe54f4 100644 --- a/UI/WebServerResources/js/Common/AclController.js +++ b/UI/WebServerResources/js/Common/AclController.js @@ -6,8 +6,8 @@ /** * @ngInject */ - AclController.$inject = ['$mdDialog', 'Dialog', 'usersWithACL', 'User', 'folder']; - function AclController($mdDialog, Dialog, usersWithACL, User, folder) { + AclController.$inject = ['$timeout', '$mdDialog', 'Dialog', 'usersWithACL', 'User', 'folder']; + function AclController($timeout, $mdDialog, Dialog, usersWithACL, User, folder) { var vm = this; vm.users = usersWithACL; // ACL users @@ -21,8 +21,8 @@ vm.saveModal = saveModal; vm.confirmChange = confirmChange; vm.removeUser = removeUser; - vm.selectAllRights = selectAllRights; vm.addUser = addUser; + vm.selectAllRights = selectAllRights; vm.selectUser = selectUser; vm.confirmation = { showing: false, message: ''}; @@ -53,11 +53,9 @@ } function removeUser(user) { - folder.$acl.$removeUser(user.uid); - } - - function selectAllRights(user) { - folder.$acl.$selectAllRights(user); + $timeout(function() { + folder.$acl.$removeUser(user.uid); + }, 500); // wait for CSS transition to complete (see card.scss) } function addUser(data) { @@ -68,13 +66,17 @@ vm.selectedUid = null; if (user) selectUser(user); - }, function(error) { - Dialog.alert(l('Warning'), error); }); } } - function selectUser(user) { + function selectAllRights(user) { + folder.$acl.$selectAllRights(user); + } + + function selectUser(user, $event) { + if ($event && $event.target.parentNode.classList.contains('md-secondary')) + return false; if (vm.selectedUid == user.uid) { vm.selectedUid = null; } diff --git a/UI/WebServerResources/scss/components/card/card.scss b/UI/WebServerResources/scss/components/card/card.scss index d25c4c13f..81ba3948d 100644 --- a/UI/WebServerResources/scss/components/card/card.scss +++ b/UI/WebServerResources/scss/components/card/card.scss @@ -59,6 +59,17 @@ md-card { padding-top: 0; } } + // Animate item removal + &.ng-leave { + transform: translateX(0%); + transition-duration: 500ms; + &.ng-leave-active { + .md-button:not([disabled]):hover { + background-color: transparent; + } + transform: translateX(-70%); + } + } } &.sg-collapsed {