>
+ * activityReportId : integer(32) REFERENCES public.ActivityReport.id
+ * objectiveId : integer(32) REFERENCES public.Objective.id
+ * createdAt : timestamp
+ * updatedAt : timestamp
+}
+
User ||-o{ Region
User }o--|{ Permission
Scope }o--|{ Permission
@@ -211,6 +229,9 @@ ActivityReport .. NextSteps
ActivityReport .. ActivityReportGoal
Goal .. ActivityReportGoal
Goal }|--|{ ActivityReport
+Goal ||-o{ Objective
+ActivityReportObjective }o--|{ Objective
+ActivityReportObjective }o--|{ ActivityReport
User ||-o{ ActivityReport
ActivityReport ||-o{ ActivityParticipant
@@ -222,7 +243,7 @@ NonGrantee ||-{ ActivityParticipant
Instructions
------------
-1. [Edit this diagram with plantuml.com](http://www.plantuml.com/plantuml/uml/nLTjRzis4FwkNy5lUm5Y31k60KLGDCtS8S2M1N7w0yxIHUP6yRZZAQsHvBzFD1FPjEI4jR3rIm8zz_xmZaU_ym8iRMCANu91zSFibv-BuXi5TwGhvPYM1XklFcbPAR2rmKgLJ9-ykaMKml-jhGE6HXbjKTOE5R6ig2XA0zwhZnvPtHTAVQywRs-Kje9r1vsUrcYHGR1w-tOZNddqGViYg7bXRUi4jz3WhYJWPsqNYhLez9q8c65z6XM2ptqBjoABbsspHDw5iG5jTW7HOl2DGjis8GurU8sr9dknKy2tF_tudRgUVvXVpo_FvmlbsgNHvImg-fckDhaRyF8xrTfsXg8Rz0ADsqXAnb3xcGmahQj698_FXCO8UPIc1FGk5YKvFCQ3KXNwahKJJRP79vLpXTnexxDBQZronZc4XkbFWOyyFHzuoZ3Ry1ciffxiFss7pPc9VGuRvCA79hjxGYthtSy6PKN9H74CyvwgTGfxHzRZ8VoSAkpnYOMI6Mk_brhsXfmkispICD4kgxEOJCvX1w_zMKjmVr6zPhF9Odg3_4PWyZXGoWj8wtUHuF2MzzIq_y3KB1fWyIj4kH6uCX0QQaba4EoaZEEnlPHstSaoI0yklXBfb_XP5e9kEv5f1L2AljEolaP7BA-dTPReFwTdIJ0PhW3Sh1sEJzp16iRxXi4APexS5B9Yf8Dn1flts8kvZWNbD4xK38Q3cOW8owyWk5Sescg8JYOcT776NNHCWIarkNR1wjWnd31HP6FMnxn1feLEXoydFAEdbilD4pHPer1LEknUC9Sac7HLRFG_Rw-0HPVQ1QQJMQZGw3lazH-3vLor_KQliDGDcAGRGt5zsoOGz9Lr0JLQ2PV7oDf7JgaSpeHZgXcQO3_sg1RW6kMAN6iscOxfC88dEo9m2IFxudYpZme4OZq3IKbMyBCa1K2D2udi_EN9Tb03jWCvFQcZtvC6l7oCZVP-_Hy_Hf_CfhVyjXcp-dwusDGHc-tBhgDeOllh8SDkUvTC9YfD_voCWIKn2F7_oDSNDMGm6Ky_VzLCJVk83VAKTgX0FJoSqBsAhHwHHpevURZV-LrOn9-hGpnQZGd8FEl75sYn-QiU7pPGoA68NTEhzVkv27y6Q7GvcwdmVyVbE1I3RhsbI0mSAkz3F9MIOYdFmSdX3etKlQmozDS_RL-DbTHoI1JftHCdvxmdIZyJdUI-Yfm5-RXuUmaSrdc7jceRyoy0)
+1. [Edit this diagram with plantuml.com](http://www.plantuml.com/plantuml/uml/nLTVRzis47_Nf-3R_g0nYkrXG14KJJDt2B2vHfn-05gwoEme7dSyfJ6IVFUP8aA8YfpGrfQ-9F3l_j_zZgG-E9R4RQCBLqeDuktijxT5yOEGDwWgOGdN6XedlYdU26bg3PKe2RyvSGt0XVjR6Ij9Da8h0xor891uWqLHQkcS-EA0n5qXnCz2LUATK8QXta6dfpKO8CbGlN_VYJSEdDU-y6gEIPawmOrie2_n-5cx2qMA5RYTI1B9xMbGy3w75dQ31XPjimRgmz18fVi0AzRmJe1f6ny76xY4Mg6vw1Nmuw-__2Gkvv_cb_F5-NmbRBlMgfm5HJTJLPUxbex_n5gPdI6h1XpBndQIai3NViPF9AsjHYGFZmqD4V9QcZOWkbYLQE4O3q9Ku4fIbXMQY4ugPmdKAEUoIseTKCOSF67Y5EZ8wJdVfmophf_UQkfa_sbts9m8oULq0wt_eT3q9zIIwlziW3UOR1I5C1-nsgQmisWSxCFFiOA8JomKzHZzdgFi5LfLvjl4CC4kYrc4EcVOtckSDNlt5zLBDbqMqmdo1qgTrmCX74jkNH_n3gzfeARS9y9crKXYjm7WAvPBBJsXreWQf9cKSHZRSsdNErb6qxsBxzJq1TpoYi6wM49QWInPtIZUNe95ufVJEalq7zCpo90ibmUkjXR6Dsvl3UEy8MaOybPkKhD2fBrnXZVlqGTp7GhA8KxGz8OZE-4Hujybmw1GCDK8EhKndiLvPz711QQjoRNpLWUluVIDGXEoFl8DCY5qkdmvuGaSjbHsJz3a6fLLfLYXaNg130ch0j4_NoybiIgLzPrETg42hMw0jdyzkPohDjxe5PIgaJfXeoykqZQ1PAni5r21ONzuZ5pxG4ahHtR24jOa6sy_zgXcIJNm4cshkqp7T0YaGpCYi6b71k9mieyAMFfyHYGb6ePRJWgGDQmuTEUhGxE36cbs8AMJElezgQNZBu5e7xV_ysDqyhPzNdy5pusCPJlm90YfiM8DiQTlmh2MX3UgWYh11rHxyz-iSc_9yYeSNjZYY1lxi6Csc9Xux6NOBQBoP0AawP-ZrdAD91dfjVfrwA9vaptfUzwzLjh7xCEUjECIlchk-1WrmqFCS0BV_Ep4_Vq9tebmU0Na0KzExkzwN_f5zy4yWWUhCG7ggD-zwulkhtYuxo3V_IBiIrIBBwx2_tc21fUpcV3_Uox7eH0qUXiW8R2lF8PuB2N1qYbv9_jtCxJkMPKHV_5ZvSLOIItxHA6z0t4GXJ57rXJx-1xwdg-OYXDE3KJfpqGdkHN2VBnyNDnxZkxL-G2cQXlzBm00)
2. Copy and paste the final UML into the UML Source section
3. Update the img src and edit link target to the current values
diff --git a/frontend/package.json b/frontend/package.json
index 901c15a1b1..094b4e2845 100644
--- a/frontend/package.json
+++ b/frontend/package.json
@@ -10,7 +10,7 @@
"@fortawesome/free-solid-svg-icons": "^5.15.1",
"@fortawesome/react-fontawesome": "^0.1.11",
"@hookform/error-message": "^0.0.5",
- "@trussworks/react-uswds": "^1.12.2",
+ "@trussworks/react-uswds": "1.11.0",
"@use-it/interval": "^1.0.0",
"http-proxy-middleware": "^1.0.5",
"lodash": "^4.17.20",
diff --git a/frontend/src/App.css b/frontend/src/App.css
index 29123b2c96..c7549c0f85 100644
--- a/frontend/src/App.css
+++ b/frontend/src/App.css
@@ -1,3 +1,7 @@
+.usa-skipnav:focus {
+ z-index: 999999;
+}
+
.smart-hub-offset-nav {
margin-left: 8rem;
}
diff --git a/frontend/src/components/DatePicker.css b/frontend/src/components/DatePicker.css
index 1586359b58..d1fb65001e 100644
--- a/frontend/src/components/DatePicker.css
+++ b/frontend/src/components/DatePicker.css
@@ -7,7 +7,7 @@
with the tab key. Since the open button has tabindex of -1
we won't run into an issue of focus moving "backwards"
*/
- flex-direction: row-reverse;
+ /* flex-direction: row-reverse; */
width: fit-content;
}
diff --git a/frontend/src/components/DatePicker.js b/frontend/src/components/DatePicker.js
index 3257e5d87e..cf080a8ce7 100644
--- a/frontend/src/components/DatePicker.js
+++ b/frontend/src/components/DatePicker.js
@@ -14,7 +14,7 @@ import React, { useState } from 'react';
import PropTypes from 'prop-types';
import { SingleDatePicker } from 'react-dates';
import { OPEN_UP, OPEN_DOWN } from 'react-dates/constants';
-import { Controller } from 'react-hook-form';
+import { Controller } from 'react-hook-form/dist/index.ie11';
import moment from 'moment';
import './DatePicker.css';
@@ -22,7 +22,7 @@ import './DatePicker.css';
const dateFmt = 'MM/DD/YYYY';
const DateInput = ({
- control, minDate, name, disabled, maxDate, openUp, required,
+ control, minDate, name, disabled, maxDate, openUp, required, ariaName,
}) => {
const hintId = `${name}-hint`;
const [isFocused, updateFocus] = useState(false);
@@ -35,6 +35,8 @@ const DateInput = ({
return isBefore || isAfter;
};
+ const message = isFocused ? '' : 'Navigate forward and push button to open the calendar';
+
return (
<>
mm/dd/yyyy
@@ -43,22 +45,35 @@ const DateInput = ({
const date = value ? moment(value, dateFmt) : null;
return (
-
);
@@ -80,6 +95,7 @@ DateInput.propTypes = {
// eslint-disable-next-line react/forbid-prop-types
control: PropTypes.object.isRequired,
name: PropTypes.string.isRequired,
+ ariaName: PropTypes.string.isRequired,
minDate: PropTypes.string,
maxDate: PropTypes.string,
openUp: PropTypes.bool,
diff --git a/frontend/src/components/FormItem.js b/frontend/src/components/FormItem.js
index 70d6635de4..1a44644c5a 100644
--- a/frontend/src/components/FormItem.js
+++ b/frontend/src/components/FormItem.js
@@ -1,6 +1,6 @@
import React from 'react';
import PropTypes from 'prop-types';
-import { useFormContext } from 'react-hook-form';
+import { useFormContext } from 'react-hook-form/dist/index.ie11';
import { ErrorMessage as ReactHookFormError } from '@hookform/error-message';
import {
Label, FormGroup, ErrorMessage, Fieldset,
diff --git a/frontend/src/components/MultiSelect.js b/frontend/src/components/MultiSelect.js
index fee1bef4ba..73dfd2a45e 100644
--- a/frontend/src/components/MultiSelect.js
+++ b/frontend/src/components/MultiSelect.js
@@ -23,7 +23,7 @@
import React from 'react';
import PropTypes from 'prop-types';
import Select, { components } from 'react-select';
-import { Controller } from 'react-hook-form';
+import { Controller } from 'react-hook-form/dist/index.ie11';
import arrowBoth from '../images/arrow-both.svg';
@@ -34,43 +34,6 @@ const DropdownIndicator = (props) => (
);
-const styles = {
- container: (provided, state) => {
- // To match the focus indicator provided by uswds
- const outline = state.isFocused ? '0.25rem solid #2491ff;' : '';
- return {
- ...provided,
- outline,
- };
- },
- groupHeading: (provided) => ({
- ...provided,
- fontWeight: 'bold',
- fontFamily: 'SourceSansPro',
- textTransform: 'capitalize',
- fontSize: '14px',
- color: '#21272d',
- lineHeight: '22px',
- }),
- control: (provided, state) => ({
- ...provided,
- borderColor: '#565c65',
- backgroundColor: 'white',
- borderRadius: '0',
- '&:hover': {
- borderColor: '#565c65',
- },
- // Match uswds disabled style
- opacity: state.isDisabled ? '0.7' : '1',
- }),
- indicatorsContainer: (provided) => ({
- ...provided,
- // The arrow dropdown icon is too far to the right, this pushes it back to the left
- marginRight: '4px',
- }),
- indicatorSeparator: () => ({ display: 'none' }),
-};
-
function MultiSelect({
name,
options,
@@ -83,8 +46,47 @@ function MultiSelect({
rules,
multiSelectOptions,
onItemSelected,
+ singleRowInput,
components: componentReplacements,
}) {
+ const styles = {
+ container: (provided, state) => {
+ // To match the focus indicator provided by uswds
+ const outline = state.isFocused ? '0.25rem solid #2491ff;' : '';
+ return {
+ ...provided,
+ outline,
+ };
+ },
+ groupHeading: (provided) => ({
+ ...provided,
+ fontWeight: 'bold',
+ fontFamily: 'SourceSansPro',
+ textTransform: 'capitalize',
+ fontSize: '14px',
+ color: '#21272d',
+ lineHeight: '22px',
+ }),
+ control: (provided, state) => ({
+ height: singleRowInput ? '38px' : '',
+ ...provided,
+ borderColor: '#565c65',
+ backgroundColor: 'white',
+ borderRadius: '0',
+ '&:hover': {
+ borderColor: '#565c65',
+ },
+ // Match uswds disabled style
+ opacity: state.isDisabled ? '0.7' : '1',
+ }),
+ indicatorsContainer: (provided) => ({
+ ...provided,
+ // The arrow dropdown icon is too far to the right, this pushes it back to the left
+ marginRight: '4px',
+ }),
+ indicatorSeparator: () => ({ display: 'none' }),
+ };
+
/*
* @param {Array || Array