@bloom-housing/ui-components 5.1.1-alpha.7 → 6.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +76 -0
- package/index.ts +1 -0
- package/package.json +4 -2
- package/src/actions/ButtonGroup.docs.mdx +30 -0
- package/src/actions/ButtonGroup.scss +61 -0
- package/src/actions/ButtonGroup.tsx +42 -0
- package/src/actions/ExpandableText.tsx +11 -4
- package/src/blocks/FormCard.scss +1 -8
- package/src/blocks/MediaCard.scss +4 -0
- package/src/blocks/MediaCard.tsx +6 -2
- package/src/forms/Form.tsx +1 -0
- package/src/headers/SiteHeader.tsx +9 -4
- package/src/locales/general.json +2 -0
- package/src/navigation/ProgressNav.scss +5 -4
- package/src/navigation/ProgressNav.tsx +2 -2
- package/src/overlays/Drawer.scss +7 -0
- package/src/overlays/Modal.scss +0 -1
- package/src/overlays/Overlay.tsx +3 -0
- package/src/page_components/forgot-password/FormForgotPassword.tsx +2 -2
- package/src/page_components/listing/ListingMap.tsx +1 -1
- package/src/page_components/listing/listing_sidebar/SidebarBlock.tsx +1 -1
- package/src/page_components/listing/listing_sidebar/events/EventSection.tsx +1 -1
- package/src/page_components/sign-in/FormSignIn.tsx +1 -1
- package/src/page_components/sign-in/FormSignInMFAType.tsx +1 -1
- package/src/prototypes/Swatch.tsx +1 -0
- package/src/sections/GridSection.tsx +0 -6
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,82 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
# [6.0.0](https://github.com/bloom-housing/bloom/compare/@bloom-housing/ui-components@5.1.0...@bloom-housing/ui-components@6.0.0) (2022-08-25)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
* 2022-08-24 release (#2993) ([6f1deac](https://github.com/bloom-housing/bloom/commit/6f1deac5370fa8286b051b09431d153d22901b3a)), closes [#2993](https://github.com/bloom-housing/bloom/issues/2993) [#2821](https://github.com/bloom-housing/bloom/issues/2821) [#2764](https://github.com/bloom-housing/bloom/issues/2764) [#2767](https://github.com/bloom-housing/bloom/issues/2767) [#2787](https://github.com/bloom-housing/bloom/issues/2787) [#2769](https://github.com/bloom-housing/bloom/issues/2769) [#2781](https://github.com/bloom-housing/bloom/issues/2781) [#2827](https://github.com/bloom-housing/bloom/issues/2827) [Issue#2827](https://github.com/Issue/issues/2827) [#2788](https://github.com/bloom-housing/bloom/issues/2788) [#2842](https://github.com/bloom-housing/bloom/issues/2842) [#2822](https://github.com/bloom-housing/bloom/issues/2822) [#2847](https://github.com/bloom-housing/bloom/issues/2847) [#2830](https://github.com/bloom-housing/bloom/issues/2830) [#2788](https://github.com/bloom-housing/bloom/issues/2788) [#2842](https://github.com/bloom-housing/bloom/issues/2842) [#2827](https://github.com/bloom-housing/bloom/issues/2827) [Issue#2827](https://github.com/Issue/issues/2827) [#2822](https://github.com/bloom-housing/bloom/issues/2822) [#2846](https://github.com/bloom-housing/bloom/issues/2846) [#2851](https://github.com/bloom-housing/bloom/issues/2851) [#2594](https://github.com/bloom-housing/bloom/issues/2594) [#2812](https://github.com/bloom-housing/bloom/issues/2812) [#2799](https://github.com/bloom-housing/bloom/issues/2799) [#2828](https://github.com/bloom-housing/bloom/issues/2828) [#2843](https://github.com/bloom-housing/bloom/issues/2843) [#2827](https://github.com/bloom-housing/bloom/issues/2827) [#2875](https://github.com/bloom-housing/bloom/issues/2875) [#2859](https://github.com/bloom-housing/bloom/issues/2859) [#2848](https://github.com/bloom-housing/bloom/issues/2848) [#2785](https://github.com/bloom-housing/bloom/issues/2785)
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
### BREAKING CHANGES
|
|
13
|
+
|
|
14
|
+
* prop name change for header from "text" to "content"
|
|
15
|
+
|
|
16
|
+
* chore(release): version
|
|
17
|
+
|
|
18
|
+
- @bloom-housing/shared-helpers@5.0.1-alpha.2
|
|
19
|
+
- @bloom-housing/partners@5.0.1-alpha.2
|
|
20
|
+
- @bloom-housing/public@5.0.1-alpha.2
|
|
21
|
+
- @bloom-housing/ui-components@5.0.1-alpha.1
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
## [5.1.1-alpha.12](https://github.com/bloom-housing/bloom/compare/@bloom-housing/ui-components@5.1.1-alpha.11...@bloom-housing/ui-components@5.1.1-alpha.12) (2022-08-24)
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
### Features
|
|
31
|
+
|
|
32
|
+
* show preference details on listing form ([#2989](https://github.com/bloom-housing/bloom/issues/2989)) ([b4b2b9e](https://github.com/bloom-housing/bloom/commit/b4b2b9ee75c4895ea5b0694dddbf0c8979c0e251))
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
## [5.1.1-alpha.11](https://github.com/bloom-housing/bloom/compare/@bloom-housing/ui-components@5.1.1-alpha.10...@bloom-housing/ui-components@5.1.1-alpha.11) (2022-08-23)
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
* refactor!: preferences & programs data model merged (#2904) ([8e027ff](https://github.com/bloom-housing/bloom/commit/8e027ff905118f36c61bc0f974231d9bb8911131)), closes [#2904](https://github.com/bloom-housing/bloom/issues/2904)
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
### BREAKING CHANGES
|
|
45
|
+
|
|
46
|
+
* The preference and program entities have been merged into a single entity called MultiselectQuestion
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
## [5.1.1-alpha.10](https://github.com/bloom-housing/bloom/compare/@bloom-housing/ui-components@5.1.1-alpha.9...@bloom-housing/ui-components@5.1.1-alpha.10) (2022-08-23)
|
|
53
|
+
|
|
54
|
+
**Note:** Version bump only for package @bloom-housing/ui-components
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
## [5.1.1-alpha.9](https://github.com/bloom-housing/bloom/compare/@bloom-housing/ui-components@5.1.1-alpha.8...@bloom-housing/ui-components@5.1.1-alpha.9) (2022-08-22)
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
### Bug Fixes
|
|
64
|
+
|
|
65
|
+
* add a11y linting tools and fix errors ([#2974](https://github.com/bloom-housing/bloom/issues/2974)) ([e583d12](https://github.com/bloom-housing/bloom/commit/e583d1283511c83dd48f48f934be9a7794a67e74))
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
## [5.1.1-alpha.8](https://github.com/bloom-housing/bloom/compare/@bloom-housing/ui-components@5.1.1-alpha.7...@bloom-housing/ui-components@5.1.1-alpha.8) (2022-08-18)
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
### Features
|
|
75
|
+
|
|
76
|
+
* **expandabletext:** add classname to expandable text button ([#2965](https://github.com/bloom-housing/bloom/issues/2965)) ([6d4b8a7](https://github.com/bloom-housing/bloom/commit/6d4b8a7132825c1aa3abcc0368529557cb3d2647))
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
|
|
6
82
|
## [5.1.1-alpha.7](https://github.com/bloom-housing/bloom/compare/@bloom-housing/ui-components@5.1.1-alpha.6...@bloom-housing/ui-components@5.1.1-alpha.7) (2022-08-18)
|
|
7
83
|
|
|
8
84
|
|
package/index.ts
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bloom-housing/ui-components",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "6.0.0",
|
|
4
4
|
"author": "Sean Albert <sean.albert@exygy.com>",
|
|
5
5
|
"description": "Shared user interface components for Bloom affordable housing system",
|
|
6
6
|
"homepage": "https://github.com/bloom-housing/bloom/tree/master/shared/ui-components",
|
|
@@ -85,6 +85,7 @@
|
|
|
85
85
|
"@types/react-dom": "^16.9.5",
|
|
86
86
|
"@types/react-text-mask": "^5.4.6",
|
|
87
87
|
"@types/react-transition-group": "^4.4.0",
|
|
88
|
+
"@types/sanitize-html": "^2.6.2",
|
|
88
89
|
"ag-grid-community": "^26.0.0",
|
|
89
90
|
"ag-grid-react": "^26.0.0",
|
|
90
91
|
"aria-autocomplete": "^1.4.0",
|
|
@@ -106,9 +107,10 @@
|
|
|
106
107
|
"react-tabs": "^3.2.2",
|
|
107
108
|
"react-text-mask": "^5.4.3",
|
|
108
109
|
"react-transition-group": "^4.4.1",
|
|
110
|
+
"sanitize-html": "^2.7.1",
|
|
109
111
|
"tailwindcss": "2.2.10",
|
|
110
112
|
"ts-jest": "^26.4.1",
|
|
111
113
|
"typesafe-actions": "^5.1.0"
|
|
112
114
|
},
|
|
113
|
-
"gitHead": "
|
|
115
|
+
"gitHead": "4144d01ef184f31f6fd2c943ee2487025170126c"
|
|
114
116
|
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { Canvas, Story, ArgsTable } from "@storybook/addon-docs"
|
|
2
|
+
import { Swatch } from "../prototypes/Swatch"
|
|
3
|
+
import { ButtonGroup } from "./ButtonGroup"
|
|
4
|
+
|
|
5
|
+
# ButtonGroup
|
|
6
|
+
|
|
7
|
+
The button group component lets you place multiple buttons along a horizontal or vertical (mobile primarily) axis and group/space buttons according to some simple flex rules.
|
|
8
|
+
|
|
9
|
+
<Canvas>
|
|
10
|
+
<Story id="actions-button-group--two-columns" />
|
|
11
|
+
</Canvas>
|
|
12
|
+
|
|
13
|
+
<br />
|
|
14
|
+
<br />
|
|
15
|
+
|
|
16
|
+
## Component Properties
|
|
17
|
+
|
|
18
|
+
<ArgsTable of={ButtonGroup} />
|
|
19
|
+
|
|
20
|
+
## Theming Variables
|
|
21
|
+
|
|
22
|
+
You can apply CSS variables to the `.button-group` selector to customize the appearance of the component.
|
|
23
|
+
|
|
24
|
+
| Name | Type | Description | Default |
|
|
25
|
+
| -------------------------- | ----- | ----------------------------------------------------------------------------------- | --------------------------------------------------- |
|
|
26
|
+
| `--background-color` | Color | Background behind the buttons | <Swatch colorVar="--bloom-color-primary-lighter" /> |
|
|
27
|
+
| `--padding-block` | Size | The space around the buttons in the block (vertical) direction | `--bloom-s8` |
|
|
28
|
+
| `--padding-inline-desktop` | Size | The space around the buttons in the inline (horizontal) direction on larger screens | `--bloom-s16` |
|
|
29
|
+
| `--padding-inline-mobile` | Size | The space around the buttons in the inline (horizontal) direction on small screens | `--bloom-s4` |
|
|
30
|
+
| `--inner-button-gap` | Size | The gap between buttons whether in separate columns or within the same column | `--bloom-s3` |
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
.button-group {
|
|
2
|
+
--background-color: var(--bloom-color-primary-lighter);
|
|
3
|
+
--padding-block: var(--bloom-s8);
|
|
4
|
+
--padding-inline-desktop: var(--bloom-s16);
|
|
5
|
+
--padding-inline-mobile: var(--bloom-s4);
|
|
6
|
+
--inner-button-gap: var(--bloom-s3);
|
|
7
|
+
|
|
8
|
+
--padding-inline: var(--padding-inline-desktop);
|
|
9
|
+
|
|
10
|
+
@media (max-width: $screen-sm) {
|
|
11
|
+
--padding-inline: var(--padding-inline-mobile);
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
background-color: var(--background-color);
|
|
15
|
+
padding-block: var(--padding-block);
|
|
16
|
+
padding-inline: var(--padding-inline);
|
|
17
|
+
display: flex;
|
|
18
|
+
flex-wrap: wrap;
|
|
19
|
+
gap: var(--inner-button-gap);
|
|
20
|
+
|
|
21
|
+
& > .button-group__column {
|
|
22
|
+
display: flex;
|
|
23
|
+
gap: var(--inner-button-gap);
|
|
24
|
+
|
|
25
|
+
.button {
|
|
26
|
+
@media (max-width: $screen-sm) {
|
|
27
|
+
--normal-rounded: var(--small-rounded);
|
|
28
|
+
--normal-padding: var(--small-padding);
|
|
29
|
+
--normal-font-size: var(--small-font-size);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
&.has-between-spacing {
|
|
35
|
+
justify-content: space-between;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
&.has-even-spacing {
|
|
39
|
+
justify-content: space-evenly;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
&.has-fullwidth-mobile-buttons {
|
|
43
|
+
&,
|
|
44
|
+
& > .button-group__column {
|
|
45
|
+
@media (max-width: $screen-sm) {
|
|
46
|
+
flex-direction: column;
|
|
47
|
+
|
|
48
|
+
.button {
|
|
49
|
+
width: 100%;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
&.is-reversed {
|
|
56
|
+
&,
|
|
57
|
+
& > .button-group__column {
|
|
58
|
+
flex-direction: row-reverse;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import React from "react"
|
|
2
|
+
import "./ButtonGroup.scss"
|
|
3
|
+
|
|
4
|
+
export enum ButtonGroupSpacing {
|
|
5
|
+
between = "between",
|
|
6
|
+
even = "even",
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export interface ButtonGroupProps {
|
|
10
|
+
/** Pass either Button components in, or fragments which can contain one or more buttons */
|
|
11
|
+
columns: React.ReactNodeArray
|
|
12
|
+
/** Between spacing pushes the columns far apart, even spacing keeps them closer together */
|
|
13
|
+
spacing?: ButtonGroupSpacing
|
|
14
|
+
/** When true, buttons will collapse to a single column on small screens and go full-width */
|
|
15
|
+
fullwidthMobile?: boolean
|
|
16
|
+
/** When true, the flex ordering of columns will reverse (aka RTL) */
|
|
17
|
+
reversed?: boolean
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
const ButtonGroup = ({
|
|
21
|
+
spacing = ButtonGroupSpacing.between,
|
|
22
|
+
columns,
|
|
23
|
+
fullwidthMobile,
|
|
24
|
+
reversed,
|
|
25
|
+
}: ButtonGroupProps) => {
|
|
26
|
+
const spacingClassName = `has-${spacing}-spacing`
|
|
27
|
+
const classNames = ["button-group", spacingClassName]
|
|
28
|
+
if (fullwidthMobile) classNames.push("has-fullwidth-mobile-buttons")
|
|
29
|
+
if (reversed) classNames.push("is-reversed")
|
|
30
|
+
|
|
31
|
+
return (
|
|
32
|
+
<div className={classNames.join(" ")}>
|
|
33
|
+
{columns.map((column, index) => (
|
|
34
|
+
<div key={index} className="button-group__column">
|
|
35
|
+
{column}
|
|
36
|
+
</div>
|
|
37
|
+
))}
|
|
38
|
+
</div>
|
|
39
|
+
)
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
export { ButtonGroup as default, ButtonGroup }
|
|
@@ -12,6 +12,7 @@ export interface ExpandableTextProps {
|
|
|
12
12
|
readLess: string
|
|
13
13
|
}
|
|
14
14
|
markdownProps?: MarkdownOptions
|
|
15
|
+
buttonClassName?: string
|
|
15
16
|
}
|
|
16
17
|
|
|
17
18
|
const getText = (text: string, expanded: boolean, maxLength: number) => {
|
|
@@ -29,12 +30,18 @@ const getText = (text: string, expanded: boolean, maxLength: number) => {
|
|
|
29
30
|
const moreLessButton = (
|
|
30
31
|
expanded: boolean,
|
|
31
32
|
setExpanded: (newValue: boolean) => void,
|
|
32
|
-
strings: ExpandableTextProps["strings"]
|
|
33
|
+
strings: ExpandableTextProps["strings"],
|
|
34
|
+
buttonClassName: ExpandableTextProps["buttonClassName"]
|
|
33
35
|
) => {
|
|
36
|
+
const classes = ["button-toggle ml-4"]
|
|
37
|
+
if (buttonClassName) {
|
|
38
|
+
classes.push(buttonClassName)
|
|
39
|
+
}
|
|
40
|
+
|
|
34
41
|
return (
|
|
35
|
-
<
|
|
42
|
+
<button className={classes.join(" ")} onClick={() => setExpanded(!expanded)}>
|
|
36
43
|
{expanded ? strings?.readLess : strings?.readMore}
|
|
37
|
-
</
|
|
44
|
+
</button>
|
|
38
45
|
)
|
|
39
46
|
}
|
|
40
47
|
|
|
@@ -46,7 +53,7 @@ const ExpandableText = (props: ExpandableTextProps) => {
|
|
|
46
53
|
if (!props.children) return null
|
|
47
54
|
|
|
48
55
|
if (props.children.length > maxLength) {
|
|
49
|
-
button = moreLessButton(expanded, setExpanded, props.strings)
|
|
56
|
+
button = moreLessButton(expanded, setExpanded, props.strings, props.buttonClassName)
|
|
50
57
|
}
|
|
51
58
|
return (
|
|
52
59
|
<div className={`expandable-text ${props?.className}`}>
|
package/src/blocks/FormCard.scss
CHANGED
|
@@ -69,7 +69,6 @@
|
|
|
69
69
|
|
|
70
70
|
@screen print {
|
|
71
71
|
@apply py-2;
|
|
72
|
-
@apply px-0;
|
|
73
72
|
}
|
|
74
73
|
}
|
|
75
74
|
|
|
@@ -87,13 +86,7 @@
|
|
|
87
86
|
}
|
|
88
87
|
|
|
89
88
|
.form-card__group {
|
|
90
|
-
@
|
|
91
|
-
@apply px-8;
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
@screen print {
|
|
95
|
-
@apply px-0;
|
|
96
|
-
}
|
|
89
|
+
@apply px-8;
|
|
97
90
|
}
|
|
98
91
|
|
|
99
92
|
.form-card__header {
|
package/src/blocks/MediaCard.tsx
CHANGED
|
@@ -16,13 +16,17 @@ const MediaCard = (props: MediaCardProps) => {
|
|
|
16
16
|
if (props.className) wrapperClasses.push(props.className)
|
|
17
17
|
return (
|
|
18
18
|
<div className={wrapperClasses.join(" ")}>
|
|
19
|
-
<
|
|
19
|
+
<button
|
|
20
|
+
onClick={props.handleClick}
|
|
21
|
+
className={"media-card__header-container"}
|
|
22
|
+
aria-label={"Launch video"}
|
|
23
|
+
>
|
|
20
24
|
<div className="media-card__header">
|
|
21
25
|
<div className="media-card__icon-container">
|
|
22
26
|
<Icon symbol={props.icon ?? faCirclePlay} size="2xl" fill="white" />
|
|
23
27
|
</div>
|
|
24
28
|
</div>
|
|
25
|
-
</
|
|
29
|
+
</button>
|
|
26
30
|
<div className="media-card__body">
|
|
27
31
|
<h3 className="media-card__title">{props.title}</h3>
|
|
28
32
|
<div className={"media-card__subtitle"}>{props.subtitle}</div>
|
package/src/forms/Form.tsx
CHANGED
|
@@ -13,6 +13,7 @@ const Form = ({ id, children, className, onSubmit }: FormProps) => {
|
|
|
13
13
|
}
|
|
14
14
|
|
|
15
15
|
return (
|
|
16
|
+
// eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions
|
|
16
17
|
<form id={id} className={className} onSubmit={onSubmit} onKeyPress={onKeyPress} noValidate>
|
|
17
18
|
{children}
|
|
18
19
|
</form>
|
|
@@ -104,7 +104,11 @@ const SiteHeader = (props: SiteHeaderProps) => {
|
|
|
104
104
|
return (
|
|
105
105
|
<>
|
|
106
106
|
{option.iconSrc && isDesktop && (
|
|
107
|
-
<img
|
|
107
|
+
<img
|
|
108
|
+
src={option.iconSrc}
|
|
109
|
+
className={option.iconClassName}
|
|
110
|
+
alt={`${option.title} icon`}
|
|
111
|
+
/>
|
|
108
112
|
)}
|
|
109
113
|
{option.title}
|
|
110
114
|
</>
|
|
@@ -143,7 +147,7 @@ const SiteHeader = (props: SiteHeaderProps) => {
|
|
|
143
147
|
}
|
|
144
148
|
dropdownOptionKeyDown(event, index)
|
|
145
149
|
}}
|
|
146
|
-
data-test-id={`${option.title}
|
|
150
|
+
data-test-id={`${option.title}`}
|
|
147
151
|
>
|
|
148
152
|
{dropdownOptionContent(option)}
|
|
149
153
|
</button>
|
|
@@ -297,7 +301,7 @@ const SiteHeader = (props: SiteHeaderProps) => {
|
|
|
297
301
|
className={`navbar-link ${props.menuItemClassName && props.menuItemClassName}`}
|
|
298
302
|
href={menuLink.href}
|
|
299
303
|
key={`${menuLink.title}-${index}`}
|
|
300
|
-
data-test-id={`${menuLink.title}
|
|
304
|
+
data-test-id={`${menuLink.title}`}
|
|
301
305
|
>
|
|
302
306
|
{menuContent}
|
|
303
307
|
</LinkComponent>
|
|
@@ -336,7 +340,8 @@ const SiteHeader = (props: SiteHeaderProps) => {
|
|
|
336
340
|
}}
|
|
337
341
|
onMouseEnter={() => changeMenuShow(menuLink.title, activeMenus, setActiveMenus)}
|
|
338
342
|
onMouseLeave={() => changeMenuShow(menuLink.title, activeMenus, setActiveMenus)}
|
|
339
|
-
|
|
343
|
+
role={"button"}
|
|
344
|
+
data-test-id={`${menuLink.title}`}
|
|
340
345
|
>
|
|
341
346
|
{menuContent}
|
|
342
347
|
</span>
|
package/src/locales/general.json
CHANGED
|
@@ -345,6 +345,7 @@
|
|
|
345
345
|
"application.programs.rentBasedOnIncome.flatRent.description": "I would like to apply for an affordable flat rent apartment, which has a set monthly rent amount that is below market rate. Note - applicants with Section 8 Mobile Housing Choice Vouchers (HCV) are welcome to apply.",
|
|
346
346
|
"application.programs.rentBasedOnIncome.flatRent.label": "Affordable apartment with flat rent",
|
|
347
347
|
"application.programs.rentBasedOnIncome.summary": "Flat Rent & Rent Based on Income",
|
|
348
|
+
"application.programs.selectBelow": "Please select all that apply:",
|
|
348
349
|
"application.programs.servedInMilitary.doNotConsider.label": "No",
|
|
349
350
|
"application.programs.servedInMilitary.servedInMilitary.label": "Yes",
|
|
350
351
|
"application.programs.servedInMilitary.summary": "Veteran of the US Military",
|
|
@@ -909,6 +910,7 @@
|
|
|
909
910
|
"t.preferNotToSay": "Prefer not to say",
|
|
910
911
|
"t.preferences": "Preferences",
|
|
911
912
|
"t.previous": "Previous",
|
|
913
|
+
"t.programs": "Programs",
|
|
912
914
|
"t.propertyAmenities": "Property Amenities",
|
|
913
915
|
"t.range": "%{from} to %{to}",
|
|
914
916
|
"t.readLess": "read less",
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
|
|
10
10
|
.progress-nav__item {
|
|
11
11
|
@apply text-2xs;
|
|
12
|
-
@apply px-
|
|
12
|
+
@apply px-1;
|
|
13
13
|
@apply py-3;
|
|
14
14
|
@apply relative;
|
|
15
15
|
@apply text-center;
|
|
@@ -22,6 +22,7 @@
|
|
|
22
22
|
@screen md {
|
|
23
23
|
@apply text-sm;
|
|
24
24
|
@apply p-0;
|
|
25
|
+
@apply px-2;
|
|
25
26
|
}
|
|
26
27
|
|
|
27
28
|
&:before {
|
|
@@ -71,7 +72,7 @@
|
|
|
71
72
|
@apply top-0;
|
|
72
73
|
}
|
|
73
74
|
|
|
74
|
-
|
|
75
|
+
.progress-nav__item-container {
|
|
75
76
|
@apply text-black;
|
|
76
77
|
@apply font-bold;
|
|
77
78
|
}
|
|
@@ -85,13 +86,13 @@
|
|
|
85
86
|
@apply top-0;
|
|
86
87
|
}
|
|
87
88
|
|
|
88
|
-
|
|
89
|
+
.progress-nav__item-container {
|
|
89
90
|
@apply pointer-events-none;
|
|
90
91
|
@apply cursor-default;
|
|
91
92
|
}
|
|
92
93
|
}
|
|
93
94
|
|
|
94
|
-
|
|
95
|
+
.progress-nav__item-container {
|
|
95
96
|
@apply pt-4;
|
|
96
97
|
@apply pl-1;
|
|
97
98
|
@apply text-gray-700;
|
|
@@ -27,10 +27,10 @@ const ProgressNavItem = (props: {
|
|
|
27
27
|
|
|
28
28
|
return (
|
|
29
29
|
<li className={`progress-nav__item ${bgColor}`}>
|
|
30
|
-
<
|
|
30
|
+
<span aria-disabled={bgColor === "is-disabled"} className={"progress-nav__item-container"}>
|
|
31
31
|
{srText}
|
|
32
32
|
{props.label}
|
|
33
|
-
</
|
|
33
|
+
</span>
|
|
34
34
|
</li>
|
|
35
35
|
)
|
|
36
36
|
}
|
package/src/overlays/Drawer.scss
CHANGED
package/src/overlays/Modal.scss
CHANGED
package/src/overlays/Overlay.tsx
CHANGED
|
@@ -39,6 +39,9 @@ const OverlayInner = (props: OverlayProps) => {
|
|
|
39
39
|
onClick={(e) => {
|
|
40
40
|
if (e.target === e.currentTarget) closeHandler()
|
|
41
41
|
}}
|
|
42
|
+
onKeyPress={(e) => {
|
|
43
|
+
if (e.key === "Escape") closeHandler()
|
|
44
|
+
}}
|
|
42
45
|
>
|
|
43
46
|
<div className={`fixed-overlay__inner ${props.slim ? "fixed-overlay__inner-slim" : ""}`}>
|
|
44
47
|
<FocusLock>{props.children}</FocusLock>
|
|
@@ -95,9 +95,9 @@ const FormForgotPassword = ({
|
|
|
95
95
|
</Button>
|
|
96
96
|
</div>
|
|
97
97
|
<div className="text-center mt-6">
|
|
98
|
-
<
|
|
98
|
+
<Button onClick={() => router.back()} unstyled={true}>
|
|
99
99
|
{t("t.cancel")}
|
|
100
|
-
</
|
|
100
|
+
</Button>
|
|
101
101
|
</div>
|
|
102
102
|
</section>
|
|
103
103
|
</Form>
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as React from "react"
|
|
2
|
-
import { Heading,
|
|
2
|
+
import { Heading, HeadingProps } from "../../../headers/Heading"
|
|
3
3
|
|
|
4
4
|
export interface SidebarBlockProps extends Omit<HeadingProps, "children" | "className"> {
|
|
5
5
|
children: React.ReactNode
|
|
@@ -88,7 +88,7 @@ const FormSignIn = ({
|
|
|
88
88
|
|
|
89
89
|
<aside className="float-right text-tiny font-semibold">
|
|
90
90
|
<LinkComponent href="/forgot-password">
|
|
91
|
-
|
|
91
|
+
{t("authentication.signIn.forgotPassword")}
|
|
92
92
|
</LinkComponent>
|
|
93
93
|
</aside>
|
|
94
94
|
|
|
@@ -31,7 +31,7 @@ export type FormSignInMFAControl = {
|
|
|
31
31
|
const FormSignInMFAType = ({
|
|
32
32
|
onSubmit,
|
|
33
33
|
networkError,
|
|
34
|
-
control: { errors, register, handleSubmit
|
|
34
|
+
control: { errors, register, handleSubmit },
|
|
35
35
|
emailOnClick,
|
|
36
36
|
smsOnClick,
|
|
37
37
|
}: FormSignInMFAProps) => {
|
|
@@ -22,7 +22,6 @@ const GridCell = (props: GridCellProps) => {
|
|
|
22
22
|
|
|
23
23
|
export interface GridSectionProps {
|
|
24
24
|
title?: React.ReactNode
|
|
25
|
-
edit?: string
|
|
26
25
|
subtitle?: string
|
|
27
26
|
description?: string
|
|
28
27
|
tinted?: boolean
|
|
@@ -67,11 +66,6 @@ const GridSection = (props: GridSectionProps) => {
|
|
|
67
66
|
{(props.title || props.subtitle) && (
|
|
68
67
|
<header className={headerClasses.join(" ")}>
|
|
69
68
|
{props.title && <h2 className="grid-section__title">{props.title}</h2>}
|
|
70
|
-
{props.edit && (
|
|
71
|
-
<span className="ml-auto">
|
|
72
|
-
<a className="edit-link">{props.edit}</a>
|
|
73
|
-
</span>
|
|
74
|
-
)}
|
|
75
69
|
{props.subtitle && <h3 className={subtitleClasses.join(" ")}>{props.subtitle}</h3>}
|
|
76
70
|
{props.description && (
|
|
77
71
|
<span className={"grid-section__description"}>{props.description}</span>
|