mirror of
https://github.com/cisagov/manage.get.gov.git
synced 2025-07-25 20:18:38 +02:00
Merge branch 'rjm/2351-org-requests-page' into dk/2593-domain-request-search-bar
This commit is contained in:
commit
d66ad28574
4 changed files with 28 additions and 44 deletions
|
@ -1436,9 +1436,9 @@ document.addEventListener('DOMContentLoaded', function() {
|
||||||
// NOTE: We may need to evolve this as we add more filters.
|
// NOTE: We may need to evolve this as we add more filters.
|
||||||
document.addEventListener('focusin', function(event) {
|
document.addEventListener('focusin', function(event) {
|
||||||
const accordion = document.querySelector('.usa-accordion--select');
|
const accordion = document.querySelector('.usa-accordion--select');
|
||||||
const openFilterAccordion = document.querySelector('.usa-button--filter[aria-expanded="true"]');
|
const accordionThatIsOpen = document.querySelector('.usa-button--filter[aria-expanded="true"]');
|
||||||
|
|
||||||
if (openFilterAccordion && !accordion.contains(event.target)) {
|
if (accordionThatIsOpen && !accordion.contains(event.target)) {
|
||||||
closeFilters();
|
closeFilters();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -1447,9 +1447,9 @@ document.addEventListener('DOMContentLoaded', function() {
|
||||||
// NOTE: We may need to evolve this as we add more filters.
|
// NOTE: We may need to evolve this as we add more filters.
|
||||||
document.addEventListener('click', function(event) {
|
document.addEventListener('click', function(event) {
|
||||||
const accordion = document.querySelector('.usa-accordion--select');
|
const accordion = document.querySelector('.usa-accordion--select');
|
||||||
const openFilterAccordion = document.querySelector('.usa-button--filter[aria-expanded="true"]');
|
const accordionThatIsOpen = document.querySelector('.usa-button--filter[aria-expanded="true"]');
|
||||||
|
|
||||||
if (openFilterAccordion && !accordion.contains(event.target)) {
|
if (accordionThatIsOpen && !accordion.contains(event.target)) {
|
||||||
closeFilters();
|
closeFilters();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -1631,7 +1631,7 @@ document.addEventListener('DOMContentLoaded', function() {
|
||||||
const actionLabel = request.action_label;
|
const actionLabel = request.action_label;
|
||||||
const submissionDate = request.last_submitted_date ? new Date(request.last_submitted_date).toLocaleDateString('en-US', options) : `<span class="text-base">Not submitted</span>`;
|
const submissionDate = request.last_submitted_date ? new Date(request.last_submitted_date).toLocaleDateString('en-US', options) : `<span class="text-base">Not submitted</span>`;
|
||||||
|
|
||||||
// Delete markup will either be a simple trigger or a 3 dots menu with a hidden trigger (in the case of portfolio requests page)
|
// The markup for the delete function either be a simple trigger or a 3 dots menu with a hidden trigger (in the case of portfolio requests page)
|
||||||
// Even if the request is not deletable, we may need these empty strings for the td if the deletable column is displayed
|
// Even if the request is not deletable, we may need these empty strings for the td if the deletable column is displayed
|
||||||
let modalTrigger = '';
|
let modalTrigger = '';
|
||||||
|
|
||||||
|
@ -1734,7 +1734,7 @@ document.addEventListener('DOMContentLoaded', function() {
|
||||||
|
|
||||||
domainRequestsSectionWrapper.appendChild(modal);
|
domainRequestsSectionWrapper.appendChild(modal);
|
||||||
|
|
||||||
// Request is deletable, modal and modalTrigger are built. Now test is portfolio requests page and enhace the modalTrigger markup
|
// Request is deletable, modal and modalTrigger are built. Now check if we are on the portfolio requests page (by seeing if there is a portfolio value) and enhance the modalTrigger accordingly
|
||||||
if (portfolioValue) {
|
if (portfolioValue) {
|
||||||
modalTrigger = `
|
modalTrigger = `
|
||||||
<a
|
<a
|
||||||
|
@ -1946,9 +1946,9 @@ document.addEventListener('DOMContentLoaded', function() {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function closeMoreActionMenu(openFilterAccordion) {
|
function closeMoreActionMenu(accordionThatIsOpen) {
|
||||||
if (openFilterAccordion.getAttribute("aria-expanded") === "true") {
|
if (accordionThatIsOpen.getAttribute("aria-expanded") === "true") {
|
||||||
openFilterAccordion.click();
|
accordionThatIsOpen.click();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1990,42 +1990,24 @@ document.addEventListener('DOMContentLoaded', function() {
|
||||||
}
|
}
|
||||||
|
|
||||||
document.addEventListener('focusin', function(event) {
|
document.addEventListener('focusin', function(event) {
|
||||||
const openMoreActionsAccordions = document.querySelectorAll('.usa-button--more-actions[aria-expanded="true"]');
|
closeOpenAccordions(event);
|
||||||
|
|
||||||
openMoreActionsAccordions.forEach((openMoreActionsAccordionButton) => {
|
|
||||||
const moreActionsAccordion = openMoreActionsAccordionButton.closest('.usa-accordion--more-actions'); // Find the corresponding accordion
|
|
||||||
if (moreActionsAccordion && !moreActionsAccordion.contains(event.target)) {
|
|
||||||
closeMoreActionMenu(openMoreActionsAccordionButton); // Close the accordion if the focus is outside
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
const openFilterAccordion = document.querySelector('.usa-button--filter[aria-expanded="true"]');
|
|
||||||
const moreFilterAccordion = openFilterAccordion ? openFilterAccordion.closest('.usa-accordion--select') : undefined;
|
|
||||||
|
|
||||||
if (openFilterAccordion) {
|
|
||||||
if (!moreFilterAccordion.contains(event.target)) {
|
|
||||||
closeFilters();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
|
||||||
document.addEventListener('click', function(event) {
|
document.addEventListener('click', function(event) {
|
||||||
const openMoreActionsAccordions = document.querySelectorAll('.usa-button--more-actions[aria-expanded="true"]');
|
closeOpenAccordions(event);
|
||||||
|
});
|
||||||
openMoreActionsAccordions.forEach((openMoreActionsAccordionButton) => {
|
|
||||||
const accordion = openMoreActionsAccordionButton.closest('.usa-accordion--more-actions'); // Find the corresponding accordion
|
function closeOpenAccordions(event) {
|
||||||
|
const openAccordions = document.querySelectorAll('.usa-button--more-actions[aria-expanded="true"]');
|
||||||
|
openAccordions.forEach((openAccordionButton) => {
|
||||||
|
// Find the corresponding accordion
|
||||||
|
const accordion = openAccordionButton.closest('.usa-accordion--more-actions');
|
||||||
if (accordion && !accordion.contains(event.target)) {
|
if (accordion && !accordion.contains(event.target)) {
|
||||||
closeMoreActionMenu(openMoreActionsAccordionButton); // Close the accordion if the click is outside
|
// Close the accordion if the click is outside
|
||||||
|
closeMoreActionMenu(openAccordionButton);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
}
|
||||||
const openFilterAccordion = document.querySelector('.usa-button--filter[aria-expanded="true"]');
|
|
||||||
const moreFilterAccordion = openFilterAccordion ? openFilterAccordion.closest('.usa-accordion--select') : undefined;
|
|
||||||
|
|
||||||
if (openFilterAccordion && moreFilterAccordion && !moreFilterAccordion.contains(event.target)) {
|
|
||||||
closeFilters();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
// Initial load
|
// Initial load
|
||||||
loadDomainRequests(1);
|
loadDomainRequests(1);
|
||||||
|
|
|
@ -60,7 +60,7 @@ def add_has_profile_feature_flag_to_context(request):
|
||||||
|
|
||||||
def portfolio_permissions(request):
|
def portfolio_permissions(request):
|
||||||
"""Make portfolio permissions for the request user available in global context"""
|
"""Make portfolio permissions for the request user available in global context"""
|
||||||
default_context = {
|
portfolio_context = {
|
||||||
"has_base_portfolio_permission": False,
|
"has_base_portfolio_permission": False,
|
||||||
"has_any_domains_portfolio_permission": False,
|
"has_any_domains_portfolio_permission": False,
|
||||||
"has_any_requests_portfolio_permission": False,
|
"has_any_requests_portfolio_permission": False,
|
||||||
|
@ -94,8 +94,8 @@ def portfolio_permissions(request):
|
||||||
"has_organization_requests_flag": request.user.has_organization_requests_flag(),
|
"has_organization_requests_flag": request.user.has_organization_requests_flag(),
|
||||||
"has_organization_members_flag": request.user.has_organization_members_flag(),
|
"has_organization_members_flag": request.user.has_organization_members_flag(),
|
||||||
}
|
}
|
||||||
return default_context
|
return portfolio_context
|
||||||
|
|
||||||
except AttributeError:
|
except AttributeError:
|
||||||
# Handles cases where request.user might not exist
|
# Handles cases where request.user might not exist
|
||||||
return default_context
|
return portfolio_context
|
||||||
|
|
|
@ -54,7 +54,7 @@
|
||||||
|
|
||||||
{% if has_organization_requests_flag %}
|
{% if has_organization_requests_flag %}
|
||||||
<li class="usa-nav__primary-item">
|
<li class="usa-nav__primary-item">
|
||||||
<!-- user hasone of the view permissions plus the edit permission, show the dropdown -->
|
<!-- user has one of the view permissions plus the edit permission, show the dropdown -->
|
||||||
{% if has_edit_request_portfolio_permission %}
|
{% if has_edit_request_portfolio_permission %}
|
||||||
{% url 'domain-requests' as url %}
|
{% url 'domain-requests' as url %}
|
||||||
<button
|
<button
|
||||||
|
|
|
@ -10,7 +10,9 @@ from django.db.models import Q
|
||||||
@login_required
|
@login_required
|
||||||
def get_domain_requests_json(request):
|
def get_domain_requests_json(request):
|
||||||
"""Given the current request,
|
"""Given the current request,
|
||||||
get all domain requests that are associated with the request user and exclude the APPROVED ones"""
|
get all domain requests that are associated with the request user and exclude the APPROVED ones.
|
||||||
|
If we are on the portfolio requests page, limit the response to only those requests associated with
|
||||||
|
the given portfolio."""
|
||||||
|
|
||||||
domain_request_ids = get_domain_request_ids_from_request(request)
|
domain_request_ids = get_domain_request_ids_from_request(request)
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue