@bloom-housing/ui-components 7.0.2-alpha.0 → 7.0.2-alpha.1

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,17 @@
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
+ ## [7.0.2-alpha.1](https://github.com/bloom-housing/bloom/compare/@bloom-housing/ui-components@7.0.2-alpha.0...@bloom-housing/ui-components@7.0.2-alpha.1) (2022-11-03)
7
+
8
+
9
+ ### Bug Fixes
10
+
11
+ * allow for more space for modals on mobile ([#3153](https://github.com/bloom-housing/bloom/issues/3153)) ([7e41703](https://github.com/bloom-housing/bloom/commit/7e41703ad8571eb160f4eaf53f40f9055f7639a3))
12
+
13
+
14
+
15
+
16
+
6
17
  ## [7.0.2-alpha.0](https://github.com/bloom-housing/bloom/compare/@bloom-housing/ui-components@7.0.1...@bloom-housing/ui-components@7.0.2-alpha.0) (2022-10-31)
7
18
 
8
19
  **Note:** Version bump only for package @bloom-housing/ui-components
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bloom-housing/ui-components",
3
- "version": "7.0.2-alpha.0",
3
+ "version": "7.0.2-alpha.1",
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",
@@ -78,7 +78,6 @@
78
78
  "@fortawesome/free-solid-svg-icons": "^6.1.1",
79
79
  "@fortawesome/react-fontawesome": "^0.1.18",
80
80
  "@mapbox/mapbox-sdk": "^0.13.0",
81
- "@types/body-scroll-lock": "^2.6.1",
82
81
  "@types/jwt-decode": "^2.2.1",
83
82
  "@types/markdown-to-jsx": "^6.11.2",
84
83
  "@types/mdx": "^2.0.1",
@@ -92,7 +91,6 @@
92
91
  "ag-grid-react": "^26.0.0",
93
92
  "aria-autocomplete": "^1.4.0",
94
93
  "axios": "0.21.2",
95
- "body-scroll-lock": "^3.1.5",
96
94
  "dayjs": "^1.10.7",
97
95
  "jwt-decode": "^2.2.0",
98
96
  "markdown-to-jsx": "^6.11.4",
@@ -106,6 +104,7 @@
106
104
  "react-focus-lock": "^2.5.2",
107
105
  "react-map-gl": "^6.1.16",
108
106
  "react-media": "^1.10.0",
107
+ "react-remove-scroll": "2.5.4",
109
108
  "react-tabs": "^3.2.2",
110
109
  "react-text-mask": "^5.4.3",
111
110
  "react-transition-group": "^4.4.1",
@@ -113,5 +112,5 @@
113
112
  "ts-jest": "^26.4.1",
114
113
  "typesafe-actions": "^5.1.0"
115
114
  },
116
- "gitHead": "13c52e506599651ea0fe8a2032fc3eef8fa173f7"
115
+ "gitHead": "a2533b31708dc867b12492818815bb1e3b1599a7"
117
116
  }
@@ -4,7 +4,7 @@ import { ApplicationStatus } from "../notifications/ApplicationStatus"
4
4
  import "./ImageCard.scss"
5
5
  import { Tag } from "../text/Tag"
6
6
  import { ApplicationStatusType } from "../global/ApplicationStatusType"
7
- import { AppearanceStyleType } from "../global/AppearanceTypes"
7
+ import { AppearanceSizeType, AppearanceStyleType } from "../global/AppearanceTypes"
8
8
  import { Icon, IconFillColors, UniversalIconType } from "../icons/Icon"
9
9
  import { Modal } from "../overlays/Modal"
10
10
  import { Button } from "../actions/Button"
@@ -185,7 +185,7 @@ const ImageCard = (props: ImageCardProps) => {
185
185
  headerClassNames="sr-only"
186
186
  closeIconColor={IconFillColors.white}
187
187
  actions={[
188
- <Button onClick={() => setShowModal(!showModal)}>
188
+ <Button onClick={() => setShowModal(!showModal)} size={AppearanceSizeType.small}>
189
189
  {props.modalCloseLabel || "Close"}
190
190
  </Button>,
191
191
  ]}
@@ -4,15 +4,19 @@
4
4
  --title-font-size: var(--bloom-font-size-base-alt);
5
5
  --title-font-family: var(--bloom-font-sans);
6
6
  --content-font-color: var(--bloom-color-gray-700);
7
- --content-padding-block: var(--bloom-s5) var(--bloom-s8);
7
+ --content-padding-block: var(--bloom-s6);
8
8
  --max-width: var(--bloom-width-5xl);
9
9
  --desktop-min-width: var(--bloom-width-lg);
10
10
  --footer-background-color: var(--bloom-color-primary-lighter);
11
11
  --border-radius: var(--bloom-rounded);
12
+ --mobile-border-radius: 0;
12
13
  --background-color: var(--bloom-color-white);
13
14
  --modal-shadow: var(--bloom-shadow-md);
14
15
  --modal-border: var(--bloom-border-1) solid var(--bloom-color-gray-400);
15
16
  --footer-justify: normal;
17
+ --footer-height: 170px;
18
+ overflow: auto;
19
+ -webkit-overflow-scrolling: touch;
16
20
 
17
21
  position: relative;
18
22
  max-width: var(--max-width);
@@ -20,11 +24,21 @@
20
24
  margin: auto;
21
25
  border: var(--modal-border);
22
26
  background-color: var(--background-color);
23
- border-radius: var(--border-radius);
24
27
  box-shadow: var(--modal-shadow);
28
+ width: 100vw;
29
+ border-radius: var(--mobile-border-radius);
25
30
 
26
- @media (min-width: $screen-md) {
31
+ @media (min-width: $screen-sm) {
32
+ border-radius: var(--border-radius);
27
33
  min-width: var(--desktop-min-width);
34
+ width: auto;
35
+ }
36
+
37
+ max-height: 100vh;
38
+ max-width: 100vw;
39
+ @media (min-width: $screen-md) {
40
+ max-height: calc(100vh - var(--bloom-s6));
41
+ max-width: calc(100vw - var(--bloom-s6));
28
42
  }
29
43
  }
30
44
 
@@ -35,6 +49,7 @@
35
49
  .modal__title {
36
50
  padding-block: var(--bloom-s6) var(--bloom-s3);
37
51
  padding-inline: var(--bloom-s6) var(--bloom-s12);
52
+ padding-bottom: var(--bloom-s6);
38
53
  color: var(--title-color);
39
54
  font-size: var(--title-font-size);
40
55
  font-family: var(--title-font-family);
@@ -43,6 +58,7 @@
43
58
  .modal__inner {
44
59
  padding-block: var(--content-padding-block);
45
60
  padding-inline: var(--bloom-s6);
61
+ padding-top: 0;
46
62
 
47
63
  &:last-of-type {
48
64
  border-bottom-right-radius: var(--border-radius);
@@ -50,7 +66,13 @@
50
66
  }
51
67
 
52
68
  &.is-scrollable {
53
- max-height: calc(100vh - 200px);
69
+ max-height: calc(100vh - var(--footer-height));
70
+ max-width: 100vw;
71
+ @media (min-width: $screen-md) {
72
+ max-height: calc(100vh - (var(--footer-height) + var(--bloom-s6)));
73
+ max-width: calc(100vw - var(--bloom-s6));
74
+ margin-bottom: auto;
75
+ }
54
76
  overflow-y: auto;
55
77
  }
56
78
 
@@ -60,14 +82,14 @@
60
82
  }
61
83
 
62
84
  .modal__footer {
63
- padding-block: var(--bloom-s4);
64
- padding-inline: var(--bloom-s6);
85
+ padding: var(--bloom-s6);
65
86
  border-bottom-right-radius: var(--border-radius);
66
87
  border-bottom-left-radius: var(--border-radius);
67
88
  background-color: var(--footer-background-color);
68
89
 
69
90
  display: flex;
70
91
  flex-direction: row-reverse;
92
+ flex-wrap: wrap;
71
93
  gap: var(--bloom-s5);
72
94
  justify-content: var(--footer-justify);
73
95
  align-items: center;
@@ -64,18 +64,6 @@ export const Modal = (props: ModalProps) => {
64
64
  role={props.role ? props.role : "dialog"}
65
65
  >
66
66
  <div className={modalClassNames.join(" ")}>
67
- <ModalHeader
68
- title={props.title}
69
- uniqueId={uniqueIdRef.current}
70
- className={props.headerClassNames}
71
- />
72
-
73
- <section className={innerClassNames.join(" ")}>
74
- {typeof props.children === "string" ? <p>{props.children}</p> : props.children}
75
- </section>
76
-
77
- {props.actions && <ModalFooter actions={props.actions} />}
78
-
79
67
  {!props.hideCloseIcon && (
80
68
  <button
81
69
  className={closeClassNames.join(" ")}
@@ -90,6 +78,17 @@ export const Modal = (props: ModalProps) => {
90
78
  />
91
79
  </button>
92
80
  )}
81
+ <ModalHeader
82
+ title={props.title}
83
+ uniqueId={uniqueIdRef.current}
84
+ className={props.headerClassNames}
85
+ />
86
+
87
+ <section className={innerClassNames.join(" ")}>
88
+ {typeof props.children === "string" ? <p>{props.children}</p> : props.children}
89
+ </section>
90
+
91
+ {props.actions && <ModalFooter actions={props.actions} />}
93
92
  </div>
94
93
  </Overlay>
95
94
  )
@@ -3,7 +3,7 @@ import "./Overlay.scss"
3
3
  import useKeyPress from "../helpers/useKeyPress"
4
4
  import { createPortal } from "react-dom"
5
5
  import FocusLock from "react-focus-lock"
6
- import { disableBodyScroll, enableBodyScroll } from "body-scroll-lock"
6
+ import { RemoveScroll } from "react-remove-scroll"
7
7
  import { CSSTransition } from "react-transition-group"
8
8
 
9
9
  export type OverlayProps = {
@@ -70,18 +70,6 @@ export const Overlay = (props: OverlayProps) => {
70
70
  }
71
71
  }, [elForPortal, overlayRoot])
72
72
 
73
- // disable body scrolling when the overlay is open
74
- useEffect(() => {
75
- if (props.scrollable) return
76
- if (!(overlayRoot && elForPortal)) return
77
-
78
- props.open ? disableBodyScroll(elForPortal) : enableBodyScroll(elForPortal)
79
-
80
- return () => {
81
- enableBodyScroll(elForPortal)
82
- }
83
- }, [elForPortal, overlayRoot, props.open])
84
-
85
73
  return (
86
74
  elForPortal &&
87
75
  createPortal(
@@ -92,7 +80,9 @@ export const Overlay = (props: OverlayProps) => {
92
80
  mountOnEnter
93
81
  unmountOnExit
94
82
  >
95
- <OverlayInner {...props}>{props.children}</OverlayInner>
83
+ <RemoveScroll>
84
+ <OverlayInner {...props}>{props.children}</OverlayInner>
85
+ </RemoveScroll>
96
86
  </CSSTransition>,
97
87
  elForPortal
98
88
  )
@@ -6,6 +6,7 @@ import {
6
6
  Form,
7
7
  Field,
8
8
  emailRegex,
9
+ AppearanceSizeType,
9
10
  } from "@bloom-housing/ui-components"
10
11
  import React, { useEffect, useMemo } from "react"
11
12
  import { useForm } from "react-hook-form"
@@ -67,6 +68,7 @@ const ResendConfirmationModal = ({
67
68
  styleType={AppearanceStyleType.primary}
68
69
  onClick={() => onFormSubmit()}
69
70
  loading={loading}
71
+ size={AppearanceSizeType.small}
70
72
  >
71
73
  {t("authentication.createAccount.resendTheEmail")}
72
74
  </Button>,
@@ -77,6 +79,7 @@ const ResendConfirmationModal = ({
77
79
  onClose()
78
80
  window.scrollTo(0, 0)
79
81
  }}
82
+ size={AppearanceSizeType.small}
80
83
  >
81
84
  {t("t.cancel")}
82
85
  </Button>,