diff --git a/lib/assets/javascripts/application.js b/lib/assets/javascripts/application.js
index 5de3404..1baedc8 100644
--- a/lib/assets/javascripts/application.js
+++ b/lib/assets/javascripts/application.js
@@ -46,3 +46,4 @@
import './views/shared/sign_in_form';
import './views/super_admin/themes/new_edit';
import './views/users/notification_preferences';
+import './views/users/admin_grant_permissions';
diff --git a/lib/assets/javascripts/views/users/admin_grant_permissions.js b/lib/assets/javascripts/views/users/admin_grant_permissions.js
new file mode 100644
index 0000000..81eced7
--- /dev/null
+++ b/lib/assets/javascripts/views/users/admin_grant_permissions.js
@@ -0,0 +1,65 @@
+import { paginableSelector } from '../../utils/paginable';
+
+$(() => {
+ const success = (data) => {
+ // Render the html in the modal-permissions modal
+ $('#modal-permissions').html(data.user.html);
+ if ($('.org_grant_privileges:checked').length === $('.org_grant_privileges').length) {
+ $('#modal-permissions #org_admin_privileges').prop('checked', true);
+ }
+ if ($('.super_grant_privileges:checked').length === $('.super_grant_privileges').length) {
+ $('#modal-permissions #super_admin_privileges').prop('checked', true);
+ }
+ };
+
+ const error = () => {
+ // There was an ajax error so just route the user to the sign-in modal
+ // and let them sign in as a Non-Partner Institution
+ $('a[data-target="#modal-permissions"]').tab('show');
+ };
+
+ $(paginableSelector).on('click', '.modal-window', (e) => {
+ const target = $(e.target);
+ $('#modal-permissions').html('');
+ $.ajax({
+ method: 'GET',
+ url: target.attr('href'),
+ }).done((data) => {
+ success(data);
+ }, error);
+ });
+});
+
+$(() => {
+ $(paginableSelector).on('click', '#org_admin_privileges', () => {
+ if ($('#org_admin_privileges').prop('checked')) {
+ $('.org_grant_privileges:checkbox').prop('checked', true);
+ } else {
+ $('.org_grant_privileges:checkbox').prop('checked', false);
+ }
+ });
+ $(paginableSelector).on('change', '.org_grant_privileges', () => {
+ if ($('.org_grant_privileges:checked').length === $('.org_grant_privileges').length) {
+ $('#org_admin_privileges').prop('checked', true);
+ } else {
+ $('#org_admin_privileges').prop('checked', false);
+ }
+ });
+});
+
+$(() => {
+ $(paginableSelector).on('click', '#super_admin_privileges', () => {
+ if ($('#super_admin_privileges').prop('checked')) {
+ $('.super_grant_privileges:checkbox').prop('checked', true);
+ } else {
+ $('.super_grant_privileges:checkbox').prop('checked', false);
+ }
+ });
+ $(paginableSelector).on('change', '.super_grant_privileges', () => {
+ if ($('.super_grant_privileges:checked').length === $('.super_grant_privileges').length) {
+ $('#super_admin_privileges').prop('checked', true);
+ } else {
+ $('#super_admin_privileges').prop('checked', false);
+ }
+ });
+});
diff --git a/lib/assets/javascripts/views/users/notification_preferences.js b/lib/assets/javascripts/views/users/notification_preferences.js
index e5b3805..ef186b1 100644
--- a/lib/assets/javascripts/views/users/notification_preferences.js
+++ b/lib/assets/javascripts/views/users/notification_preferences.js
@@ -17,3 +17,4 @@
});
});
});
+
diff --git a/lib/assets/stylesheets/overrides.scss b/lib/assets/stylesheets/overrides.scss
index 2549e2b..bd290b4 100644
--- a/lib/assets/stylesheets/overrides.scss
+++ b/lib/assets/stylesheets/overrides.scss
@@ -142,6 +142,14 @@
margin-right: 25px;
}
+#modal-permissions ul {
+ list-style-type: none;
+}
+
+#modal-permissions .list-group li:nth-child(1){
+ border-top: 0 none;
+}
+
/* FONTAWESOME STYLING */
.fa {
font-size: 2rem;