From a1769b50c660fa046f7c8d20ee88a8c9d0212db4 Mon Sep 17 00:00:00 2001 From: zandercymatics <141044360+zandercymatics@users.noreply.github.com> Date: Fri, 9 Feb 2024 11:50:05 -0700 Subject: [PATCH] Use modal --- src/registrar/assets/js/get-gov-admin.js | 45 ++++++++----- src/registrar/assets/sass/_theme/_admin.scss | 7 ++ .../django/admin/domain_change_form.html | 66 ++++++++++++++++++- 3 files changed, 99 insertions(+), 19 deletions(-) diff --git a/src/registrar/assets/js/get-gov-admin.js b/src/registrar/assets/js/get-gov-admin.js index fa429ba7f..29aa9ce03 100644 --- a/src/registrar/assets/js/get-gov-admin.js +++ b/src/registrar/assets/js/get-gov-admin.js @@ -23,6 +23,33 @@ function openInNewTab(el, removeAttribute = false){ // <<>><<>><<>><<>><<>><<>><<>><<>><<>><<>><<>><<>><<>><<>><<>> // Initialization code. +/** An IIFE for pages in DjangoAdmin that use modals. + * Dja strips out form elements, and modals generate their content outside + * of the current form scope, so we need to "inject" these inputs. +*/ +(function (){ + function createPhantomModalFormButtons(){ + let submitButtons = document.querySelectorAll('.usa-modal button[type="submit"]'); + form = document.querySelector("form") + submitButtons.forEach((button) => { + + let input = document.createElement("input"); + input.type = "submit"; + input.name = button.name; + input.value = button.value; + input.style.display = "none" + + // Add the hidden input to the form + form.appendChild(input); + button.addEventListener("click", () => { + console.log("clicking") + input.click(); + }) + }) + } + + createPhantomModalFormButtons(); +})(); /** An IIFE for pages in DjangoAdmin which may need custom JS implementation. * Currently only appends target="_blank" to the domain_form object, * but this can be expanded. @@ -44,24 +71,6 @@ function openInNewTab(el, removeAttribute = false){ domainSubmitButton.addEventListener("mouseover", () => openInNewTab(domainFormElement, true)); domainSubmitButton.addEventListener("mouseout", () => openInNewTab(domainFormElement, false)); } - - let extendExpirationDateButton = document.getElementById("extend-expiration-button") - let confirmationButtons = document.querySelector(".admin-confirmation-buttons") - let cancelExpirationButton = document.querySelector(".cancel-extend-button") - if (extendExpirationDateButton && confirmationButtons && cancelExpirationButton){ - - // Tie logic to the extend button to show confirmation options - extendExpirationDateButton.addEventListener("click", () => { - extendExpirationDateButton.hidden = true - confirmationButtons.hidden = false - }) - - // Tie logic to the cancel button to hide the confirmation options - cancelExpirationButton.addEventListener("click", () => { - confirmationButtons.hidden = true - extendExpirationDateButton.hidden = false - }) - } } prepareDjangoAdmin(); diff --git a/src/registrar/assets/sass/_theme/_admin.scss b/src/registrar/assets/sass/_theme/_admin.scss index 4e4c15dd9..bee4f1466 100644 --- a/src/registrar/assets/sass/_theme/_admin.scss +++ b/src/registrar/assets/sass/_theme/_admin.scss @@ -278,3 +278,10 @@ h1, h2, h3, input.admin-confirm-button{ text-transform: none !important; } + + +// Button groups in /admin incorrectly have bullets. +// Remove that! +.usa-modal__footer .usa-button-group__item{ + list-style-type: none; +} \ No newline at end of file diff --git a/src/registrar/templates/django/admin/domain_change_form.html b/src/registrar/templates/django/admin/domain_change_form.html index 2b4461a49..28ae01aec 100644 --- a/src/registrar/templates/django/admin/domain_change_form.html +++ b/src/registrar/templates/django/admin/domain_change_form.html @@ -17,7 +17,14 @@   - + + Extend expiration date + | {% endif %} {% if original.state == original.State.READY %} @@ -35,3 +42,60 @@ {{ block.super }} {% endblock %} + +{% block submit_buttons_bottom %} +
+
+
+ +
+ +
+ + +
+ +
+
+{{ block.super }} +{% endblock %} \ No newline at end of file