diff --git a/src/registrar/assets/js/get-gov.js b/src/registrar/assets/js/get-gov.js index ee7d3eb05..d0da73f2c 100644 --- a/src/registrar/assets/js/get-gov.js +++ b/src/registrar/assets/js/get-gov.js @@ -1898,7 +1898,6 @@ class MembersTable extends LoadTableBase { if (portfolio) searchParams.append("portfolio", portfolio) - // --------- FETCH DATA // fetch json of page of domais, given params let baseUrl = document.getElementById("get_members_json_url"); @@ -1910,6 +1909,12 @@ class MembersTable extends LoadTableBase { if (!baseUrlValue) { return; } + + // Get whether the logged in user has edit members permission + const hasEditPermission = this.portfolioElement ? this.portfolioElement.getAttribute('data-has-edit-permission')==='True' : null; + + console.log(this.portfolioElement.getAttribute('data-has-edit-permission')) + console.log(hasEditPermission) let url = `${baseUrlValue}?${searchParams.toString()}` //TODO: uncomment for search function fetch(url) @@ -1929,6 +1934,20 @@ class MembersTable extends LoadTableBase { const invited = 'Invited'; + + let existingExtraActionsHeader = document.querySelector('.extra-actions-header'); + + if (hasEditPermission && !existingExtraActionsHeader) { + const extraActionsHeader = document.createElement('th'); + extraActionsHeader.setAttribute('id', 'extra-actions'); + extraActionsHeader.setAttribute('role', 'columnheader'); + extraActionsHeader.setAttribute('class', 'extra-actions-header'); + extraActionsHeader.innerHTML = ` + Cancel invitation`; + let tableHeaderRow = document.querySelector('#members thead tr'); + tableHeaderRow.appendChild(extraActionsHeader); + } + data.members.forEach(member => { const member_name = member.name; const member_display = member.member_display; @@ -1938,6 +1957,119 @@ class MembersTable extends LoadTableBase { let last_active = member.last_active; let last_active_formatted = ''; let last_active_sort_value = ''; + let kebob = ''; + + if (hasEditPermission) { + const member_id = member.id; + let isMemberInvited = !last_active || last_active === 'Invited'; + let cancelInvitationButton = isMemberInvited ? "Cancel invitation" : "Remove member"; + + let modalHeading = 'asdasdasd'; + let modalDescription = 'asdasdasdasdasd'; + + const modalSubmit = ` + + ` + + const modal = document.createElement('div'); + modal.setAttribute('class', 'usa-modal'); + modal.setAttribute('id', `toggle-remove-member-${member_id}`); + modal.setAttribute('aria-labelledby', 'Are you sure you want to continue?'); + modal.setAttribute('aria-describedby', 'Member will be removed'); + modal.setAttribute('data-force-action', ''); + + modal.innerHTML = ` +
+ ${modalDescription} +
+