refactored domain request form modal to remove hidden input

This commit is contained in:
David Kennedy 2024-12-24 12:46:02 -05:00
parent 1c280905de
commit 76ebec01ce
No known key found for this signature in database
GPG key ID: 6528A5386E66B96B
6 changed files with 63 additions and 17 deletions

View file

@ -0,0 +1,12 @@
import { submitForm } from './helpers.js';
export function initDomainRequestForm() {
document.addEventListener('DOMContentLoaded', function() {
const button = document.getElementById("domain-request-form-submit-button");
if (button) {
button.addEventListener("click", function () {
submitForm("submit-domain-request-form");
});
}
});
}

View file

@ -75,3 +75,17 @@ export function debounce(handler, cooldown=600) {
export function getCsrfToken() { export function getCsrfToken() {
return document.querySelector('input[name="csrfmiddlewaretoken"]').value; return document.querySelector('input[name="csrfmiddlewaretoken"]').value;
} }
/**
* Helper function to submit a form
* @param {} form_id - the id of the form to be submitted
*/
export function submitForm(form_id) {
let form = document.getElementById(form_id);
if (form) {
console.log("submitting form");
form.submit();
} else {
console.error("Form '" + form_id + "' not found.");
}
}

View file

@ -11,6 +11,7 @@ import { initMembersTable } from './table-members.js';
import { initMemberDomainsTable } from './table-member-domains.js'; import { initMemberDomainsTable } from './table-member-domains.js';
import { initEditMemberDomainsTable } from './table-edit-member-domains.js'; import { initEditMemberDomainsTable } from './table-edit-member-domains.js';
import { initPortfolioNewMemberPageToggle, initAddNewMemberPageListeners, initPortfolioMemberPageRadio } from './portfolio-member-page.js'; import { initPortfolioNewMemberPageToggle, initAddNewMemberPageListeners, initPortfolioMemberPageRadio } from './portfolio-member-page.js';
import { initDomainRequestForm } from './domain-request-form.js';
initDomainValidators(); initDomainValidators();
@ -36,6 +37,8 @@ initMembersTable();
initMemberDomainsTable(); initMemberDomainsTable();
initEditMemberDomainsTable(); initEditMemberDomainsTable();
initDomainRequestForm();
// Init the portfolio new member page // Init the portfolio new member page
initPortfolioMemberPageRadio(); initPortfolioMemberPageRadio();
initPortfolioNewMemberPageToggle(); initPortfolioNewMemberPageToggle();

View file

@ -130,9 +130,21 @@
aria-describedby="Are you sure you want to submit a domain request?" aria-describedby="Are you sure you want to submit a domain request?"
data-force-action data-force-action
> >
{% include 'includes/modal.html' with is_domain_request_form=True review_form_is_complete=review_form_is_complete modal_heading=modal_heading|safe modal_description=modal_description|safe modal_button=modal_button|safe %} {% if review_form_is_complete %}
{% with modal_heading="You are about to submit a domain request for " domain_name_modal=requested_domain__name modal_description="Once you submit this request, you wont be able to edit it until we review it. Youll only be able to withdraw your request." modal_button_id="domain-request-form-submit-button" modal_button_text="Submit request" %}
{% include 'includes/modal.html' %}
{% endwith %}
{% else %}
{% with modal_heading="Your request form is incomplete" modal_description='This request cannot be submitted yet. Return to the request and visit the steps that are marked as "incomplete."' modal_button_text="Return to request" cancel_button_only=True %}
{% include 'includes/modal.html' %}
{% endwith %}
{% endif %}
</div> </div>
<form method="post" id="submit-domain-request-form">
{% csrf_token %}
</form>
{% block after_form_content %}{% endblock %} {% block after_form_content %}{% endblock %}
</main> </main>

View file

@ -24,8 +24,26 @@
<div class="usa-modal__footer"> <div class="usa-modal__footer">
<ul class="usa-button-group"> <ul class="usa-button-group">
<li class="usa-button-group__item"> <li class="usa-button-group__item">
{% if not_form and modal_button %} {% if cancel_button_only %}
{{ modal_button }} <button
type="button"
class="usa-button"
data-close-modal
>
{% if modal_button_text %}
{{ modal_button_text }}
{% else %}
Cancel
{% endif %}
</button>
{% elif modal_button_id and modal_button_text %}
<button
id="{{ modal_button_id }}"
type="button"
class="usa-button"
>
{{ modal_button_text }}
</button>
{% elif modal_button_url and modal_button_text %} {% elif modal_button_url and modal_button_text %}
<a <a
href="{{ modal_button_url }}" href="{{ modal_button_url }}"
@ -56,7 +74,7 @@
Cancel Cancel
</button> </button>
</form> </form>
{% elif not is_domain_request_form or review_form_is_complete %} {% elif not cancel_button_only %}
<button <button
type="button" type="button"
class="usa-button usa-button--unstyled padding-105 text-center" class="usa-button usa-button--unstyled padding-105 text-center"

View file

@ -448,34 +448,21 @@ class DomainRequestWizard(DomainRequestWizardPermissionView, TemplateView):
non_org_steps_complete = DomainRequest._form_complete(self.domain_request, self.request) non_org_steps_complete = DomainRequest._form_complete(self.domain_request, self.request)
org_steps_complete = len(self.db_check_for_unlocking_steps()) == len(self.steps) org_steps_complete = len(self.db_check_for_unlocking_steps()) == len(self.steps)
if (not self.is_portfolio and non_org_steps_complete) or (self.is_portfolio and org_steps_complete): if (not self.is_portfolio and non_org_steps_complete) or (self.is_portfolio and org_steps_complete):
modal_button = '<button type="submit" ' 'class="usa-button" ' ">Submit request</button>"
context = { context = {
"not_form": False,
"form_titles": self.titles, "form_titles": self.titles,
"steps": self.steps, "steps": self.steps,
"visited": self.storage.get("step_history", []), "visited": self.storage.get("step_history", []),
"is_federal": self.domain_request.is_federal(), "is_federal": self.domain_request.is_federal(),
"modal_button": modal_button,
"modal_heading": "You are about to submit a domain request for ",
"domain_name_modal": str(self.domain_request.requested_domain),
"modal_description": "Once you submit this request, you wont be able to edit it until we review it.\
Youll only be able to withdraw your request.",
"review_form_is_complete": True, "review_form_is_complete": True,
"user": self.request.user, "user": self.request.user,
"requested_domain__name": requested_domain_name, "requested_domain__name": requested_domain_name,
} }
else: # form is not complete else: # form is not complete
modal_button = '<button type="button" class="usa-button" data-close-modal>Return to request</button>'
context = { context = {
"not_form": True,
"form_titles": self.titles, "form_titles": self.titles,
"steps": self.steps, "steps": self.steps,
"visited": self.storage.get("step_history", []), "visited": self.storage.get("step_history", []),
"is_federal": self.domain_request.is_federal(), "is_federal": self.domain_request.is_federal(),
"modal_button": modal_button,
"modal_heading": "Your request form is incomplete",
"modal_description": 'This request cannot be submitted yet.\
Return to the request and visit the steps that are marked as "incomplete."',
"review_form_is_complete": False, "review_form_is_complete": False,
"user": self.request.user, "user": self.request.user,
"requested_domain__name": requested_domain_name, "requested_domain__name": requested_domain_name,