@bloom-housing/ui-components 4.2.2-alpha.0 → 4.2.2-alpha.11

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 CHANGED
@@ -3,6 +3,117 @@
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
+ ## [4.2.2-alpha.11](https://github.com/bloom-housing/bloom/compare/@bloom-housing/ui-components@4.2.2-alpha.10...@bloom-housing/ui-components@4.2.2-alpha.11) (2022-04-21)
7
+
8
+ **Note:** Version bump only for package @bloom-housing/ui-components
9
+
10
+
11
+
12
+
13
+
14
+ ## [4.2.2-alpha.10](https://github.com/bloom-housing/bloom/compare/@bloom-housing/ui-components@4.2.2-alpha.9...@bloom-housing/ui-components@4.2.2-alpha.10) (2022-04-21)
15
+
16
+
17
+ ### Features
18
+
19
+ * new category table component ([#2648](https://github.com/bloom-housing/bloom/issues/2648)) ([3b3fe46](https://github.com/bloom-housing/bloom/commit/3b3fe46dda3d0e553664c10cea46849551ce064c))
20
+
21
+
22
+ ### BREAKING CHANGES
23
+
24
+ * There is a new prop interface for the StandardTable component and all components that use it, which includes passing cell content within a new object, allowing us to support new cell options - all tables will need to pass data with the new format.
25
+
26
+
27
+
28
+
29
+
30
+ ## [4.2.2-alpha.9](https://github.com/bloom-housing/bloom/compare/@bloom-housing/ui-components@4.2.2-alpha.8...@bloom-housing/ui-components@4.2.2-alpha.9) (2022-04-20)
31
+
32
+ **Note:** Version bump only for package @bloom-housing/ui-components
33
+
34
+
35
+
36
+
37
+
38
+ ## [4.2.2-alpha.8](https://github.com/bloom-housing/bloom/compare/@bloom-housing/ui-components@4.2.2-alpha.7...@bloom-housing/ui-components@4.2.2-alpha.8) (2022-04-20)
39
+
40
+
41
+ ### Features
42
+
43
+ * application timeout screen reader accessible ([#2625](https://github.com/bloom-housing/bloom/issues/2625)) ([0771ef3](https://github.com/bloom-housing/bloom/commit/0771ef3f7e4001efb4dae8cca06743801daace05))
44
+
45
+
46
+
47
+
48
+
49
+ ## [4.2.2-alpha.7](https://github.com/bloom-housing/bloom/compare/@bloom-housing/ui-components@4.2.2-alpha.6...@bloom-housing/ui-components@4.2.2-alpha.7) (2022-04-20)
50
+
51
+ **Note:** Version bump only for package @bloom-housing/ui-components
52
+
53
+
54
+
55
+
56
+
57
+ ## [4.2.2-alpha.6](https://github.com/bloom-housing/bloom/compare/@bloom-housing/ui-components@4.2.2-alpha.5...@bloom-housing/ui-components@4.2.2-alpha.6) (2022-04-20)
58
+
59
+ **Note:** Version bump only for package @bloom-housing/ui-components
60
+
61
+
62
+
63
+
64
+
65
+ ## [4.2.2-alpha.5](https://github.com/bloom-housing/bloom/compare/@bloom-housing/ui-components@4.2.2-alpha.4...@bloom-housing/ui-components@4.2.2-alpha.5) (2022-04-19)
66
+
67
+
68
+ ### Bug Fixes
69
+
70
+ * footer nav widths ([42aef6f](https://github.com/bloom-housing/bloom/commit/42aef6f74a8a7e27c6bdb870cb6c69c7569f41c0))
71
+
72
+
73
+
74
+
75
+
76
+ ## [4.2.2-alpha.4](https://github.com/bloom-housing/bloom/compare/@bloom-housing/ui-components@4.2.2-alpha.3...@bloom-housing/ui-components@4.2.2-alpha.4) (2022-04-18)
77
+
78
+
79
+ ### Bug Fixes
80
+
81
+ * add optional prop for Language Nav aria label ([#2672](https://github.com/bloom-housing/bloom/issues/2672)) ([5f1b3f6](https://github.com/bloom-housing/bloom/commit/5f1b3f66f5269cfd9285b958f608cdb41e779c70))
82
+
83
+
84
+
85
+
86
+
87
+ ## [4.2.2-alpha.3](https://github.com/bloom-housing/bloom/compare/@bloom-housing/ui-components@4.2.2-alpha.2...@bloom-housing/ui-components@4.2.2-alpha.3) (2022-04-18)
88
+
89
+
90
+ ### Features
91
+
92
+ * refactor ada form fields ([#2612](https://github.com/bloom-housing/bloom/issues/2612)) ([f516f21](https://github.com/bloom-housing/bloom/commit/f516f2164249cea5b622b6bb5cd6efb5455003ca))
93
+
94
+
95
+
96
+
97
+
98
+ ## [4.2.2-alpha.2](https://github.com/bloom-housing/bloom/compare/@bloom-housing/ui-components@4.2.2-alpha.1...@bloom-housing/ui-components@4.2.2-alpha.2) (2022-04-14)
99
+
100
+ **Note:** Version bump only for package @bloom-housing/ui-components
101
+
102
+
103
+
104
+
105
+
106
+ ## [4.2.2-alpha.1](https://github.com/bloom-housing/bloom/compare/@bloom-housing/ui-components@4.2.2-alpha.0...@bloom-housing/ui-components@4.2.2-alpha.1) (2022-04-13)
107
+
108
+
109
+ ### Features
110
+
111
+ * swap h5 with h1 for screen reader compatibility ([#2653](https://github.com/bloom-housing/bloom/issues/2653)) ([09d1976](https://github.com/bloom-housing/bloom/commit/09d19762cac4ee4c700e01bc0962be737d8b1155))
112
+
113
+
114
+
115
+
116
+
6
117
  ## [4.2.2-alpha.0](https://github.com/bloom-housing/bloom/compare/@bloom-housing/ui-components@4.2.1-alpha.4...@bloom-housing/ui-components@4.2.2-alpha.0) (2022-04-13)
7
118
 
8
119
 
package/index.ts CHANGED
@@ -98,6 +98,7 @@ export * from "./src/overlays/Drawer"
98
98
  export * from "./src/overlays/LoadingOverlay"
99
99
 
100
100
  /* Page Components */
101
+ export * from "./src/page_components/ApplicationTimeline"
101
102
  export * from "./src/page_components/listing/AdditionalFees"
102
103
  export * from "./src/page_components/listing/ContentAccordion"
103
104
  export * from "./src/page_components/listing/ListingCard"
@@ -119,6 +120,7 @@ export * from "./src/page_components/listing/listing_sidebar/WhatToExpect"
119
120
  export * from "./src/page_components/listing/listing_sidebar/events/DownloadLotteryResults"
120
121
  export * from "./src/page_components/listing/listing_sidebar/events/EventSection"
121
122
  export * from "./src/page_components/sign-in/FormTerms"
123
+ export * from "./src/page_components/sign-in/ResendConfirmationModal"
122
124
  export * from "./src/page_components/sign-in/FormSignIn"
123
125
  export * from "./src/page_components/sign-in/FormSignInMFAType"
124
126
  export * from "./src/page_components/sign-in/FormSignInMFACode"
@@ -143,6 +145,7 @@ export * from "./src/tables/StandardTable"
143
145
  export * from "./src/tables/GroupedTable"
144
146
  export * from "./src/tables/MinimalTable"
145
147
  export * from "./src/tables/StackedTable"
148
+ export * from "./src/tables/CategoryTable"
146
149
 
147
150
  /* Text */
148
151
  export * from "./src/text/Description"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bloom-housing/ui-components",
3
- "version": "4.2.2-alpha.0",
3
+ "version": "4.2.2-alpha.11",
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",
@@ -69,7 +69,7 @@
69
69
  "webpack": "^4.44.2"
70
70
  },
71
71
  "dependencies": {
72
- "@bloom-housing/backend-core": "^4.2.2-alpha.0",
72
+ "@bloom-housing/backend-core": "^4.2.2-alpha.3",
73
73
  "@mapbox/mapbox-sdk": "^0.13.0",
74
74
  "@types/body-scroll-lock": "^2.6.1",
75
75
  "@types/jwt-decode": "^2.2.1",
@@ -100,5 +100,5 @@
100
100
  "tailwindcss": "2.2.10",
101
101
  "typesafe-actions": "^5.1.0"
102
102
  },
103
- "gitHead": "d375408299b5dd0293882a4499aef21bff230df2"
103
+ "gitHead": "540085e120d280b51b7fcd4fb96937f2aae450aa"
104
104
  }
@@ -98,6 +98,7 @@ export const IdleTimeout: FunctionComponent<IdleTimeoutProps> = ({
98
98
  ariaDescription={promptText}
99
99
  actions={modalActions}
100
100
  hideCloseIcon
101
+ role="alertdialog"
101
102
  >
102
103
  {promptText}
103
104
  </Modal>
@@ -14,7 +14,7 @@ const FormCard = (props: FormCardProps) => {
14
14
  <article className={classNames}>
15
15
  <div className="form-card__header">
16
16
  <header className="form-card__header_group">
17
- <h5 className="form-card__header_title">{props.header}</h5>
17
+ <h1 className="form-card__header_title">{props.header}</h1>
18
18
  </header>
19
19
 
20
20
  <div className="form-card__header_nav">{props.children}</div>
@@ -5,37 +5,38 @@ import { UseFormMethods, RegisterOptions } from "react-hook-form"
5
5
  import { Field } from "./Field"
6
6
  import { t } from "../helpers/translator"
7
7
 
8
- interface FieldSingle {
9
- id: string
10
- label: string
11
- value?: string
8
+ export interface FieldSingle {
9
+ additionalText?: boolean
12
10
  dataTestId?: string
13
11
  defaultChecked?: boolean
14
- description?: React.ReactNode
15
12
  defaultText?: string
13
+ description?: React.ReactNode
16
14
  disabled?: boolean
17
- note?: string
15
+ id: string
18
16
  inputProps?: Record<string, unknown>
17
+ label: string
18
+ uniqueName?: boolean
19
+ note?: string
19
20
  subFields?: FieldSingle[]
20
21
  type?: string
21
- additionalText?: boolean
22
+ value?: string
22
23
  }
23
24
 
24
25
  interface FieldGroupProps {
26
+ dataTestId?: string
25
27
  error?: boolean
26
28
  errorMessage?: string
27
- name: string
28
- type?: string
29
- groupLabel?: string
29
+ fieldClassName?: string
30
+ fieldGroupClassName?: string
31
+ fieldLabelClassName?: string
30
32
  fields?: FieldSingle[]
33
+ groupLabel?: string
31
34
  groupNote?: string
32
35
  groupSubNote?: string
36
+ name: string
33
37
  register: UseFormMethods["register"]
38
+ type?: string
34
39
  validation?: RegisterOptions
35
- fieldGroupClassName?: string
36
- fieldClassName?: string
37
- fieldLabelClassName?: string
38
- dataTestId?: string
39
40
  }
40
41
 
41
42
  const FieldGroup = ({
@@ -75,7 +76,7 @@ const FieldGroup = ({
75
76
  type={type}
76
77
  id={item.id}
77
78
  defaultValue={item.value || item.id}
78
- name={subfieldsExist() ? `${name}-${item.value}` : name}
79
+ name={subfieldsExist() || item.uniqueName ? `${name}-${item.value}` : name}
79
80
  onClick={(e) => {
80
81
  // We cannot reliably target an individual checkbox in a field group since they have the same name, so we keep track on our own
81
82
  if (e.currentTarget.checked) {
@@ -152,7 +153,7 @@ const FieldGroup = ({
152
153
  )
153
154
  }
154
155
  return (
155
- <>
156
+ <div>
156
157
  {groupLabel && <label className="field-label--caps">{groupLabel}</label>}
157
158
  {groupNote && <p className="field-note mb-4">{groupNote}</p>}
158
159
 
@@ -176,7 +177,7 @@ const FieldGroup = ({
176
177
  {errorMessage}
177
178
  </ErrorMessage>
178
179
  )}
179
- </>
180
+ </div>
180
181
  )
181
182
  }
182
183
 
@@ -30,4 +30,24 @@
30
30
  list-style: disc;
31
31
  @apply ml-6;
32
32
  }
33
+
34
+ &.markdown-informational {
35
+ font-size: 0.9em;
36
+ @apply text-gray-750;
37
+
38
+ h3 {
39
+ @apply font-sans;
40
+ @apply font-bold;
41
+ @apply text-base;
42
+ @apply text-black;
43
+ }
44
+
45
+ li {
46
+ @apply mb-4;
47
+ }
48
+
49
+ a {
50
+ @apply underline;
51
+ }
52
+ }
33
53
  }
@@ -1,3 +1,62 @@
1
+ /* Hat tip to this CSS solution:
2
+ https://www.cssscript.com/pure-html5-css3-responsive-table-solution/ */
3
+
4
+ //@screen md
5
+ @media screen and (max-width: 767px) {
6
+ table.responsive-collapse {
7
+ thead {
8
+ @apply hidden;
9
+ }
10
+
11
+ tr {
12
+ @apply block;
13
+ @apply mb-6;
14
+ }
15
+
16
+ tr:nth-of-type(even) {
17
+ background: inherit;
18
+ }
19
+
20
+ td:nth-of-type(even) {
21
+ @apply bg-primary-lighter;
22
+ }
23
+
24
+ td {
25
+ @apply block;
26
+ @apply text-right;
27
+ border: 0px;
28
+ display: flex;
29
+ @apply py-2;
30
+ }
31
+
32
+ td:before {
33
+ @apply font-bold;
34
+ @apply uppercase;
35
+ content: attr(data-label);
36
+ text-align: left;
37
+ width: 50%;
38
+ }
39
+
40
+ td:last-child {
41
+ @apply border-b-0;
42
+ }
43
+ }
44
+ table.base {
45
+ td:nth-of-type(even) {
46
+ background: transparent;
47
+ }
48
+ tbody td {
49
+ @apply border-0;
50
+ }
51
+ }
52
+
53
+ tr.group-reserved td {
54
+ @apply border-l-8;
55
+ @apply border-solid;
56
+ @apply border-accent-warm;
57
+ }
58
+ }
59
+
1
60
  table {
2
61
  @apply text-gray-750;
3
62
 
@@ -85,6 +144,183 @@ table {
85
144
  text-align: right;
86
145
  }
87
146
  }
147
+
148
+ &.stacked-table {
149
+ .stacked-table-cell-container {
150
+ td:before {
151
+ @apply text-base;
152
+ @apply text-gray-700;
153
+ }
154
+
155
+ @screen md {
156
+ @apply flex;
157
+ @apply flex-col;
158
+ @apply px-0;
159
+ @apply text-left;
160
+ @apply w-full;
161
+ }
162
+ width: 50%;
163
+ @apply text-right;
164
+ @apply pl-2;
165
+
166
+ .stacked-table-cell {
167
+ @apply font-semibold;
168
+ @apply text-gray-750;
169
+ @apply text-base;
170
+ }
171
+
172
+ .stacked-table-subtext {
173
+ @apply text-sm;
174
+ @apply text-gray-700;
175
+ @apply pl-1;
176
+ @apply font-normal;
177
+ @screen md {
178
+ @apply pl-0;
179
+ }
180
+ }
181
+
182
+ @apply pr-0;
183
+ @screen md {
184
+ @apply pr-3;
185
+ }
186
+ }
187
+
188
+ .stacked-table-header {
189
+ @apply px-0;
190
+ @apply text-base;
191
+ @apply text-gray-700;
192
+ @screen md {
193
+ @apply py-3;
194
+ }
195
+ @apply py-2;
196
+ }
197
+
198
+ thead {
199
+ @apply border-b;
200
+ }
201
+
202
+ td:last-child,
203
+ th:last-child {
204
+ .stacked-table-cell-container {
205
+ @apply text-right;
206
+ @apply pr-0;
207
+ @screen md {
208
+ width: auto;
209
+ }
210
+ width: 100%;
211
+ }
212
+ }
213
+ }
214
+
215
+ &.category-table {
216
+ thead {
217
+ height: 2rem;
218
+ @apply border-0;
219
+ }
220
+
221
+ .stacked-table-header {
222
+ @apply align-baseline;
223
+ @apply text-black;
224
+ @apply normal-case;
225
+ @apply px-0;
226
+ @apply pb-0;
227
+ @apply text-sm;
228
+ @screen md {
229
+ @apply py-3;
230
+ }
231
+ @apply pt-0;
232
+ @apply pb-2;
233
+ }
234
+
235
+ td:before {
236
+ @apply align-baseline;
237
+ @apply text-black;
238
+ @apply normal-case;
239
+ @apply px-0;
240
+ @apply pb-0;
241
+ @apply text-sm;
242
+ @apply pl-2;
243
+ @apply font-normal;
244
+ }
245
+
246
+ tr {
247
+ @apply mb-1;
248
+ td:first-child:before {
249
+ @apply pl-0;
250
+ @apply pr-2;
251
+ @apply font-semibold;
252
+ width: 50%;
253
+ }
254
+ }
255
+
256
+ td {
257
+ @md {
258
+ @apply py-3;
259
+ }
260
+ @apply py-0;
261
+ }
262
+
263
+ tbody td {
264
+ @apply border-0;
265
+ }
266
+
267
+ td:last-child,
268
+ th:last-child {
269
+ text-align: inherit;
270
+ }
271
+
272
+ .stacked-table-cell-container {
273
+ width: 50%;
274
+ @apply flex;
275
+ @apply flex-col;
276
+ @apply items-start;
277
+ @apply pl-2;
278
+ @apply text-left;
279
+ @screen md {
280
+ @apply pl-0;
281
+ @apply py-0;
282
+ }
283
+ .stacked-table-cell {
284
+ @screen md {
285
+ @apply text-base;
286
+ }
287
+ @apply text-sm;
288
+ @apply text-black;
289
+ @apply font-normal;
290
+ }
291
+ .stacked-table-subtext {
292
+ @apply pl-0;
293
+ @apply text-left;
294
+ }
295
+ }
296
+
297
+ td:last-child,
298
+ th:last-child {
299
+ .stacked-table-cell-container {
300
+ width: 50%;
301
+ }
302
+ }
303
+
304
+ tr {
305
+ td:first-child {
306
+ .stacked-table-cell:first-child {
307
+ @screen md {
308
+ display: block;
309
+ }
310
+ display: none;
311
+ }
312
+ }
313
+ }
314
+
315
+ @media screen and (max-width: 767px) {
316
+ td {
317
+ @apply pb-3;
318
+ }
319
+ td:first-child:before {
320
+ content: attr(data-cell);
321
+ }
322
+ }
323
+ }
88
324
  }
89
325
 
90
326
  table tr:nth-of-type(even) {
@@ -120,64 +356,6 @@ tr.group-reserved td:first-of-type {
120
356
  @apply border-accent-warm;
121
357
  }
122
358
 
123
- /* Hat tip to this CSS solution:
124
- https://www.cssscript.com/pure-html5-css3-responsive-table-solution/ */
125
-
126
- //@screen md
127
- @media screen and (max-width: 767px) {
128
- table.responsive-collapse {
129
- thead {
130
- @apply hidden;
131
- }
132
-
133
- tr {
134
- @apply block;
135
- @apply mb-6;
136
- }
137
-
138
- tr:nth-of-type(even) {
139
- background: inherit;
140
- }
141
-
142
- td:nth-of-type(even) {
143
- @apply bg-primary-lighter;
144
- }
145
-
146
- td {
147
- @apply block;
148
- @apply text-right;
149
- border: 0px;
150
- display: flex;
151
- }
152
-
153
- td:before {
154
- @apply font-bold;
155
- @apply uppercase;
156
- content: attr(data-label);
157
- text-align: left;
158
- width: 50%;
159
- }
160
-
161
- td:last-child {
162
- @apply border-b-0;
163
- }
164
- }
165
- table.base {
166
- td:nth-of-type(even) {
167
- background: transparent;
168
- }
169
- tbody td {
170
- @apply border-0;
171
- }
172
- }
173
-
174
- tr.group-reserved td {
175
- @apply border-l-8;
176
- @apply border-solid;
177
- @apply border-accent-warm;
178
- }
179
- }
180
-
181
359
  .table__thumbnail img {
182
360
  max-height: 80px;
183
361
  max-width: 142px;
@@ -169,3 +169,10 @@ h1.title {
169
169
  @apply text-sm;
170
170
  @apply mb-3;
171
171
  }
172
+
173
+ .category-header {
174
+ @apply font-alt-sans;
175
+ @apply font-semibold;
176
+ @apply text-gray-700;
177
+ @apply text-sm;
178
+ }
@@ -15,6 +15,7 @@ const HeaderStyleMap = {
15
15
  tableHeader: "table-header",
16
16
  tableSubheader: "table-subheader",
17
17
  sidebarHeader: "text-caps-underline",
18
+ categoryHeader: "category-header",
18
19
  }
19
20
 
20
21
  const Heading = (props: HeadingProps) => {
@@ -24,6 +24,7 @@ export interface SiteHeaderProps {
24
24
  dropdownItemClassName?: string
25
25
  homeURL: string
26
26
  imageOnly?: boolean
27
+ languageNavLabel?: string
27
28
  languages?: LangItem[]
28
29
  logoClass?: string
29
30
  logoSrc: string
@@ -423,7 +424,9 @@ const SiteHeader = (props: SiteHeaderProps) => {
423
424
 
424
425
  return (
425
426
  <header className={"site-header"}>
426
- {props.languages && <LanguageNav languages={props.languages} />}
427
+ {props.languages && (
428
+ <LanguageNav ariaLabel={props.languageNavLabel} languages={props.languages} />
429
+ )}
427
430
 
428
431
  <div className={`navbar-notice ${!props.noticeMobile && `navbar-notice-hide`}`}>
429
432
  <div className="navbar-notice__text">{props.notice ?? ""}</div>