diff --git a/src/registrar/assets/js/get-gov.js b/src/registrar/assets/js/get-gov.js index 7d1b52399..f3457649c 100644 --- a/src/registrar/assets/js/get-gov.js +++ b/src/registrar/assets/js/get-gov.js @@ -1873,6 +1873,41 @@ class MembersTable extends LoadTableBase { constructor() { super('.members__table', '.members__table-wrapper', '#members__search-field', '#members__search-field-submit', '.members__reset-search', '.members__reset-filters', '.members__no-data', '.members__no-search-results'); } + + initShowMoreButtons() { + function toggleShowMoreButton(toggleButton, contentDiv, buttonParentRow) { + const spanElement = toggleButton.querySelector('span'); + const useElement = toggleButton.querySelector('use'); + if (contentDiv.classList.contains('display-none')) { + showElement(contentDiv); + spanElement.textContent = 'Close'; + useElement.setAttribute('xlink:href', '/public/img/sprite.svg#expand_less'); + buttonParentRow.classList.add('hide-td-borders'); + } else { + hideElement(contentDiv); + spanElement.textContent = 'Expand'; + useElement.setAttribute('xlink:href', '/public/img/sprite.svg#expand_more'); + buttonParentRow.classList.remove('hide-td-borders'); + } + } + + let toggleButtons = document.querySelectorAll('.usa-button--show-more-button'); + toggleButtons.forEach((toggleButton) => { + + let dataFor = toggleButton.dataset.for; + let contentDiv = document.getElementById(dataFor); + let buttonParentRow = toggleButton.parentElement.parentElement; + if (contentDiv && contentDiv.tagName.toLowerCase() === 'tr' && contentDiv.classList.contains('show-more-content') && buttonParentRow && buttonParentRow.tagName.toLowerCase() === 'tr') { + toggleButton.addEventListener('click', function() { + toggleShowMoreButton(toggleButton, contentDiv, buttonParentRow); + }); + } else { + console.warn('Found a toggle button with no associated toggleable content or parent row'); + } + + }); + } + /** * Loads rows in the members list, as well as updates pagination around the members list * based on the supplied attributes. @@ -1930,6 +1965,7 @@ class MembersTable extends LoadTableBase { const invited = 'Invited'; data.members.forEach(member => { + const member_id = member.source + member.id; const member_name = member.name; const member_display = member.member_display; const member_permissions = member.permissions; @@ -1979,9 +2015,10 @@ class MembersTable extends LoadTableBase { let domainsHTML = ''; if (num_domains > 0) { - domainsHTML += "

Domains assigned

"; - domainsHTML += "

This member is assigned to " + num_domains + " domains:"; - domainsHTML += "