mirror of
https://github.com/cisagov/manage.get.gov.git
synced 2025-05-30 09:20:15 +02:00
Merge pull request #2655 from cisagov/hotgov/2544-design-review
Issue #2544: Design review on view and manage domains, org feature - [HOTGOV]
This commit is contained in:
commit
cebbd42ce6
26 changed files with 146 additions and 117 deletions
|
@ -1220,7 +1220,7 @@ document.addEventListener('DOMContentLoaded', function() {
|
||||||
const expirationDateFormatted = expirationDate ? expirationDate.toLocaleDateString('en-US', options) : '';
|
const expirationDateFormatted = expirationDate ? expirationDate.toLocaleDateString('en-US', options) : '';
|
||||||
const expirationDateSortValue = expirationDate ? expirationDate.getTime() : '';
|
const expirationDateSortValue = expirationDate ? expirationDate.getTime() : '';
|
||||||
const actionUrl = domain.action_url;
|
const actionUrl = domain.action_url;
|
||||||
const suborganization = domain.suborganization ? domain.suborganization : '';
|
const suborganization = domain.suborganization ? domain.suborganization : '⎯';
|
||||||
|
|
||||||
const row = document.createElement('tr');
|
const row = document.createElement('tr');
|
||||||
|
|
||||||
|
@ -1229,7 +1229,7 @@ document.addEventListener('DOMContentLoaded', function() {
|
||||||
if (!noPortfolioFlag) {
|
if (!noPortfolioFlag) {
|
||||||
markupForSuborganizationRow = `
|
markupForSuborganizationRow = `
|
||||||
<td>
|
<td>
|
||||||
<span class="${suborganization ? 'ellipsis ellipsis--30 vertical-align-middle' : ''}" aria-label="${suborganization}" title="${suborganization}">${suborganization}</span>
|
<span class="text-wrap" aria-label="${domain.suborganization ? suborganization : 'No suborganization'}">${suborganization}</span>
|
||||||
</td>
|
</td>
|
||||||
`
|
`
|
||||||
}
|
}
|
||||||
|
@ -1910,7 +1910,7 @@ document.addEventListener('DOMContentLoaded', function() {
|
||||||
|
|
||||||
let editableFormGroup = button.parentElement.parentElement.parentElement;
|
let editableFormGroup = button.parentElement.parentElement.parentElement;
|
||||||
if (editableFormGroup){
|
if (editableFormGroup){
|
||||||
let readonlyField = editableFormGroup.querySelector(".input-with-edit-button__readonly-field")
|
let readonlyField = editableFormGroup.querySelector(".toggleable_input__readonly-field")
|
||||||
let inputField = document.getElementById(`id_${fieldName}`);
|
let inputField = document.getElementById(`id_${fieldName}`);
|
||||||
if (!inputField || !readonlyField) {
|
if (!inputField || !readonlyField) {
|
||||||
return;
|
return;
|
||||||
|
@ -1936,8 +1936,8 @@ document.addEventListener('DOMContentLoaded', function() {
|
||||||
// Keep the path before '#' and replace the part after '#' with 'invalid'
|
// Keep the path before '#' and replace the part after '#' with 'invalid'
|
||||||
const newHref = parts[0] + '#error';
|
const newHref = parts[0] + '#error';
|
||||||
svg.setAttribute('xlink:href', newHref);
|
svg.setAttribute('xlink:href', newHref);
|
||||||
fullNameField.classList.add("input-with-edit-button__error")
|
fullNameField.classList.add("toggleable_input__error")
|
||||||
label = fullNameField.querySelector(".input-with-edit-button__readonly-field")
|
label = fullNameField.querySelector(".toggleable_input__readonly-field")
|
||||||
label.innerHTML = "Unknown";
|
label.innerHTML = "Unknown";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2043,11 +2043,11 @@ document.addEventListener('DOMContentLoaded', function() {
|
||||||
// Due to the nature of how uswds works, this is slightly hacky.
|
// Due to the nature of how uswds works, this is slightly hacky.
|
||||||
|
|
||||||
// Use a MutationObserver to watch for changes in the dropdown list
|
// Use a MutationObserver to watch for changes in the dropdown list
|
||||||
const dropdownList = document.querySelector(`#${input.id}--list`);
|
const dropdownList = comboBox.querySelector(`#${input.id}--list`);
|
||||||
const observer = new MutationObserver(function(mutations) {
|
const observer = new MutationObserver(function(mutations) {
|
||||||
mutations.forEach(function(mutation) {
|
mutations.forEach(function(mutation) {
|
||||||
if (mutation.type === "childList") {
|
if (mutation.type === "childList") {
|
||||||
addBlankOption(clearInputButton, dropdownList, initialValue);
|
addBlankOption(clearInputButton, dropdownList, initialValue);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
@ -2111,7 +2111,7 @@ document.addEventListener('DOMContentLoaded', function() {
|
||||||
if (!initialValue){
|
if (!initialValue){
|
||||||
blankOption.classList.add("usa-combo-box__list-option--selected")
|
blankOption.classList.add("usa-combo-box__list-option--selected")
|
||||||
}
|
}
|
||||||
blankOption.textContent = "---------";
|
blankOption.textContent = "⎯";
|
||||||
|
|
||||||
dropdownList.insertBefore(blankOption, dropdownList.firstChild);
|
dropdownList.insertBefore(blankOption, dropdownList.firstChild);
|
||||||
blankOption.addEventListener("click", (e) => {
|
blankOption.addEventListener("click", (e) => {
|
||||||
|
|
|
@ -33,16 +33,19 @@ body {
|
||||||
}
|
}
|
||||||
|
|
||||||
#wrapper.dashboard--portfolio {
|
#wrapper.dashboard--portfolio {
|
||||||
background-color: color('gray-1');
|
|
||||||
padding-top: units(4)!important;
|
padding-top: units(4)!important;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#wrapper.dashboard--grey-1 {
|
||||||
|
background-color: color('gray-1');
|
||||||
|
}
|
||||||
|
|
||||||
.section--outlined {
|
|
||||||
|
.section-outlined {
|
||||||
background-color: color('white');
|
background-color: color('white');
|
||||||
border: 1px solid color('base-lighter');
|
border: 1px solid color('base-lighter');
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
padding: 0 units(2) units(3);
|
padding: 0 units(4) units(3) units(2);
|
||||||
margin-top: units(3);
|
margin-top: units(3);
|
||||||
|
|
||||||
&.margin-top-0 {
|
&.margin-top-0 {
|
||||||
|
@ -72,9 +75,13 @@ body {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.section--outlined__header--no-portfolio {
|
.section-outlined--border-base-light {
|
||||||
.section--outlined__search,
|
border: 1px solid color('base-light');
|
||||||
.section--outlined__utility-button {
|
}
|
||||||
|
|
||||||
|
.section-outlined__header--no-portfolio {
|
||||||
|
.section-outlined__search,
|
||||||
|
.section-outlined__utility-button {
|
||||||
margin-top: units(2);
|
margin-top: units(2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -82,11 +89,11 @@ body {
|
||||||
display: flex;
|
display: flex;
|
||||||
column-gap: units(3);
|
column-gap: units(3);
|
||||||
|
|
||||||
.section--outlined__search,
|
.section-outlined__search,
|
||||||
.section--outlined__utility-button {
|
.section-outlined__utility-button {
|
||||||
margin-top: 0;
|
margin-top: 0;
|
||||||
}
|
}
|
||||||
.section--outlined__search {
|
.section-outlined__search {
|
||||||
flex-grow: 4;
|
flex-grow: 4;
|
||||||
// Align right
|
// Align right
|
||||||
max-width: 383px;
|
max-width: 383px;
|
||||||
|
@ -192,3 +199,7 @@ abbr[title] {
|
||||||
max-width: 50ch;
|
max-width: 50ch;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.margin-right-neg-4px {
|
||||||
|
margin-right: -4px;
|
||||||
|
}
|
||||||
|
|
|
@ -124,10 +124,6 @@ a.withdraw:active {
|
||||||
background-color: color('error-darker');
|
background-color: color('error-darker');
|
||||||
}
|
}
|
||||||
|
|
||||||
.usa-button--unstyled .usa-icon {
|
|
||||||
vertical-align: bottom;
|
|
||||||
}
|
|
||||||
|
|
||||||
a.usa-button--unstyled:visited {
|
a.usa-button--unstyled:visited {
|
||||||
color: color('primary');
|
color: color('primary');
|
||||||
}
|
}
|
||||||
|
@ -162,14 +158,14 @@ a.usa-button--unstyled:visited {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.input-with-edit-button {
|
.toggleable_input {
|
||||||
svg.usa-icon {
|
svg.usa-icon {
|
||||||
width: 1.5em !important;
|
width: 1.5em !important;
|
||||||
height: 1.5em !important;
|
height: 1.5em !important;
|
||||||
color: #{$dhs-green};
|
color: #{$dhs-green};
|
||||||
position: absolute;
|
position: absolute;
|
||||||
}
|
}
|
||||||
&.input-with-edit-button__error {
|
&.toggleable_input__error {
|
||||||
svg.usa-icon {
|
svg.usa-icon {
|
||||||
color: #{$dhs-red};
|
color: #{$dhs-red};
|
||||||
}
|
}
|
||||||
|
@ -205,12 +201,32 @@ a.usa-button--unstyled:visited {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.dotgov-table a,
|
||||||
|
.usa-link--icon,
|
||||||
|
.usa-button--with-icon {
|
||||||
|
display: flex;
|
||||||
|
align-items: flex-start;
|
||||||
|
color: color('primary');
|
||||||
|
column-gap: units(.5);
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.dotgov-table a,
|
||||||
|
.usa-link--icon {
|
||||||
|
&:visited {
|
||||||
|
color: color('primary');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
a .usa-icon,
|
||||||
|
.usa-button--with-icon .usa-icon {
|
||||||
|
height: 1.3em;
|
||||||
|
width: 1.3em;
|
||||||
|
}
|
||||||
|
|
||||||
.usa-icon.usa-icon--big {
|
.usa-icon.usa-icon--big {
|
||||||
margin: 0;
|
margin: 0;
|
||||||
height: 1.5em;
|
height: 1.5em;
|
||||||
width: 1.5em;
|
width: 1.5em;
|
||||||
}
|
}
|
||||||
|
|
||||||
.margin-right-neg-4px {
|
|
||||||
margin-right: -4px;
|
|
||||||
}
|
|
|
@ -1,18 +0,0 @@
|
||||||
@use "uswds-core" as *;
|
|
||||||
|
|
||||||
.dotgov-table a,
|
|
||||||
.usa-link--icon {
|
|
||||||
display: flex;
|
|
||||||
align-items: flex-start;
|
|
||||||
color: color('primary');
|
|
||||||
|
|
||||||
&:visited {
|
|
||||||
color: color('primary');
|
|
||||||
}
|
|
||||||
.usa-icon {
|
|
||||||
// align icon with x height
|
|
||||||
margin-top: units(0.5);
|
|
||||||
margin-right: units(0.5);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,5 +1,10 @@
|
||||||
@use "uswds-core" as *;
|
@use "uswds-core" as *;
|
||||||
|
|
||||||
|
td,
|
||||||
|
th {
|
||||||
|
vertical-align: top;
|
||||||
|
}
|
||||||
|
|
||||||
.dotgov-table--stacked {
|
.dotgov-table--stacked {
|
||||||
td, th {
|
td, th {
|
||||||
padding: units(1) units(2) units(2px) 0;
|
padding: units(1) units(2) units(2px) 0;
|
||||||
|
@ -12,7 +17,7 @@
|
||||||
|
|
||||||
tr {
|
tr {
|
||||||
border-bottom: none;
|
border-bottom: none;
|
||||||
border-top: 2px solid color('base-light');
|
border-top: 2px solid color('base-lighter');
|
||||||
margin-top: units(2);
|
margin-top: units(2);
|
||||||
|
|
||||||
&:first-child {
|
&:first-child {
|
||||||
|
@ -39,10 +44,6 @@
|
||||||
.dotgov-table {
|
.dotgov-table {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
|
|
||||||
th[data-sortable]:not([aria-sort]) .usa-table__header__button {
|
|
||||||
right: auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
tbody th {
|
tbody th {
|
||||||
word-break: break-word;
|
word-break: break-word;
|
||||||
}
|
}
|
||||||
|
@ -56,7 +57,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
td, th {
|
td, th {
|
||||||
border-bottom: 1px solid color('base-light');
|
border-bottom: 1px solid color('base-lighter');
|
||||||
}
|
}
|
||||||
|
|
||||||
thead th {
|
thead th {
|
||||||
|
@ -72,11 +73,17 @@
|
||||||
|
|
||||||
td, th,
|
td, th,
|
||||||
.usa-tabel th{
|
.usa-tabel th{
|
||||||
padding: units(2) units(2) units(2) 0;
|
padding: units(2) units(4) units(2) 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
thead tr:first-child th:first-child {
|
thead tr:first-child th:first-child {
|
||||||
border-top: none;
|
border-top: none;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@include at-media(tablet-lg) {
|
||||||
|
th[data-sortable]:not([aria-sort]) .usa-table__header__button {
|
||||||
|
right: auto;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,7 +10,6 @@
|
||||||
--- Custom Styles ---------------------------------*/
|
--- Custom Styles ---------------------------------*/
|
||||||
@forward "base";
|
@forward "base";
|
||||||
@forward "typography";
|
@forward "typography";
|
||||||
@forward "links";
|
|
||||||
@forward "lists";
|
@forward "lists";
|
||||||
@forward "accordions";
|
@forward "accordions";
|
||||||
@forward "buttons";
|
@forward "buttons";
|
||||||
|
|
|
@ -417,7 +417,7 @@ class SeniorOfficialContactForm(ContactForm):
|
||||||
# This action should be blocked by the UI, as the text fields are readonly.
|
# This action should be blocked by the UI, as the text fields are readonly.
|
||||||
# If they get past this point, we forbid it this way.
|
# If they get past this point, we forbid it this way.
|
||||||
# This could be malicious, so lets reserve information for the backend only.
|
# This could be malicious, so lets reserve information for the backend only.
|
||||||
raise ValueError("Senior Official cannot be modified for federal or tribal domains.")
|
raise ValueError("Senior official cannot be modified for federal or tribal domains.")
|
||||||
elif db_so.has_more_than_one_join("information_senior_official"):
|
elif db_so.has_more_than_one_join("information_senior_official"):
|
||||||
# Handle the case where the domain information object is available and the SO Contact
|
# Handle the case where the domain information object is available and the SO Contact
|
||||||
# has more than one joined object.
|
# has more than one joined object.
|
||||||
|
|
|
@ -7,7 +7,9 @@ for now we just carry the attribute to both the parent element and the select.
|
||||||
|
|
||||||
<div class="usa-combo-box"
|
<div class="usa-combo-box"
|
||||||
{% for name, value in widget.attrs.items %}
|
{% for name, value in widget.attrs.items %}
|
||||||
{{ name }}="{{ value }}"
|
{% if name != 'id' %}
|
||||||
|
{{ name }}="{{ value }}"
|
||||||
|
{% endif %}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
>
|
>
|
||||||
{% include "django/forms/widgets/select.html" %}
|
{% include "django/forms/widgets/select.html" %}
|
||||||
|
|
|
@ -63,10 +63,10 @@
|
||||||
|
|
||||||
<div class="grid-row margin-top-1">
|
<div class="grid-row margin-top-1">
|
||||||
<div class="grid-col">
|
<div class="grid-col">
|
||||||
<button type="button" class="usa-button usa-button--unstyled display-block float-right-tablet delete-record">
|
<button type="button" class="usa-button usa-button--unstyled usa-button--with-icon float-right-tablet delete-record">
|
||||||
<svg class="usa-icon" aria-hidden="true" focusable="false" role="img" width="24" height="24">
|
<svg class="usa-icon" aria-hidden="true" focusable="false" role="img" width="24" height="24">
|
||||||
<use xlink:href="{%static 'img/sprite.svg'%}#delete"></use>
|
<use xlink:href="{%static 'img/sprite.svg'%}#delete"></use>
|
||||||
</svg><span class="margin-left-05">Delete</span>
|
</svg>Delete
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -74,10 +74,10 @@
|
||||||
</fieldset>
|
</fieldset>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|
||||||
<button type="button" class="usa-button usa-button--unstyled display-block margin-bottom-2" id="add-form">
|
<button type="button" class="usa-button usa-button--unstyled usa-button--with-icon margin-bottom-2" id="add-form">
|
||||||
<svg class="usa-icon" aria-hidden="true" focusable="false" role="img" width="24" height="24">
|
<svg class="usa-icon" aria-hidden="true" focusable="false" role="img" width="24" height="24">
|
||||||
<use xlink:href="{%static 'img/sprite.svg'%}#add_circle"></use>
|
<use xlink:href="{%static 'img/sprite.svg'%}#add_circle"></use>
|
||||||
</svg><span class="margin-left-05">Add new record</span>
|
</svg>Add new record
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
<button
|
<button
|
||||||
|
|
|
@ -52,20 +52,20 @@
|
||||||
{% endwith %}
|
{% endwith %}
|
||||||
</div>
|
</div>
|
||||||
<div class="tablet:grid-col-2">
|
<div class="tablet:grid-col-2">
|
||||||
<button type="button" class="usa-button usa-button--unstyled display-block delete-record margin-bottom-075">
|
<button type="button" class="usa-button usa-button--unstyled usa-button--with-icon delete-record margin-bottom-075">
|
||||||
<svg class="usa-icon" aria-hidden="true" focusable="false" role="img" width="24" height="24">
|
<svg class="usa-icon" aria-hidden="true" focusable="false" role="img" width="24" height="24">
|
||||||
<use xlink:href="{%static 'img/sprite.svg'%}#delete"></use>
|
<use xlink:href="{%static 'img/sprite.svg'%}#delete"></use>
|
||||||
</svg><span class="margin-left-05">Delete</span>
|
</svg>Delete
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|
||||||
<button type="button" class="usa-button usa-button--unstyled display-block" id="add-form">
|
<button type="button" class="usa-button usa-button--unstyled usa-button--with-icon" id="add-form">
|
||||||
<svg class="usa-icon" aria-hidden="true" focusable="false" role="img" width="24" height="24">
|
<svg class="usa-icon" aria-hidden="true" focusable="false" role="img" width="24" height="24">
|
||||||
<use xlink:href="{%static 'img/sprite.svg'%}#add_circle"></use>
|
<use xlink:href="{%static 'img/sprite.svg'%}#add_circle"></use>
|
||||||
</svg><span class="margin-left-05">Add another name server</span>
|
</svg>Add another name server
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
{% comment %} Work around USWDS' button margins to add some spacing between the submit and the 'add more'
|
{% comment %} Work around USWDS' button margins to add some spacing between the submit and the 'add more'
|
||||||
|
|
|
@ -42,7 +42,7 @@
|
||||||
|
|
||||||
{% input_with_errors form.state_territory %}
|
{% input_with_errors form.state_territory %}
|
||||||
|
|
||||||
{% with add_class="usa-input--small" %}
|
{% with add_class="usa-input--small" sublabel_text="Enter a zip code in the required format, like 12345 or 12345-6789." %}
|
||||||
{% input_with_errors form.zipcode %}
|
{% input_with_errors form.zipcode %}
|
||||||
{% endwith %}
|
{% endwith %}
|
||||||
|
|
||||||
|
|
|
@ -33,7 +33,7 @@
|
||||||
|
|
||||||
{% input_with_errors forms.0.state_territory %}
|
{% input_with_errors forms.0.state_territory %}
|
||||||
|
|
||||||
{% with add_class="usa-input--small" %}
|
{% with add_class="usa-input--small" sublabel_text="Enter a zip code in the required format, like 12345 or 12345-6789." %}
|
||||||
{% input_with_errors forms.0.zipcode %}
|
{% input_with_errors forms.0.zipcode %}
|
||||||
{% endwith %}
|
{% endwith %}
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
{% extends "domain_base.html" %}
|
{% extends "domain_base.html" %}
|
||||||
{% load static field_helpers%}
|
{% load static field_helpers%}
|
||||||
|
|
||||||
{% block title %}Suborganization{% endblock %}
|
{% block title %}Suborganization{% if suborganization_name %} | suborganization_name{% endif %} | {% endblock %}
|
||||||
|
|
||||||
{% block domain_content %}
|
{% block domain_content %}
|
||||||
{# this is right after the messages block in the parent template #}
|
{# this is right after the messages block in the parent template #}
|
||||||
|
|
|
@ -21,7 +21,7 @@
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
{% if domain.permissions %}
|
{% if domain.permissions %}
|
||||||
<section class="section--outlined">
|
<section class="section-outlined">
|
||||||
<table class="usa-table usa-table--borderless usa-table--stacked dotgov-table--stacked dotgov-table">
|
<table class="usa-table usa-table--borderless usa-table--stacked dotgov-table--stacked dotgov-table">
|
||||||
<h2 class> Domain managers </h2>
|
<h2 class> Domain managers </h2>
|
||||||
<caption class="sr-only">Domain managers</caption>
|
<caption class="sr-only">Domain managers</caption>
|
||||||
|
@ -112,7 +112,7 @@
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
{% if domain.invitations.exists %}
|
{% if domain.invitations.exists %}
|
||||||
<section class="section--outlined">
|
<section class="section-outlined">
|
||||||
<h2>Invitations</h2>
|
<h2>Invitations</h2>
|
||||||
<table class="usa-table usa-table--borderless usa-table--stacked dotgov-table--stacked dotgov-table">
|
<table class="usa-table usa-table--borderless usa-table--stacked dotgov-table--stacked dotgov-table">
|
||||||
<caption class="sr-only">Domain invitations</caption>
|
<caption class="sr-only">Domain invitations</caption>
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
{% comment %} Stores the json endpoint in a url for easier access {% endcomment %}
|
{% comment %} Stores the json endpoint in a url for easier access {% endcomment %}
|
||||||
{% url 'get_domain_requests_json' as url %}
|
{% url 'get_domain_requests_json' as url %}
|
||||||
<span id="get_domain_requests_json_url" class="display-none">{{url}}</span>
|
<span id="get_domain_requests_json_url" class="display-none">{{url}}</span>
|
||||||
<section class="section--outlined domain-requests" id="domain-requests">
|
<section class="section-outlined domain-requests{% if portfolio %} section-outlined--border-base-light{% endif %}" id="domain-requests">
|
||||||
<div class="grid-row">
|
<div class="grid-row">
|
||||||
{% if not has_domain_requests_portfolio_permission %}
|
{% if not has_domain_requests_portfolio_permission %}
|
||||||
<div class="mobile:grid-col-12 desktop:grid-col-6">
|
<div class="mobile:grid-col-12 desktop:grid-col-6">
|
||||||
|
|
|
@ -5,8 +5,8 @@
|
||||||
{% comment %} Stores the json endpoint in a url for easier access {% endcomment %}
|
{% comment %} Stores the json endpoint in a url for easier access {% endcomment %}
|
||||||
{% url 'get_domains_json' as url %}
|
{% url 'get_domains_json' as url %}
|
||||||
<span id="get_domains_json_url" class="display-none">{{url}}</span>
|
<span id="get_domains_json_url" class="display-none">{{url}}</span>
|
||||||
<section class="section--outlined domains{% if not portfolio %} margin-top-0{% endif %}" id="domains">
|
<section class="section-outlined domains margin-top-0{% if portfolio %} section-outlined--border-base-light{% endif %}" id="domains">
|
||||||
<div class="section--outlined__header margin-bottom-3 {% if not portfolio %} section--outlined__header--no-portfolio justify-content-space-between{% else %} grid-row{% endif %}">
|
<div class="section-outlined__header margin-bottom-3 {% if not portfolio %} section-outlined__header--no-portfolio justify-content-space-between{% else %} grid-row{% endif %}">
|
||||||
{% if not portfolio %}
|
{% if not portfolio %}
|
||||||
<h2 id="domains-header" class="display-inline-block">Domains</h2>
|
<h2 id="domains-header" class="display-inline-block">Domains</h2>
|
||||||
<span class="display-none" id="no-portfolio-js-flag"></span>
|
<span class="display-none" id="no-portfolio-js-flag"></span>
|
||||||
|
@ -14,7 +14,7 @@
|
||||||
<!-- Embedding the portfolio value in a data attribute -->
|
<!-- Embedding the portfolio value in a data attribute -->
|
||||||
<span id="portfolio-js-value" data-portfolio="{{ portfolio.id }}"></span>
|
<span id="portfolio-js-value" data-portfolio="{{ portfolio.id }}"></span>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<div class="section--outlined__search {% if portfolio %} mobile:grid-col-12 desktop:grid-col-6{% endif %}">
|
<div class="section-outlined__search {% if portfolio %} mobile:grid-col-12 desktop:grid-col-6{% endif %}">
|
||||||
<section aria-label="Domains search component" class="margin-top-2">
|
<section aria-label="Domains search component" class="margin-top-2">
|
||||||
<form class="usa-search usa-search--small" method="POST" role="search">
|
<form class="usa-search usa-search--small" method="POST" role="search">
|
||||||
{% csrf_token %}
|
{% csrf_token %}
|
||||||
|
@ -43,10 +43,10 @@
|
||||||
</section>
|
</section>
|
||||||
</div>
|
</div>
|
||||||
{% if user_domain_count and user_domain_count > 0 %}
|
{% if user_domain_count and user_domain_count > 0 %}
|
||||||
<div class="section--outlined__utility-button mobile-lg:padding-right-105 {% if portfolio %} mobile:grid-col-12 desktop:grid-col-6 desktop:padding-left-3{% endif %}">
|
<div class="section-outlined__utility-button mobile-lg:padding-right-105 {% if portfolio %} mobile:grid-col-12 desktop:grid-col-6 desktop:padding-left-3{% endif %}">
|
||||||
<section aria-label="Domains report component" class="mobile-lg:margin-top-205">
|
<section aria-label="Domains report component" class="margin-top-205">
|
||||||
<a href="{% url 'export_data_type_user' %}" class="usa-button usa-button--unstyled" role="button">
|
<a href="{% url 'export_data_type_user' %}" class="usa-button usa-button--unstyled usa-button--with-icon" role="button">
|
||||||
<svg class="usa-icon usa-icon--big margin-right-neg-4px" aria-hidden="true" focusable="false" role="img" width="24" height="24">
|
<svg class="usa-icon usa-icon--big" aria-hidden="true" focusable="false" role="img" width="24" height="24">
|
||||||
<use xlink:href="{%static 'img/sprite.svg'%}#file_download"></use>
|
<use xlink:href="{%static 'img/sprite.svg'%}#file_download"></use>
|
||||||
</svg>Export as CSV
|
</svg>Export as CSV
|
||||||
</a>
|
</a>
|
||||||
|
|
|
@ -12,6 +12,29 @@
|
||||||
<button type="button" class="usa-nav__close">
|
<button type="button" class="usa-nav__close">
|
||||||
<img src="{%static 'img/usa-icons/close.svg'%}" role="img" alt="Close" />
|
<img src="{%static 'img/usa-icons/close.svg'%}" role="img" alt="Close" />
|
||||||
</button>
|
</button>
|
||||||
|
<div class="usa-nav__secondary">
|
||||||
|
<ul class="usa-nav__secondary-links">
|
||||||
|
<li class="usa-nav__secondary-item">
|
||||||
|
{% if user.is_authenticated %}
|
||||||
|
<span class="ellipsis usa-nav__username">{{ user.email }}</span>
|
||||||
|
</li>
|
||||||
|
{% if has_profile_feature_flag %}
|
||||||
|
<li class="usa-nav__secondary-item">
|
||||||
|
{% url 'user-profile' as user_profile_url %}
|
||||||
|
{% url 'finish-user-profile-setup' as finish_setup_url %}
|
||||||
|
<a class="usa-nav-link {% if path == user_profile_url or path == finish_setup_url %}usa-current{% endif %}" href="{{ user_profile_url }}">
|
||||||
|
Your profile
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
{% endif %}
|
||||||
|
<li class="usa-nav__secondary-item">
|
||||||
|
<a class="usa-nav-link" href="{% url 'logout' %}">Sign out</a>
|
||||||
|
{% else %}
|
||||||
|
<a class="usa-nav-link" href="{% url 'login' %}">Sign in</a>
|
||||||
|
{% endif %}
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
<ul class="usa-nav__primary usa-accordion">
|
<ul class="usa-nav__primary usa-accordion">
|
||||||
<li class="usa-nav__primary-item">
|
<li class="usa-nav__primary-item">
|
||||||
{% if has_domains_portfolio_permission %}
|
{% if has_domains_portfolio_permission %}
|
||||||
|
@ -45,36 +68,13 @@
|
||||||
<li class="usa-nav__primary-item">
|
<li class="usa-nav__primary-item">
|
||||||
{% url 'organization' as url %}
|
{% url 'organization' as url %}
|
||||||
<!-- Move the padding from the a to the span so that the descenders do not get cut off -->
|
<!-- Move the padding from the a to the span so that the descenders do not get cut off -->
|
||||||
<a href="{{ url }}" class="usa-nav-link padding-y-0">
|
<a href="{{ url }}" class="usa-nav-link padding-y-0 {% if request.path == '/organization/' %} usa-current{% endif %}">
|
||||||
<span class="ellipsis ellipsis--23 ellipsis--desktop-50 padding-y-1 desktop:padding-y-2">
|
<span class="ellipsis ellipsis--23 ellipsis--desktop-50 padding-y-1 desktop:padding-y-2">
|
||||||
{{ portfolio.organization_name }}
|
{{ portfolio.organization_name }}
|
||||||
</span>
|
</span>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
<div class="usa-nav__secondary">
|
|
||||||
<ul class="usa-nav__secondary-links">
|
|
||||||
<li class="usa-nav__secondary-item">
|
|
||||||
{% if user.is_authenticated %}
|
|
||||||
<span class="ellipsis usa-nav__username">{{ user.email }}</span>
|
|
||||||
</li>
|
|
||||||
{% if has_profile_feature_flag %}
|
|
||||||
<li class="usa-nav__secondary-item">
|
|
||||||
{% url 'user-profile' as user_profile_url %}
|
|
||||||
{% url 'finish-user-profile-setup' as finish_setup_url %}
|
|
||||||
<a class="usa-nav-link {% if path == user_profile_url or path == finish_setup_url %}usa-current{% endif %}" href="{{ user_profile_url }}">
|
|
||||||
Your profile
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
{% endif %}
|
|
||||||
<li class="usa-nav__secondary-item">
|
|
||||||
<a class="usa-nav-link" href="{% url 'logout' %}">Sign out</a>
|
|
||||||
{% else %}
|
|
||||||
<a class="usa-nav-link" href="{% url 'login' %}">Sign in</a>
|
|
||||||
{% endif %}
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</nav>
|
</nav>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
{% include "includes/form_errors.html" with form=form %}
|
{% include "includes/form_errors.html" with form=form %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
<h1>Senior Official</h1>
|
<h1>Senior official</h1>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
Your senior official is a person within your organization who can authorize domain requests.
|
Your senior official is a person within your organization who can authorize domain requests.
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{% load static field_helpers url_helpers custom_filters %}
|
{% load static field_helpers url_helpers custom_filters %}
|
||||||
|
|
||||||
<div id="{{field.name}}__edit-button-readonly" class="margin-top-2 margin-bottom-1 input-with-edit-button {% if not field.value and field.field.required %}input-with-edit-button__error{% endif %}">
|
<div id="{{field.name}}__edit-button-readonly" class="margin-top-2 margin-bottom-1 toggleable_input {% if not field.value and field.field.required %}toggleable_input__error{% endif %}">
|
||||||
<svg class="usa-icon" aria-hidden="true" focusable="false" role="img" width="24" height="24">
|
<svg class="usa-icon" aria-hidden="true" focusable="false" role="img" width="24" height="24">
|
||||||
{% if field.value or not field.field.required %}
|
{% if field.value or not field.field.required %}
|
||||||
<use xlink:href="{%static 'img/sprite.svg'%}#check_circle"></use>
|
<use xlink:href="{%static 'img/sprite.svg'%}#check_circle"></use>
|
||||||
|
@ -8,7 +8,7 @@
|
||||||
<use xlink:href="{%static 'img/sprite.svg'%}#error"></use>
|
<use xlink:href="{%static 'img/sprite.svg'%}#error"></use>
|
||||||
{%endif %}
|
{%endif %}
|
||||||
</svg>
|
</svg>
|
||||||
<div class="display-inline padding-left-05 margin-left-3 input-with-edit-button__readonly-field {% if not field.field.required %}text-base{% endif %}">
|
<div class="display-inline padding-left-05 margin-left-3 toggleable_input__readonly-field {% if not field.field.required %}text-base{% endif %}">
|
||||||
{% if field.name != "phone" %}
|
{% if field.name != "phone" %}
|
||||||
{{ field.value }}
|
{{ field.value }}
|
||||||
{% else %}
|
{% else %}
|
||||||
|
|
|
@ -5,9 +5,10 @@
|
||||||
{% block title %} Domains | {% endblock %}
|
{% block title %} Domains | {% endblock %}
|
||||||
|
|
||||||
{% block portfolio_content %}
|
{% block portfolio_content %}
|
||||||
|
<div id="main-content">
|
||||||
<h1 id="domains-header">Domains</h1>
|
<h1 id="domains-header">Domains</h1>
|
||||||
<section class="section--outlined">
|
<section class="section-outlined">
|
||||||
<div class="section--outlined__header margin-bottom-3">
|
<div class="section-outlined__header margin-bottom-3">
|
||||||
<h2 id="domains-header" class="display-inline-block">You aren’t managing any domains.</h2>
|
<h2 id="domains-header" class="display-inline-block">You aren’t managing any domains.</h2>
|
||||||
{% if portfolio_administrators %}
|
{% if portfolio_administrators %}
|
||||||
<p>If you believe you should have access to a domain, reach out to your organization’s administrators.</p>
|
<p>If you believe you should have access to a domain, reach out to your organization’s administrators.</p>
|
||||||
|
@ -27,4 +28,5 @@
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
</div>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
{% extends "base.html" %}
|
{% extends "base.html" %}
|
||||||
|
|
||||||
{% block wrapper %}
|
{% block wrapper %}
|
||||||
<div id="wrapper" class="dashboard--portfolio">
|
<div id="wrapper" class="{% block wrapper_class %}dashboard--portfolio{% endblock %}">
|
||||||
{% block content %}
|
{% block content %}
|
||||||
|
|
||||||
<main id="main-content" class="grid-container">
|
<main class="grid-container">
|
||||||
{% if user.is_authenticated %}
|
{% if user.is_authenticated %}
|
||||||
{# the entire logged in page goes here #}
|
{# the entire logged in page goes here #}
|
||||||
|
|
||||||
|
@ -26,10 +26,8 @@
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</main>
|
</main>
|
||||||
|
|
||||||
{% endblock %}
|
{% endblock content%}
|
||||||
|
|
||||||
<div role="complementary">{% block complementary %}{% endblock %}</div>
|
<div role="complementary">{% block complementary %}{% endblock %}</div>
|
||||||
|
|
||||||
{% block content_bottom %}{% endblock %}
|
{% block content_bottom %}{% endblock %}
|
||||||
</div>
|
</div>
|
||||||
{% endblock wrapper %}
|
{% endblock wrapper %}
|
||||||
|
|
|
@ -4,7 +4,13 @@
|
||||||
|
|
||||||
{% block title %} Domains | {% endblock %}
|
{% block title %} Domains | {% endblock %}
|
||||||
|
|
||||||
|
{% block wrapper_class %}
|
||||||
|
{{ block.super }} dashboard--grey-1
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
{% block portfolio_content %}
|
{% block portfolio_content %}
|
||||||
|
<div id="main-content">
|
||||||
<h1 id="domains-header">Domains</h1>
|
<h1 id="domains-header">Domains</h1>
|
||||||
{% include "includes/domains_table.html" with portfolio=portfolio user_domain_count=user_domain_count %}
|
{% include "includes/domains_table.html" with portfolio=portfolio user_domain_count=user_domain_count %}
|
||||||
|
</div>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
{% extends 'portfolio_base.html' %}
|
{% extends 'portfolio_base.html' %}
|
||||||
{% load static field_helpers%}
|
{% load static field_helpers%}
|
||||||
|
|
||||||
{% block title %}Organization mailing address | {{ portfolio.name }} | {% endblock %}
|
{% block title %}Organization mailing address | {{ portfolio.name }}{% endblock %}
|
||||||
|
|
||||||
{% load static %}
|
{% load static %}
|
||||||
|
|
||||||
|
@ -17,7 +17,7 @@
|
||||||
{% include 'portfolio_organization_sidebar.html' %}
|
{% include 'portfolio_organization_sidebar.html' %}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="tablet:grid-col-9">
|
<div class="tablet:grid-col-9" id="main-content">
|
||||||
|
|
||||||
<h1>Organization</h1>
|
<h1>Organization</h1>
|
||||||
|
|
||||||
|
@ -41,7 +41,7 @@
|
||||||
{% input_with_errors form.address_line2 %}
|
{% input_with_errors form.address_line2 %}
|
||||||
{% input_with_errors form.city %}
|
{% input_with_errors form.city %}
|
||||||
{% input_with_errors form.state_territory %}
|
{% input_with_errors form.state_territory %}
|
||||||
{% with add_class="usa-input--small" %}
|
{% with add_class="usa-input--small" sublabel_text="Enter a zip code in the required format, like 12345 or 12345-6789." %}
|
||||||
{% input_with_errors form.zipcode %}
|
{% input_with_errors form.zipcode %}
|
||||||
{% endwith %}
|
{% endwith %}
|
||||||
<button type="submit" class="usa-button">
|
<button type="submit" class="usa-button">
|
||||||
|
|
|
@ -4,7 +4,12 @@
|
||||||
|
|
||||||
{% block title %} Domain requests | {% endblock %}
|
{% block title %} Domain requests | {% endblock %}
|
||||||
|
|
||||||
|
{% block wrapper_class %}
|
||||||
|
{{ block.super }} dashboard--grey-1
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
{% block portfolio_content %}
|
{% block portfolio_content %}
|
||||||
|
<div id="main-content">
|
||||||
<h1 id="domain-requests-header">Domain requests</h1>
|
<h1 id="domain-requests-header">Domain requests</h1>
|
||||||
|
|
||||||
{% comment %}
|
{% comment %}
|
||||||
|
@ -20,4 +25,5 @@
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
{% include "includes/domain_requests_table.html" with portfolio=portfolio %}
|
{% include "includes/domain_requests_table.html" with portfolio=portfolio %}
|
||||||
|
</div>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
{% extends 'portfolio_base.html' %}
|
{% extends 'portfolio_base.html' %}
|
||||||
{% load static field_helpers%}
|
{% load static field_helpers%}
|
||||||
|
|
||||||
{% block title %}Senior Official | {{ portfolio.name }} | {% endblock %}
|
{% block title %}Senior official | {{ portfolio.name }}{% endblock %}
|
||||||
|
|
||||||
{% load static %}
|
{% load static %}
|
||||||
|
|
||||||
|
@ -17,7 +17,7 @@
|
||||||
{% include 'portfolio_organization_sidebar.html' %}
|
{% include 'portfolio_organization_sidebar.html' %}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="tablet:grid-col-9">
|
<div class="tablet:grid-col-9" id="main-content">
|
||||||
{% include "includes/senior_official.html" with can_edit=False %}
|
{% include "includes/senior_official.html" with can_edit=False %}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -1153,7 +1153,7 @@ class TestDomainSeniorOfficial(TestDomainOverview):
|
||||||
def test_domain_senior_official(self):
|
def test_domain_senior_official(self):
|
||||||
"""Can load domain's senior official page."""
|
"""Can load domain's senior official page."""
|
||||||
page = self.client.get(reverse("domain-senior-official", kwargs={"pk": self.domain.id}))
|
page = self.client.get(reverse("domain-senior-official", kwargs={"pk": self.domain.id}))
|
||||||
self.assertContains(page, "Senior official", count=3)
|
self.assertContains(page, "Senior official", count=4)
|
||||||
|
|
||||||
@less_console_noise_decorator
|
@less_console_noise_decorator
|
||||||
def test_domain_senior_official_content(self):
|
def test_domain_senior_official_content(self):
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue