mirror of
https://github.com/cisagov/manage.get.gov.git
synced 2025-07-31 15:06:32 +02:00
cleanup and lint
This commit is contained in:
parent
088140a37d
commit
f9fa8772e5
5 changed files with 27 additions and 106 deletions
|
@ -29,8 +29,6 @@
|
||||||
* - tooltip dynamic content updated to include nested element (for better sizing control)
|
* - tooltip dynamic content updated to include nested element (for better sizing control)
|
||||||
* - modal exposed to window to be accessible in other js files
|
* - modal exposed to window to be accessible in other js files
|
||||||
* - fixed bug in createHeaderButton which added newlines to header button tooltips
|
* - fixed bug in createHeaderButton which added newlines to header button tooltips
|
||||||
* - modified combobox to allow for blank values in list
|
|
||||||
* - modified aria label for X button in combobox to reflect modified behavior of button
|
|
||||||
* - modified combobox to handle error class
|
* - modified combobox to handle error class
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@ -1169,13 +1167,13 @@ const enhanceComboBox = _comboBoxEl => {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
if (defaultValue) {
|
if (defaultValue) {
|
||||||
for (let i = 0, len = selectEl.options.length; i < len; i += 1) {
|
for (let i = 0, len = selectEl.options.length; i < len; i += 1) {
|
||||||
const optionEl = selectEl.options[i];
|
const optionEl = selectEl.options[i];
|
||||||
if (optionEl.value === defaultValue) {
|
if (optionEl.value === defaultValue) {
|
||||||
selectedOption = optionEl;
|
selectedOption = optionEl;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1501,16 +1499,16 @@ const resetSelection = el => {
|
||||||
const selectValue = selectEl.value;
|
const selectValue = selectEl.value;
|
||||||
const inputValue = (inputEl.value || "").toLowerCase();
|
const inputValue = (inputEl.value || "").toLowerCase();
|
||||||
if (selectValue) {
|
if (selectValue) {
|
||||||
for (let i = 0, len = selectEl.options.length; i < len; i += 1) {
|
for (let i = 0, len = selectEl.options.length; i < len; i += 1) {
|
||||||
const optionEl = selectEl.options[i];
|
const optionEl = selectEl.options[i];
|
||||||
if (optionEl.value === selectValue) {
|
if (optionEl.value === selectValue) {
|
||||||
if (inputValue !== optionEl.text) {
|
if (inputValue !== optionEl.text) {
|
||||||
changeElementValue(inputEl, optionEl.text);
|
changeElementValue(inputEl, optionEl.text);
|
||||||
}
|
}
|
||||||
comboBoxEl.classList.add(COMBO_BOX_PRISTINE_CLASS);
|
comboBoxEl.classList.add(COMBO_BOX_PRISTINE_CLASS);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (inputValue) {
|
if (inputValue) {
|
||||||
changeElementValue(inputEl);
|
changeElementValue(inputEl);
|
||||||
|
|
|
@ -1,77 +0,0 @@
|
||||||
import { hideElement, showElement } from './helpers.js';
|
|
||||||
|
|
||||||
export function loadInitialValuesForComboBoxes() {
|
|
||||||
var overrideDefaultClearButton = true;
|
|
||||||
var isTyping = false;
|
|
||||||
|
|
||||||
document.addEventListener('DOMContentLoaded', (event) => {
|
|
||||||
handleAllComboBoxElements();
|
|
||||||
});
|
|
||||||
|
|
||||||
function handleAllComboBoxElements() {
|
|
||||||
const comboBoxElements = document.querySelectorAll(".usa-combo-box");
|
|
||||||
comboBoxElements.forEach(comboBox => {
|
|
||||||
const input = comboBox.querySelector("input");
|
|
||||||
const select = comboBox.querySelector("select");
|
|
||||||
if (!input || !select) {
|
|
||||||
console.warn("No combobox element found");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
// Set the initial value of the combobox
|
|
||||||
let initialValue = select.getAttribute("data-default-value");
|
|
||||||
let clearInputButton = comboBox.querySelector(".usa-combo-box__clear-input");
|
|
||||||
if (!clearInputButton) {
|
|
||||||
console.warn("No clear element found");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Override the default clear button behavior such that it no longer clears the input,
|
|
||||||
// it just resets to the data-initial-value.
|
|
||||||
// Due to the nature of how uswds works, this is slightly hacky.
|
|
||||||
|
|
||||||
// Input event listener to detect typing
|
|
||||||
input.addEventListener("input", () => {
|
|
||||||
isTyping = true;
|
|
||||||
});
|
|
||||||
|
|
||||||
// Blur event listener to reset typing state
|
|
||||||
input.addEventListener("blur", () => {
|
|
||||||
isTyping = false;
|
|
||||||
});
|
|
||||||
|
|
||||||
// Hide the reset button when there is nothing to reset.
|
|
||||||
// Do this once on init, then everytime a change occurs.
|
|
||||||
updateClearButtonVisibility(select, initialValue, clearInputButton)
|
|
||||||
select.addEventListener("change", () => {
|
|
||||||
updateClearButtonVisibility(select, initialValue, clearInputButton)
|
|
||||||
});
|
|
||||||
|
|
||||||
// Change the default input behaviour - have it reset to the data default instead
|
|
||||||
clearInputButton.addEventListener("click", (e) => {
|
|
||||||
if (overrideDefaultClearButton) {
|
|
||||||
e.preventDefault();
|
|
||||||
e.stopPropagation();
|
|
||||||
input.click();
|
|
||||||
// Find the dropdown option with the desired value
|
|
||||||
const dropdownOptions = document.querySelectorAll(".usa-combo-box__list-option");
|
|
||||||
if (dropdownOptions) {
|
|
||||||
dropdownOptions.forEach(option => {
|
|
||||||
if (option.getAttribute("data-value") === initialValue) {
|
|
||||||
// Simulate a click event on the dropdown option
|
|
||||||
option.click();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function updateClearButtonVisibility(select, initialValue, clearInputButton) {
|
|
||||||
if (select.value === initialValue) {
|
|
||||||
hideElement(clearInputButton);
|
|
||||||
}else {
|
|
||||||
showElement(clearInputButton)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -3,7 +3,6 @@ import { initDomainValidators } from './domain-validators.js';
|
||||||
import { initFormsetsForms, triggerModalOnDsDataForm, nameserversFormListener } from './formset-forms.js';
|
import { initFormsetsForms, triggerModalOnDsDataForm, nameserversFormListener } from './formset-forms.js';
|
||||||
import { initializeUrbanizationToggle } from './urbanization.js';
|
import { initializeUrbanizationToggle } from './urbanization.js';
|
||||||
import { userProfileListener, finishUserSetupListener } from './user-profile.js';
|
import { userProfileListener, finishUserSetupListener } from './user-profile.js';
|
||||||
import { loadInitialValuesForComboBoxes } from './combobox.js';
|
|
||||||
import { handleRequestingEntityFieldset } from './requesting-entity.js';
|
import { handleRequestingEntityFieldset } from './requesting-entity.js';
|
||||||
import { initDomainsTable } from './table-domains.js';
|
import { initDomainsTable } from './table-domains.js';
|
||||||
import { initDomainRequestsTable } from './table-domain-requests.js';
|
import { initDomainRequestsTable } from './table-domain-requests.js';
|
||||||
|
@ -31,8 +30,6 @@ initializeUrbanizationToggle();
|
||||||
userProfileListener();
|
userProfileListener();
|
||||||
finishUserSetupListener();
|
finishUserSetupListener();
|
||||||
|
|
||||||
//loadInitialValuesForComboBoxes();
|
|
||||||
|
|
||||||
handleRequestingEntityFieldset();
|
handleRequestingEntityFieldset();
|
||||||
|
|
||||||
initDomainsTable();
|
initDomainsTable();
|
||||||
|
|
|
@ -73,12 +73,14 @@ class RequestingEntityForm(RegistrarForm):
|
||||||
self.fields["sub_organization"].queryset = queryset
|
self.fields["sub_organization"].queryset = queryset
|
||||||
|
|
||||||
# Modify the choices to include "other" so that form can display options properly
|
# Modify the choices to include "other" so that form can display options properly
|
||||||
self.fields["sub_organization"].choices = [("", "--Select--")] + [
|
self.fields["sub_organization"].choices = (
|
||||||
(obj.id, str(obj)) for obj in queryset
|
[("", "--Select--")]
|
||||||
] + [("other", "Other (enter your suborganization manually)")]
|
+ [(obj.id, str(obj)) for obj in queryset]
|
||||||
|
+ [("other", "Other (enter your suborganization manually)")]
|
||||||
|
)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def from_database(cls, obj: DomainRequest | None):
|
def from_database(cls, obj: DomainRequest | Contact | None):
|
||||||
"""Returns a dict of form field values gotten from `obj`.
|
"""Returns a dict of form field values gotten from `obj`.
|
||||||
Overrides RegistrarForm method in order to set sub_organization to 'other'
|
Overrides RegistrarForm method in order to set sub_organization to 'other'
|
||||||
on GETs of the RequestingEntityForm."""
|
on GETs of the RequestingEntityForm."""
|
||||||
|
@ -86,9 +88,11 @@ class RequestingEntityForm(RegistrarForm):
|
||||||
return {}
|
return {}
|
||||||
# get the domain request as a dict, per usual method
|
# get the domain request as a dict, per usual method
|
||||||
domain_request_dict = {name: getattr(obj, name) for name in cls.declared_fields.keys()} # type: ignore
|
domain_request_dict = {name: getattr(obj, name) for name in cls.declared_fields.keys()} # type: ignore
|
||||||
|
|
||||||
# set sub_organization to 'other' if is_requesting_new_suborganization is True
|
# set sub_organization to 'other' if is_requesting_new_suborganization is True
|
||||||
if obj.is_requesting_new_suborganization():
|
if isinstance(obj, DomainRequest) and obj.is_requesting_new_suborganization():
|
||||||
domain_request_dict["sub_organization"] = "other"
|
domain_request_dict["sub_organization"] = "other"
|
||||||
|
|
||||||
return domain_request_dict
|
return domain_request_dict
|
||||||
|
|
||||||
def clean_sub_organization(self):
|
def clean_sub_organization(self):
|
||||||
|
@ -116,7 +120,6 @@ class RequestingEntityForm(RegistrarForm):
|
||||||
)
|
)
|
||||||
return name
|
return name
|
||||||
|
|
||||||
|
|
||||||
def full_clean(self):
|
def full_clean(self):
|
||||||
"""Validation logic to temporarily remove the custom suborganization value before clean is triggered.
|
"""Validation logic to temporarily remove the custom suborganization value before clean is triggered.
|
||||||
Without this override, the form will throw an 'invalid option' error."""
|
Without this override, the form will throw an 'invalid option' error."""
|
||||||
|
|
|
@ -560,7 +560,7 @@ class PortfolioDomainRequestWizard(DomainRequestWizard):
|
||||||
class RequestingEntity(DomainRequestWizard):
|
class RequestingEntity(DomainRequestWizard):
|
||||||
template_name = "domain_request_requesting_entity.html"
|
template_name = "domain_request_requesting_entity.html"
|
||||||
forms = [forms.RequestingEntityYesNoForm, forms.RequestingEntityForm]
|
forms = [forms.RequestingEntityYesNoForm, forms.RequestingEntityForm]
|
||||||
|
|
||||||
def save(self, forms: list):
|
def save(self, forms: list):
|
||||||
"""Override of save to clear or associate certain suborganization data
|
"""Override of save to clear or associate certain suborganization data
|
||||||
depending on what the user wishes to do. For instance, we want to add a suborganization
|
depending on what the user wishes to do. For instance, we want to add a suborganization
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue