@bloom-housing/ui-components 5.1.1-alpha.9 → 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 CHANGED
@@ -3,6 +3,60 @@
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
+
6
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)
7
61
 
8
62
 
package/index.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  /* Actions */
2
2
  export * from "./src/actions/Button"
3
+ export * from "./src/actions/ButtonGroup"
3
4
  export * from "./src/actions/ExpandableText"
4
5
  export * from "./src/actions/LinkButton"
5
6
  export * from "./src/actions/LocalizedLink"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bloom-housing/ui-components",
3
- "version": "5.1.1-alpha.9",
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": "b9ed99bd1b58d8057bae8782616aa43f53f1294e"
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 }
@@ -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
- @screen md {
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 {
@@ -147,7 +147,7 @@ const SiteHeader = (props: SiteHeaderProps) => {
147
147
  }
148
148
  dropdownOptionKeyDown(event, index)
149
149
  }}
150
- data-test-id={`${option.title}-${index}`}
150
+ data-test-id={`${option.title}`}
151
151
  >
152
152
  {dropdownOptionContent(option)}
153
153
  </button>
@@ -301,7 +301,7 @@ const SiteHeader = (props: SiteHeaderProps) => {
301
301
  className={`navbar-link ${props.menuItemClassName && props.menuItemClassName}`}
302
302
  href={menuLink.href}
303
303
  key={`${menuLink.title}-${index}`}
304
- data-test-id={`${menuLink.title}-${index}`}
304
+ data-test-id={`${menuLink.title}`}
305
305
  >
306
306
  {menuContent}
307
307
  </LinkComponent>
@@ -340,8 +340,8 @@ const SiteHeader = (props: SiteHeaderProps) => {
340
340
  }}
341
341
  onMouseEnter={() => changeMenuShow(menuLink.title, activeMenus, setActiveMenus)}
342
342
  onMouseLeave={() => changeMenuShow(menuLink.title, activeMenus, setActiveMenus)}
343
- data-test-id={`${menuLink.title}-${index}`}
344
343
  role={"button"}
344
+ data-test-id={`${menuLink.title}`}
345
345
  >
346
346
  {menuContent}
347
347
  </span>
@@ -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-2;
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 {
@@ -104,3 +104,10 @@
104
104
  @apply pb-4;
105
105
  @apply overflow-y-visible;
106
106
  }
107
+
108
+ .drawer__small {
109
+ width: 100%;
110
+ @screen md {
111
+ width: 45rem;
112
+ }
113
+ }
@@ -52,7 +52,6 @@
52
52
  max-height: calc(100vh - 200px);
53
53
  overflow-y: auto;
54
54
  }
55
-
56
55
  p {
57
56
  color: var(--content-font-color);
58
57
  }
@@ -1,5 +1,5 @@
1
1
  import * as React from "react"
2
- import Heading from "../../../../headers/Heading"
2
+ import { Heading } from "../../../../headers/Heading"
3
3
 
4
4
  export type EventType = {
5
5
  timeString?: string
@@ -3,6 +3,7 @@ import * as React from "react"
3
3
  export const Swatch = (props: { colorVar: string }) => (
4
4
  <span
5
5
  style={{ backgroundColor: `var(${props.colorVar})` }}
6
+ title={props.colorVar}
6
7
  className="w-6 border border-gray-500 inline-block"
7
8
  >
8
9
  &nbsp;