@bloom-housing/ui-components 13.0.0 → 13.0.2
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/dist/index.d.ts +0 -1
- package/dist/index.js +0 -1
- package/dist/index.js.map +1 -1
- package/dist/src/actions/Button.d.ts +2 -2
- package/dist/src/actions/Button.stories.d.ts +16 -15
- package/dist/src/actions/ButtonGroup.d.ts +2 -2
- package/dist/src/actions/ButtonGroup.stories.d.ts +7 -6
- package/dist/src/actions/ExpandableContent.d.ts +1 -1
- package/dist/src/actions/ExpandableContent.stories.d.ts +3 -2
- package/dist/src/actions/ExpandableText.d.ts +2 -1
- package/dist/src/actions/ExpandableText.stories.d.ts +7 -6
- package/dist/src/actions/LinkButton.d.ts +2 -1
- package/dist/src/actions/LinkButton.stories.d.ts +9 -8
- package/dist/src/actions/LocalizedLink.d.ts +2 -2
- package/dist/src/actions/Video.d.ts +2 -1
- package/dist/src/blocks/ActionBlock.d.ts +1 -1
- package/dist/src/blocks/ActionBlock.stories.d.ts +8 -7
- package/dist/src/blocks/Card.d.ts +7 -7
- package/dist/src/blocks/Card.stories.d.ts +5 -4
- package/dist/src/blocks/DashBlock.d.ts +1 -1
- package/dist/src/blocks/DashBlocks.d.ts +1 -1
- package/dist/src/blocks/DashBlocks.stories.d.ts +2 -1
- package/dist/src/blocks/FormCard.d.ts +1 -1
- package/dist/src/blocks/FormCard.stories.d.ts +3 -2
- package/dist/src/blocks/HousingCounselor.d.ts +2 -1
- package/dist/src/blocks/HousingCounselor.stories.d.ts +4 -3
- package/dist/src/blocks/ImageCard.d.ts +2 -1
- package/dist/src/blocks/ImageCard.js +5 -1
- package/dist/src/blocks/ImageCard.js.map +1 -1
- package/dist/src/blocks/ImageCard.stories.d.ts +18 -17
- package/dist/src/blocks/InfoCard.d.ts +1 -1
- package/dist/src/blocks/InfoCard.stories.d.ts +6 -5
- package/dist/src/blocks/MediaCard.d.ts +2 -1
- package/dist/src/blocks/MediaCard.stories.d.ts +5 -4
- package/dist/src/blocks/StandardCard.d.ts +1 -1
- package/dist/src/blocks/StandardCard.stories.d.ts +6 -5
- package/dist/src/blocks/StatusBar.d.ts +1 -1
- package/dist/src/blocks/StatusBar.stories.d.ts +4 -3
- package/dist/src/blocks/StatusItem.d.ts +2 -1
- package/dist/src/blocks/StatusItem.stories.d.ts +3 -2
- package/dist/src/blocks/Tooltip.d.ts +1 -1
- package/dist/src/blocks/ViewItem.d.ts +1 -1
- package/dist/src/blocks/ViewItem.stories.d.ts +5 -4
- package/dist/src/documentation/Utilities.d.ts +2 -1
- package/dist/src/footers/ExygyFooter.d.ts +2 -1
- package/dist/src/footers/SiteFooter.d.ts +1 -1
- package/dist/src/footers/SiteFooter.stories.d.ts +7 -6
- package/dist/src/forms/DOBField.d.ts +1 -1
- package/dist/src/forms/DOBField.stories.d.ts +3 -2
- package/dist/src/forms/DateField.d.ts +1 -1
- package/dist/src/forms/DateField.stories.d.ts +3 -2
- package/dist/src/forms/Dropzone.d.ts +1 -1
- package/dist/src/forms/Dropzone.stories.d.ts +4 -3
- package/dist/src/forms/Field.d.ts +4 -4
- package/dist/src/forms/Field.stories.d.ts +12 -11
- package/dist/src/forms/FieldGroup.d.ts +1 -1
- package/dist/src/forms/FieldGroup.stories.d.ts +6 -5
- package/dist/src/forms/Form.d.ts +1 -1
- package/dist/src/forms/HouseholdMemberForm.d.ts +2 -1
- package/dist/src/forms/HouseholdMemberForm.stories.d.ts +4 -3
- package/dist/src/forms/HouseholdSizeField.d.ts +2 -1
- package/dist/src/forms/HouseholdSizeField.stories.d.ts +3 -2
- package/dist/src/forms/MultiSelectField.d.ts +1 -1
- package/dist/src/forms/MultiSelectField.stories.d.ts +5 -4
- package/dist/src/forms/MultiSelectField.stories.js.map +1 -1
- package/dist/src/forms/PhoneField.d.ts +2 -2
- package/dist/src/forms/Select.d.ts +1 -1
- package/dist/src/forms/Textarea.d.ts +1 -1
- package/dist/src/forms/Textarea.stories.d.ts +9 -8
- package/dist/src/forms/TimeField.d.ts +1 -1
- package/dist/src/forms/TimeField.stories.d.ts +4 -3
- package/dist/src/forms/checkbox.stories.d.ts +3 -2
- package/dist/src/forms/checkbox.stories.js.map +1 -1
- package/dist/src/forms/radio.stories.d.ts +3 -2
- package/dist/src/forms/radio.stories.js.map +1 -1
- package/dist/src/headers/HeadingGroup.d.ts +1 -1
- package/dist/src/headers/HeadingGroup.stories.d.ts +3 -2
- package/dist/src/headers/Hero.d.ts +1 -1
- package/dist/src/headers/Hero.stories.d.ts +7 -6
- package/dist/src/headers/PageHeader.d.ts +1 -1
- package/dist/src/headers/PageHeader.stories.d.ts +7 -6
- package/dist/src/headers/SiteHeader.d.ts +1 -1
- package/dist/src/headers/SiteHeader.js.map +1 -1
- package/dist/src/headers/SiteHeader.stories.d.ts +20 -19
- package/dist/src/headers/StepHeader.d.ts +2 -1
- package/dist/src/headers/StepHeader.js.map +1 -1
- package/dist/src/headers/StepHeader.stories.d.ts +5 -4
- package/dist/src/helpers/MultiLineAddress.d.ts +2 -1
- package/dist/src/helpers/MultiLineAddress.stories.d.ts +6 -5
- package/dist/src/helpers/OneLineAddress.d.ts +2 -1
- package/dist/src/helpers/OneLineAddress.stories.d.ts +6 -5
- package/dist/src/helpers/formOptions.d.ts +2 -1
- package/dist/src/helpers/preferences.d.ts +2 -1
- package/dist/src/helpers/useFallbackImage.d.ts +2 -2
- package/dist/src/icons/FontAwesome.stories.d.ts +5 -4
- package/dist/src/icons/HeaderBadge.d.ts +2 -1
- package/dist/src/icons/HeaderBadge.stories.d.ts +2 -1
- package/dist/src/icons/Icon.d.ts +63 -62
- package/dist/src/icons/Icon.stories.d.ts +61 -60
- package/dist/src/icons/Icons.d.ts +62 -61
- package/dist/src/lists/NumberedList.stories.d.ts +2 -1
- package/dist/src/lists/PreferencesList.d.ts +2 -1
- package/dist/src/lists/PreferencesList.stories.d.ts +3 -2
- package/dist/src/navigation/Breadcrumbs.d.ts +2 -2
- package/dist/src/navigation/Breadcrumbs.stories.d.ts +3 -2
- package/dist/src/navigation/FooterNav.d.ts +1 -1
- package/dist/src/navigation/LanguageNav.d.ts +2 -1
- package/dist/src/navigation/LanguageNav.stories.d.ts +3 -2
- package/dist/src/navigation/ProgressNav.d.ts +2 -1
- package/dist/src/navigation/ProgressNav.stories.d.ts +4 -3
- package/dist/src/navigation/SideNav.d.ts +2 -1
- package/dist/src/navigation/SideNav.stories.d.ts +6 -5
- package/dist/src/navigation/TabNav.d.ts +2 -2
- package/dist/src/navigation/TabNav.stories.d.ts +4 -3
- package/dist/src/navigation/Tabs.stories.d.ts +3 -2
- package/dist/src/notifications/AlertBox.d.ts +2 -1
- package/dist/src/notifications/AlertBox.stories.d.ts +15 -14
- package/dist/src/notifications/AlertNotice.d.ts +2 -1
- package/dist/src/notifications/AlertNotice.stories.d.ts +8 -7
- package/dist/src/notifications/ApplicationStatus.d.ts +2 -1
- package/dist/src/notifications/ApplicationStatus.stories.d.ts +17 -16
- package/dist/src/notifications/ErrorMessage.d.ts +1 -1
- package/dist/src/notifications/SiteAlert.d.ts +2 -1
- package/dist/src/notifications/StatusAside.d.ts +1 -1
- package/dist/src/notifications/StatusAside.stories.d.ts +4 -3
- package/dist/src/notifications/StatusMessage.d.ts +2 -2
- package/dist/src/notifications/StatusMessage.stories.d.ts +4 -3
- package/dist/src/overlays/Drawer.d.ts +1 -1
- package/dist/src/overlays/Drawer.stories.d.ts +6 -5
- package/dist/src/overlays/LoadingOverlay.d.ts +1 -1
- package/dist/src/overlays/LoadingOverlay.stories.d.ts +3 -2
- package/dist/src/overlays/Modal.d.ts +1 -1
- package/dist/src/overlays/Modal.stories.d.ts +9 -8
- package/dist/src/page_components/ApplicationTimeline.d.ts +2 -1
- package/dist/src/page_components/NavigationHeader.d.ts +1 -1
- package/dist/src/page_components/forgot-password/FormForgotPassword.d.ts +2 -1
- package/dist/src/page_components/listing/AdditionalFees.d.ts +1 -1
- package/dist/src/page_components/listing/AdditionalFees.stories.d.ts +10 -9
- package/dist/src/page_components/listing/ContentAccordion.d.ts +1 -1
- package/dist/src/page_components/listing/ContentAccordion.stories.d.ts +7 -6
- package/dist/src/page_components/listing/ListingCard.d.ts +1 -1
- package/dist/src/page_components/listing/ListingCard.stories.d.ts +16 -15
- package/dist/src/page_components/listing/ListingDetailHeader.d.ts +1 -1
- package/dist/src/page_components/listing/ListingDetailHeader.stories.d.ts +2 -1
- package/dist/src/page_components/listing/ListingDetails.d.ts +3 -2
- package/dist/src/page_components/listing/ListingsGroup.d.ts +1 -1
- package/dist/src/page_components/listing/ListingsGroup.stories.d.ts +5 -4
- package/dist/src/page_components/listing/listing_sidebar/Contact.d.ts +1 -1
- package/dist/src/page_components/listing/listing_sidebar/Contact.stories.d.ts +6 -5
- package/dist/src/page_components/listing/listing_sidebar/ContactAddress.d.ts +2 -1
- package/dist/src/page_components/listing/listing_sidebar/ContactAddress.stories.d.ts +3 -2
- package/dist/src/page_components/listing/listing_sidebar/ExpandableSection.d.ts +1 -1
- package/dist/src/page_components/listing/listing_sidebar/ExpandableSection.stories.d.ts +4 -3
- package/dist/src/page_components/listing/listing_sidebar/GetApplication.d.ts +2 -1
- package/dist/src/page_components/listing/listing_sidebar/GetApplication.stories.d.ts +10 -9
- package/dist/src/page_components/listing/listing_sidebar/ListingUpdated.d.ts +2 -1
- package/dist/src/page_components/listing/listing_sidebar/NumberedHeader.d.ts +2 -1
- package/dist/src/page_components/listing/listing_sidebar/OrDivider.d.ts +2 -1
- package/dist/src/page_components/listing/listing_sidebar/QuantityRowSection.d.ts +1 -1
- package/dist/src/page_components/listing/listing_sidebar/QuantityRowSection.stories.d.ts +9 -8
- package/dist/src/page_components/listing/listing_sidebar/ReferralApplication.d.ts +2 -1
- package/dist/src/page_components/listing/listing_sidebar/ReferralApplication.stories.d.ts +2 -1
- package/dist/src/page_components/listing/listing_sidebar/SidebarBlock.d.ts +1 -1
- package/dist/src/page_components/listing/listing_sidebar/SidebarBlock.stories.d.ts +4 -3
- package/dist/src/page_components/listing/listing_sidebar/SubmitApplication.d.ts +2 -1
- package/dist/src/page_components/listing/listing_sidebar/SubmitApplication.stories.d.ts +6 -5
- package/dist/src/page_components/listing/listing_sidebar/events/DownloadLotteryResults.d.ts +2 -1
- package/dist/src/page_components/listing/listing_sidebar/events/DownloadLotteryResults.stories.d.ts +3 -2
- package/dist/src/page_components/listing/listing_sidebar/events/EventSection.d.ts +1 -1
- package/dist/src/page_components/listing/listing_sidebar/events/EventSection.stories.d.ts +13 -12
- package/dist/src/page_components/sign-in/FormSignIn.d.ts +2 -1
- package/dist/src/page_components/sign-in/FormSignInAddPhone.d.ts +2 -1
- package/dist/src/page_components/sign-in/FormSignInErrorBox.d.ts +2 -1
- package/dist/src/page_components/sign-in/FormSignInMFACode.d.ts +2 -1
- package/dist/src/page_components/sign-in/FormSignInMFAType.d.ts +2 -1
- package/dist/src/page_components/sign-in/FormTerms.d.ts +2 -1
- package/dist/src/page_components/sign-in/ResendConfirmationModal.d.ts +2 -1
- package/dist/src/prototypes/AppCard.stories.d.ts +4 -3
- package/dist/src/prototypes/Back.stories.d.ts +3 -2
- package/dist/src/prototypes/ButtonGroup.stories.d.ts +4 -3
- package/dist/src/prototypes/ButtonPager.stories.d.ts +3 -2
- package/dist/src/prototypes/FieldSection.d.ts +1 -1
- package/dist/src/prototypes/FieldSection.stories.d.ts +5 -4
- package/dist/src/prototypes/GridItem.d.ts +1 -1
- package/dist/src/prototypes/GridItem.stories.d.ts +4 -3
- package/dist/src/prototypes/SummaryCard.stories.d.ts +4 -3
- package/dist/src/prototypes/Swatch.d.ts +2 -1
- package/dist/src/sections/ContentSection.d.ts +1 -1
- package/dist/src/sections/FooterSection.d.ts +1 -1
- package/dist/src/sections/GridSection.d.ts +2 -2
- package/dist/src/sections/GridSection.stories.d.ts +12 -11
- package/dist/src/sections/InfoCardGrid.d.ts +1 -1
- package/dist/src/sections/InfoCardGrid.stories.d.ts +4 -3
- package/dist/src/sections/ListSection.d.ts +1 -1
- package/dist/src/sections/MarkdownSection.d.ts +1 -1
- package/dist/src/sections/ResponsiveContentList.d.ts +4 -4
- package/dist/src/sections/ResponsiveContentList.stories.d.ts +2 -1
- package/dist/src/sections/ResponsiveWrappers.d.ts +2 -2
- package/dist/src/tables/AgPagination.d.ts +1 -1
- package/dist/src/tables/AgTable.d.ts +1 -1
- package/dist/src/tables/AgTable.stories.d.ts +4 -3
- package/dist/src/tables/CategoryTable.d.ts +2 -1
- package/dist/src/tables/CategoryTable.stories.d.ts +5 -4
- package/dist/src/tables/GroupedTable.d.ts +1 -1
- package/dist/src/tables/GroupedTable.stories.d.ts +3 -2
- package/dist/src/tables/MinimalTable.d.ts +2 -1
- package/dist/src/tables/MinimalTable.stories.d.ts +10 -9
- package/dist/src/tables/StackedTable.d.ts +2 -1
- package/dist/src/tables/StackedTable.stories.d.ts +8 -7
- package/dist/src/tables/StandardTable.d.ts +5 -5
- package/dist/src/tables/StandardTable.stories.d.ts +7 -6
- package/dist/src/text/Description.d.ts +1 -1
- package/dist/src/text/Description.stories.d.ts +4 -3
- package/dist/src/text/Heading.d.ts +1 -1
- package/dist/src/text/Heading.js.map +1 -1
- package/dist/src/text/Heading.stories.d.ts +15 -14
- package/dist/src/text/Message.d.ts +1 -1
- package/dist/src/text/Message.stories.d.ts +4 -3
- package/dist/src/text/Tag.d.ts +1 -1
- package/dist/src/text/Tag.stories.d.ts +11 -10
- package/index.ts +0 -1
- package/package.json +5 -8
- package/src/actions/ButtonGroup.tsx +1 -1
- package/src/blocks/ImageCard.tsx +6 -2
- package/src/forms/Field.tsx +3 -3
- package/src/forms/MultiSelectField.stories.tsx +1 -1
- package/src/forms/PhoneField.tsx +1 -1
- package/src/forms/checkbox.stories.tsx +1 -1
- package/src/forms/radio.stories.tsx +1 -1
- package/src/headers/SiteHeader.scss +7 -7
- package/src/headers/SiteHeader.tsx +1 -1
- package/src/headers/StepHeader.scss +4 -3
- package/src/headers/StepHeader.tsx +1 -1
- package/src/text/Heading.tsx +1 -1
- package/dist/__tests__/page_components/ListingMap.test.d.ts +0 -1
- package/dist/__tests__/page_components/ListingMap.test.js +0 -14
- package/dist/__tests__/page_components/ListingMap.test.js.map +0 -1
- package/dist/src/page_components/listing/ListingMap.d.ts +0 -23
- package/dist/src/page_components/listing/ListingMap.js +0 -96
- package/dist/src/page_components/listing/ListingMap.js.map +0 -1
- package/dist/src/page_components/listing/ListingMap.stories.d.ts +0 -5
- package/dist/src/page_components/listing/ListingMap.stories.js +0 -11
- package/dist/src/page_components/listing/ListingMap.stories.js.map +0 -1
- package/src/page_components/listing/ListingMap.scss +0 -40
- package/src/page_components/listing/ListingMap.stories.tsx +0 -14
- package/src/page_components/listing/ListingMap.tsx +0 -153
package/src/forms/PhoneField.tsx
CHANGED
|
@@ -2,7 +2,7 @@ import * as React from "react"
|
|
|
2
2
|
|
|
3
3
|
export default {
|
|
4
4
|
title: "Forms/Checkbox",
|
|
5
|
-
decorators: [(storyFn: () => JSX.Element) => <div style={{ padding: "30px" }}>{storyFn()}</div>],
|
|
5
|
+
decorators: [(storyFn: () => React.JSX.Element) => <div style={{ padding: "30px" }}>{storyFn()}</div>],
|
|
6
6
|
}
|
|
7
7
|
|
|
8
8
|
export const standard = () => (
|
|
@@ -2,7 +2,7 @@ import * as React from "react"
|
|
|
2
2
|
|
|
3
3
|
export default {
|
|
4
4
|
title: "Forms/Radio",
|
|
5
|
-
decorators: [(storyFn: () => JSX.Element) => <div style={{ padding: "30px" }}>{storyFn()}</div>],
|
|
5
|
+
decorators: [(storyFn: () => React.JSX.Element) => <div style={{ padding: "30px" }}>{storyFn()}</div>],
|
|
6
6
|
}
|
|
7
7
|
|
|
8
8
|
export const standard = () => (
|
|
@@ -253,6 +253,10 @@
|
|
|
253
253
|
max-width: var(--logo-max-width);
|
|
254
254
|
box-shadow: var(--logo-box-shadow);
|
|
255
255
|
|
|
256
|
+
background-color: var(--logo-background-color);
|
|
257
|
+
border-bottom: 0;
|
|
258
|
+
display: flex;
|
|
259
|
+
|
|
256
260
|
@media (min-width: $screen-md) {
|
|
257
261
|
height: var(--logo-desktop-height);
|
|
258
262
|
box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.25);
|
|
@@ -268,10 +272,6 @@
|
|
|
268
272
|
@media (min-width: $screen-print) {
|
|
269
273
|
margin-top: 0;
|
|
270
274
|
}
|
|
271
|
-
|
|
272
|
-
background-color: var(--logo-background-color);
|
|
273
|
-
border-bottom: 0;
|
|
274
|
-
display: flex;
|
|
275
275
|
}
|
|
276
276
|
|
|
277
277
|
@media print {
|
|
@@ -552,14 +552,14 @@
|
|
|
552
552
|
.site-header__notice {
|
|
553
553
|
width: 100%;
|
|
554
554
|
background-color: var(--bloom-color-primary);
|
|
555
|
+
text-align: left;
|
|
556
|
+
color: var(--bloom-color-white);
|
|
557
|
+
display: var(--notice-display-mobile);
|
|
555
558
|
|
|
556
559
|
@media (min-width: $screen-md) {
|
|
557
560
|
text-align: right;
|
|
558
561
|
display: var(--notice-display-desktop);
|
|
559
562
|
}
|
|
560
|
-
text-align: left;
|
|
561
|
-
color: var(--bloom-color-white);
|
|
562
|
-
display: var(--notice-display-mobile);
|
|
563
563
|
}
|
|
564
564
|
|
|
565
565
|
.site-header__notice-text {
|
|
@@ -343,7 +343,7 @@ const SiteHeader = (props: SiteHeaderProps) => {
|
|
|
343
343
|
return (
|
|
344
344
|
<>
|
|
345
345
|
{props.menuLinks.map((menuLink, index) => {
|
|
346
|
-
let menuContent: JSX.Element
|
|
346
|
+
let menuContent: React.JSX.Element
|
|
347
347
|
if (menuLink.subMenuLinks) {
|
|
348
348
|
menuContent = getDesktopDropdown(menuLink.title, menuLink.subMenuLinks)
|
|
349
349
|
} else {
|
|
@@ -28,13 +28,14 @@
|
|
|
28
28
|
color: var(--number-color);
|
|
29
29
|
min-width: var(--circle-mobile-size);
|
|
30
30
|
height: var(--circle-mobile-size);
|
|
31
|
+
padding: 0rem var(--circle-x-padding);
|
|
32
|
+
margin-inline-end: var(--title-spacing);
|
|
33
|
+
border-radius: 50%;
|
|
34
|
+
|
|
31
35
|
@media (min-width: $screen-md) {
|
|
32
36
|
min-width: var(--circle-desktop-size);
|
|
33
37
|
height: var(--circle-desktop-size);
|
|
34
38
|
}
|
|
35
|
-
padding: 0rem var(--circle-x-padding);
|
|
36
|
-
margin-inline-end: var(--title-spacing);
|
|
37
|
-
border-radius: 50%;
|
|
38
39
|
}
|
|
39
40
|
|
|
40
41
|
.step-header__title {
|
|
@@ -18,7 +18,7 @@ const StepHeader = ({
|
|
|
18
18
|
className,
|
|
19
19
|
priority,
|
|
20
20
|
}: StepHeaderProps) => {
|
|
21
|
-
const Tag = `h${priority || 2}` as keyof JSX.IntrinsicElements
|
|
21
|
+
const Tag = `h${priority || 2}` as keyof React.JSX.IntrinsicElements
|
|
22
22
|
|
|
23
23
|
return (
|
|
24
24
|
<Tag className={`step-header ${className || ""}`}>
|
package/src/text/Heading.tsx
CHANGED
|
@@ -21,7 +21,7 @@ const HeaderStyleMap = {
|
|
|
21
21
|
|
|
22
22
|
const Heading = (props: HeadingProps) => {
|
|
23
23
|
const priority = props.priority && props.priority >= 1 && props.priority <= 6 ? props.priority : 1
|
|
24
|
-
const Tag = `h${priority}` as keyof JSX.IntrinsicElements
|
|
24
|
+
const Tag = `h${priority}` as keyof React.JSX.IntrinsicElements
|
|
25
25
|
const classNames = []
|
|
26
26
|
if (props.styleType) classNames.push(HeaderStyleMap[props.styleType])
|
|
27
27
|
if (props.className) classNames.push(props.className)
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import React from "react";
|
|
2
|
-
import { render, cleanup } from "@testing-library/react";
|
|
3
|
-
import { ListingMap } from "../../src/page_components/listing/ListingMap";
|
|
4
|
-
import Archer from "../fixtures/archer.json";
|
|
5
|
-
afterEach(cleanup);
|
|
6
|
-
describe("<ListingMap>", function () {
|
|
7
|
-
it("renders without error", function () {
|
|
8
|
-
var listing = Object.assign({}, Archer);
|
|
9
|
-
var getByText = render(React.createElement(ListingMap, { address: listing.buildingAddress, listingName: listing.name })).getByText;
|
|
10
|
-
expect(getByText(listing.name)).toBeTruthy();
|
|
11
|
-
expect(getByText(listing.buildingAddress.street, { exact: false })).toBeTruthy();
|
|
12
|
-
});
|
|
13
|
-
});
|
|
14
|
-
//# sourceMappingURL=ListingMap.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ListingMap.test.js","sourceRoot":"","sources":["../../../__tests__/page_components/ListingMap.test.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAA;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,8CAA8C,CAAA;AACzE,OAAO,MAAM,MAAM,yBAAyB,CAAA;AAE5C,SAAS,CAAC,OAAO,CAAC,CAAA;AAElB,QAAQ,CAAC,cAAc,EAAE;IACvB,EAAE,CAAC,uBAAuB,EAAE;QAC1B,IAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAQ,CAAA;QACxC,IAAA,SAAS,GAAK,MAAM,CAC1B,oBAAC,UAAU,IAAC,OAAO,EAAE,OAAO,CAAC,eAAe,EAAE,WAAW,EAAE,OAAO,CAAC,IAAI,GAAI,CAC5E,UAFgB,CAEhB;QACD,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,EAAE,CAAA;QAC5C,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,eAAe,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,UAAU,EAAE,CAAA;IAClF,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import "mapbox-gl/dist/mapbox-gl.css";
|
|
2
|
-
import "./ListingMap.scss";
|
|
3
|
-
import { Address } from "../../helpers/MultiLineAddress";
|
|
4
|
-
export interface ListingMapProps {
|
|
5
|
-
address?: Address;
|
|
6
|
-
listingName?: string;
|
|
7
|
-
enableCustomPinPositioning?: boolean;
|
|
8
|
-
setCustomMapPositionChosen?: (customMapPosition: boolean) => void;
|
|
9
|
-
setLatLong?: (latLong: LatitudeLongitude) => void;
|
|
10
|
-
}
|
|
11
|
-
export interface LatitudeLongitude {
|
|
12
|
-
latitude: number;
|
|
13
|
-
longitude: number;
|
|
14
|
-
}
|
|
15
|
-
export interface Viewport {
|
|
16
|
-
width: string | number;
|
|
17
|
-
height: string | number;
|
|
18
|
-
latitude?: number;
|
|
19
|
-
longitude?: number;
|
|
20
|
-
zoom: number;
|
|
21
|
-
}
|
|
22
|
-
declare const ListingMap: (props: ListingMapProps) => JSX.Element | null;
|
|
23
|
-
export { ListingMap as default, ListingMap };
|
|
@@ -1,96 +0,0 @@
|
|
|
1
|
-
var __assign = (this && this.__assign) || function () {
|
|
2
|
-
__assign = Object.assign || function(t) {
|
|
3
|
-
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
4
|
-
s = arguments[i];
|
|
5
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
6
|
-
t[p] = s[p];
|
|
7
|
-
}
|
|
8
|
-
return t;
|
|
9
|
-
};
|
|
10
|
-
return __assign.apply(this, arguments);
|
|
11
|
-
};
|
|
12
|
-
import React, { useState, useCallback, useEffect } from "react";
|
|
13
|
-
import "mapbox-gl/dist/mapbox-gl.css";
|
|
14
|
-
import MapGL, { Marker } from "react-map-gl";
|
|
15
|
-
import "./ListingMap.scss";
|
|
16
|
-
import { MultiLineAddress } from "../../helpers/MultiLineAddress";
|
|
17
|
-
import { useIntersect } from "../../..";
|
|
18
|
-
import { Heading } from "../../text/Heading";
|
|
19
|
-
var isValidLatitude = function (latitude) {
|
|
20
|
-
return latitude >= -90 && latitude <= 90;
|
|
21
|
-
};
|
|
22
|
-
var isValidLongitude = function (longitude) {
|
|
23
|
-
return longitude >= -180 && longitude <= 180;
|
|
24
|
-
};
|
|
25
|
-
var ListingMap = function (props) {
|
|
26
|
-
var _a, _b, _c, _d;
|
|
27
|
-
// Lazy load the map component only when it will become visible on screen
|
|
28
|
-
var _e = useIntersect({
|
|
29
|
-
// `window` isn't set for SSR, so we'll use `global` instead—doesn't really
|
|
30
|
-
// matter because the map won't ever get rendered in SSR anyway
|
|
31
|
-
rootMargin: "".concat(global.innerHeight || 0, "px"),
|
|
32
|
-
}), setIntersectingElement = _e.setIntersectingElement, intersecting = _e.intersecting;
|
|
33
|
-
var _f = useState(false), hasIntersected = _f[0], setHasIntersected = _f[1];
|
|
34
|
-
if (intersecting && !hasIntersected)
|
|
35
|
-
setHasIntersected(true);
|
|
36
|
-
var _g = useState({
|
|
37
|
-
latitude: (_a = props.address) === null || _a === void 0 ? void 0 : _a.latitude,
|
|
38
|
-
longitude: (_b = props.address) === null || _b === void 0 ? void 0 : _b.longitude,
|
|
39
|
-
}), marker = _g[0], setMarker = _g[1];
|
|
40
|
-
var _h = useState({
|
|
41
|
-
latitude: marker.latitude,
|
|
42
|
-
longitude: marker.longitude,
|
|
43
|
-
width: "100%",
|
|
44
|
-
height: 400,
|
|
45
|
-
zoom: 13,
|
|
46
|
-
}), viewport = _h[0], setViewport = _h[1];
|
|
47
|
-
var onViewportChange = function (viewport) {
|
|
48
|
-
// width and height need to be set here to work properly with
|
|
49
|
-
// the responsive wrappers
|
|
50
|
-
var newViewport = __assign({}, viewport);
|
|
51
|
-
newViewport.width = "100%";
|
|
52
|
-
newViewport.height = 400;
|
|
53
|
-
setViewport(newViewport);
|
|
54
|
-
};
|
|
55
|
-
useEffect(function () {
|
|
56
|
-
var _a, _b, _c, _d;
|
|
57
|
-
onViewportChange(__assign(__assign({}, viewport), { latitude: (_a = props.address) === null || _a === void 0 ? void 0 : _a.latitude, longitude: (_b = props.address) === null || _b === void 0 ? void 0 : _b.longitude }));
|
|
58
|
-
setMarker({
|
|
59
|
-
latitude: (_c = props.address) === null || _c === void 0 ? void 0 : _c.latitude,
|
|
60
|
-
longitude: (_d = props.address) === null || _d === void 0 ? void 0 : _d.longitude,
|
|
61
|
-
});
|
|
62
|
-
}, [(_c = props.address) === null || _c === void 0 ? void 0 : _c.latitude, (_d = props.address) === null || _d === void 0 ? void 0 : _d.longitude, props.enableCustomPinPositioning]);
|
|
63
|
-
var onMarkerDragEnd = useCallback(function (event) {
|
|
64
|
-
if (props.setLatLong) {
|
|
65
|
-
props.setLatLong({
|
|
66
|
-
latitude: event.lngLat[1],
|
|
67
|
-
longitude: event.lngLat[0],
|
|
68
|
-
});
|
|
69
|
-
}
|
|
70
|
-
if (props.setCustomMapPositionChosen) {
|
|
71
|
-
props.setCustomMapPositionChosen(true);
|
|
72
|
-
}
|
|
73
|
-
setMarker({
|
|
74
|
-
latitude: event.lngLat[1],
|
|
75
|
-
longitude: event.lngLat[0],
|
|
76
|
-
});
|
|
77
|
-
}, []);
|
|
78
|
-
if (!props.address ||
|
|
79
|
-
!props.address.latitude ||
|
|
80
|
-
!props.address.longitude ||
|
|
81
|
-
!viewport.latitude ||
|
|
82
|
-
!viewport.longitude)
|
|
83
|
-
return null;
|
|
84
|
-
return (React.createElement("div", { className: "listing-map", ref: setIntersectingElement },
|
|
85
|
-
React.createElement("div", { className: "addressPopup" },
|
|
86
|
-
props.listingName && (React.createElement(Heading, { priority: 3, styleType: "capsWeighted" }, props.listingName)),
|
|
87
|
-
React.createElement(MultiLineAddress, { address: props.address })),
|
|
88
|
-
(process.env.mapBoxToken || process.env.MAPBOX_TOKEN) && hasIntersected && (React.createElement(MapGL, __assign({ mapboxApiAccessToken: process.env.mapBoxToken || process.env.MAPBOX_TOKEN, mapStyle: "mapbox://styles/mapbox/streets-v11", scrollZoom: false, onViewportChange: onViewportChange }, viewport), marker.latitude &&
|
|
89
|
-
marker.longitude &&
|
|
90
|
-
isValidLatitude(marker.latitude) &&
|
|
91
|
-
isValidLongitude(marker.longitude) && (React.createElement(React.Fragment, null, props.enableCustomPinPositioning ? (React.createElement(Marker, { latitude: marker.latitude, longitude: marker.longitude, offsetTop: -20, draggable: true, onDragEnd: onMarkerDragEnd },
|
|
92
|
-
React.createElement("div", { className: "pin" }))) : (React.createElement(Marker, { latitude: marker.latitude, longitude: marker.longitude, offsetTop: -20 },
|
|
93
|
-
React.createElement("div", { className: "pin" })))))))));
|
|
94
|
-
};
|
|
95
|
-
export { ListingMap as default, ListingMap };
|
|
96
|
-
//# sourceMappingURL=ListingMap.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ListingMap.js","sourceRoot":"","sources":["../../../../src/page_components/listing/ListingMap.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import * as React from "react";
|
|
2
|
-
import { ListingMap } from "./ListingMap";
|
|
3
|
-
import Archer from "../../../__tests__/fixtures/archer.json";
|
|
4
|
-
export default {
|
|
5
|
-
title: "Listing/Map",
|
|
6
|
-
};
|
|
7
|
-
var listing = Object.assign({}, Archer);
|
|
8
|
-
export var showMapWithPin = function () {
|
|
9
|
-
return React.createElement(ListingMap, { address: listing.buildingAddress, listingName: listing.name });
|
|
10
|
-
};
|
|
11
|
-
//# sourceMappingURL=ListingMap.stories.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ListingMap.stories.js","sourceRoot":"","sources":["../../../../src/page_components/listing/ListingMap.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,MAAM,MAAM,yCAAyC,CAAA;AAE5D,eAAe;IACb,KAAK,EAAE,aAAa;CACrB,CAAA;AAED,IAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAQ,CAAA;AAEhD,MAAM,CAAC,IAAM,cAAc,GAAG;IAC5B,OAAO,oBAAC,UAAU,IAAC,OAAO,EAAE,OAAO,CAAC,eAAe,EAAE,WAAW,EAAE,OAAO,CAAC,IAAI,GAAI,CAAA;AACpF,CAAC,CAAA"}
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
.listing-map {
|
|
2
|
-
min-height: 12rem;
|
|
3
|
-
}
|
|
4
|
-
|
|
5
|
-
.pin {
|
|
6
|
-
@apply absolute;
|
|
7
|
-
width: 30px;
|
|
8
|
-
height: 30px;
|
|
9
|
-
border-radius: 50% 50% 50% 0;
|
|
10
|
-
background: #89849b;
|
|
11
|
-
transform: rotate(-45deg);
|
|
12
|
-
left: 50%;
|
|
13
|
-
top: 50%;
|
|
14
|
-
margin: -20px 0 0 -20px;
|
|
15
|
-
animation-name: bounce;
|
|
16
|
-
animation-fill-mode: both;
|
|
17
|
-
animation-duration: 1s;
|
|
18
|
-
|
|
19
|
-
&:after {
|
|
20
|
-
@apply absolute;
|
|
21
|
-
@apply rounded-full;
|
|
22
|
-
content: "";
|
|
23
|
-
width: 14px;
|
|
24
|
-
height: 14px;
|
|
25
|
-
margin: 8px 0 0 8px;
|
|
26
|
-
background: #2f2f2f;
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
.addressPopup {
|
|
31
|
-
@apply bg-white;
|
|
32
|
-
@apply p-4;
|
|
33
|
-
@apply shadow-md;
|
|
34
|
-
@apply inline-block;
|
|
35
|
-
@apply float-left;
|
|
36
|
-
@apply relative;
|
|
37
|
-
left: 15px;
|
|
38
|
-
top: 15px;
|
|
39
|
-
z-index: 1;
|
|
40
|
-
}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import * as React from "react"
|
|
2
|
-
|
|
3
|
-
import { ListingMap } from "./ListingMap"
|
|
4
|
-
import Archer from "../../../__tests__/fixtures/archer.json"
|
|
5
|
-
|
|
6
|
-
export default {
|
|
7
|
-
title: "Listing/Map",
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
const listing = Object.assign({}, Archer) as any
|
|
11
|
-
|
|
12
|
-
export const showMapWithPin = () => {
|
|
13
|
-
return <ListingMap address={listing.buildingAddress} listingName={listing.name} />
|
|
14
|
-
}
|
|
@@ -1,153 +0,0 @@
|
|
|
1
|
-
import React, { useState, useCallback, useEffect } from "react"
|
|
2
|
-
import "mapbox-gl/dist/mapbox-gl.css"
|
|
3
|
-
import MapGL, { Marker } from "react-map-gl"
|
|
4
|
-
|
|
5
|
-
import "./ListingMap.scss"
|
|
6
|
-
import { MultiLineAddress, Address } from "../../helpers/MultiLineAddress"
|
|
7
|
-
import { useIntersect } from "../../.."
|
|
8
|
-
import { Heading } from "../../text/Heading"
|
|
9
|
-
|
|
10
|
-
export interface ListingMapProps {
|
|
11
|
-
address?: Address
|
|
12
|
-
listingName?: string
|
|
13
|
-
enableCustomPinPositioning?: boolean
|
|
14
|
-
setCustomMapPositionChosen?: (customMapPosition: boolean) => void
|
|
15
|
-
setLatLong?: (latLong: LatitudeLongitude) => void
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
export interface LatitudeLongitude {
|
|
19
|
-
latitude: number
|
|
20
|
-
longitude: number
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
export interface Viewport {
|
|
24
|
-
width: string | number
|
|
25
|
-
height: string | number
|
|
26
|
-
latitude?: number
|
|
27
|
-
longitude?: number
|
|
28
|
-
zoom: number
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
const isValidLatitude = (latitude: number) => {
|
|
32
|
-
return latitude >= -90 && latitude <= 90
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
const isValidLongitude = (longitude: number) => {
|
|
36
|
-
return longitude >= -180 && longitude <= 180
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
const ListingMap = (props: ListingMapProps) => {
|
|
40
|
-
// Lazy load the map component only when it will become visible on screen
|
|
41
|
-
const { setIntersectingElement, intersecting } = useIntersect({
|
|
42
|
-
// `window` isn't set for SSR, so we'll use `global` instead—doesn't really
|
|
43
|
-
// matter because the map won't ever get rendered in SSR anyway
|
|
44
|
-
rootMargin: `${global.innerHeight || 0}px`,
|
|
45
|
-
})
|
|
46
|
-
const [hasIntersected, setHasIntersected] = useState(false)
|
|
47
|
-
if (intersecting && !hasIntersected) setHasIntersected(true)
|
|
48
|
-
|
|
49
|
-
const [marker, setMarker] = useState({
|
|
50
|
-
latitude: props.address?.latitude,
|
|
51
|
-
longitude: props.address?.longitude,
|
|
52
|
-
})
|
|
53
|
-
|
|
54
|
-
const [viewport, setViewport] = useState({
|
|
55
|
-
latitude: marker.latitude,
|
|
56
|
-
longitude: marker.longitude,
|
|
57
|
-
width: "100%",
|
|
58
|
-
height: 400,
|
|
59
|
-
zoom: 13,
|
|
60
|
-
} as Viewport)
|
|
61
|
-
|
|
62
|
-
const onViewportChange = (viewport: Viewport) => {
|
|
63
|
-
// width and height need to be set here to work properly with
|
|
64
|
-
// the responsive wrappers
|
|
65
|
-
const newViewport = { ...viewport }
|
|
66
|
-
newViewport.width = "100%"
|
|
67
|
-
newViewport.height = 400
|
|
68
|
-
setViewport(newViewport)
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
useEffect(() => {
|
|
72
|
-
onViewportChange({
|
|
73
|
-
...viewport,
|
|
74
|
-
latitude: props.address?.latitude,
|
|
75
|
-
longitude: props.address?.longitude,
|
|
76
|
-
})
|
|
77
|
-
setMarker({
|
|
78
|
-
latitude: props.address?.latitude,
|
|
79
|
-
longitude: props.address?.longitude,
|
|
80
|
-
})
|
|
81
|
-
}, [props.address?.latitude, props.address?.longitude, props.enableCustomPinPositioning])
|
|
82
|
-
|
|
83
|
-
const onMarkerDragEnd = useCallback((event: any) => {
|
|
84
|
-
if (props.setLatLong) {
|
|
85
|
-
props.setLatLong({
|
|
86
|
-
latitude: event.lngLat[1],
|
|
87
|
-
longitude: event.lngLat[0],
|
|
88
|
-
})
|
|
89
|
-
}
|
|
90
|
-
if (props.setCustomMapPositionChosen) {
|
|
91
|
-
props.setCustomMapPositionChosen(true)
|
|
92
|
-
}
|
|
93
|
-
setMarker({
|
|
94
|
-
latitude: event.lngLat[1],
|
|
95
|
-
longitude: event.lngLat[0],
|
|
96
|
-
})
|
|
97
|
-
}, [])
|
|
98
|
-
|
|
99
|
-
if (
|
|
100
|
-
!props.address ||
|
|
101
|
-
!props.address.latitude ||
|
|
102
|
-
!props.address.longitude ||
|
|
103
|
-
!viewport.latitude ||
|
|
104
|
-
!viewport.longitude
|
|
105
|
-
)
|
|
106
|
-
return null
|
|
107
|
-
|
|
108
|
-
return (
|
|
109
|
-
<div className="listing-map" ref={setIntersectingElement}>
|
|
110
|
-
<div className="addressPopup">
|
|
111
|
-
{props.listingName && (
|
|
112
|
-
<Heading priority={3} styleType={"capsWeighted"}>
|
|
113
|
-
{props.listingName}
|
|
114
|
-
</Heading>
|
|
115
|
-
)}
|
|
116
|
-
<MultiLineAddress address={props.address} />
|
|
117
|
-
</div>
|
|
118
|
-
{(process.env.mapBoxToken || process.env.MAPBOX_TOKEN) && hasIntersected && (
|
|
119
|
-
<MapGL
|
|
120
|
-
mapboxApiAccessToken={process.env.mapBoxToken || process.env.MAPBOX_TOKEN}
|
|
121
|
-
mapStyle="mapbox://styles/mapbox/streets-v11"
|
|
122
|
-
scrollZoom={false}
|
|
123
|
-
onViewportChange={onViewportChange}
|
|
124
|
-
{...viewport}
|
|
125
|
-
>
|
|
126
|
-
{marker.latitude &&
|
|
127
|
-
marker.longitude &&
|
|
128
|
-
isValidLatitude(marker.latitude) &&
|
|
129
|
-
isValidLongitude(marker.longitude) && (
|
|
130
|
-
<>
|
|
131
|
-
{props.enableCustomPinPositioning ? (
|
|
132
|
-
<Marker
|
|
133
|
-
latitude={marker.latitude}
|
|
134
|
-
longitude={marker.longitude}
|
|
135
|
-
offsetTop={-20}
|
|
136
|
-
draggable={true}
|
|
137
|
-
onDragEnd={onMarkerDragEnd}
|
|
138
|
-
>
|
|
139
|
-
<div className="pin"></div>
|
|
140
|
-
</Marker>
|
|
141
|
-
) : (
|
|
142
|
-
<Marker latitude={marker.latitude} longitude={marker.longitude} offsetTop={-20}>
|
|
143
|
-
<div className="pin"></div>
|
|
144
|
-
</Marker>
|
|
145
|
-
)}
|
|
146
|
-
</>
|
|
147
|
-
)}
|
|
148
|
-
</MapGL>
|
|
149
|
-
)}
|
|
150
|
-
</div>
|
|
151
|
-
)
|
|
152
|
-
}
|
|
153
|
-
export { ListingMap as default, ListingMap }
|