@skyscanner/backpack-web 0.1.0 → 0.4.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/bpk-animate-height/package.json +3 -3
- package/bpk-component-accordion/package.json +7 -7
- package/bpk-component-accordion/src/BpkAccordion.js +2 -1
- package/bpk-component-accordion/src/BpkAccordionItem.js +6 -5
- package/bpk-component-accordion/src/withAccordionItemState.js +2 -1
- package/bpk-component-accordion/src/withSingleItemAccordionState.js +2 -1
- package/bpk-component-aria-live/package.json +7 -7
- package/bpk-component-aria-live/src/BpkAriaLive.js +2 -1
- package/bpk-component-autosuggest/package.json +4 -4
- package/bpk-component-autosuggest/src/BpkAutosuggest.js +3 -2
- package/bpk-component-autosuggest/src/BpkAutosuggestSuggestion.js +2 -1
- package/bpk-component-badge/package.json +5 -5
- package/bpk-component-badge/src/BpkBadge.js +2 -1
- package/bpk-component-banner-alert/package.json +9 -9
- package/bpk-component-banner-alert/src/AnimateAndFade.js +3 -2
- package/bpk-component-banner-alert/src/BpkBannerAlertInner.js +8 -7
- package/bpk-component-banner-alert/src/withBannerAlertState.js +2 -1
- package/bpk-component-barchart/package.json +8 -8
- package/bpk-component-barchart/src/BpkBarchart.js +3 -2
- package/bpk-component-barchart/src/BpkBarchartBar.js +2 -1
- package/bpk-component-barchart/src/BpkChartAxis.js +2 -1
- package/bpk-component-barchart/src/BpkChartDataTable.js +2 -1
- package/bpk-component-barchart/src/BpkChartGridLines.js +2 -1
- package/bpk-component-barchart/src/RTLtransforms.js +1 -1
- package/bpk-component-blockquote/package.json +2 -2
- package/bpk-component-blockquote/src/BpkBlockquote.js +2 -1
- package/bpk-component-breadcrumb/package.json +5 -5
- package/bpk-component-breadcrumb/src/BpkBreadcrumb.js +2 -1
- package/bpk-component-breadcrumb/src/BpkBreadcrumbItem.js +6 -5
- package/bpk-component-breakpoint/package.json +3 -3
- package/bpk-component-button/BpkButtonLinkOnDark.js +21 -0
- package/bpk-component-button/BpkButtonSecondaryOnDark.js +21 -0
- package/bpk-component-button/README.md +32 -19
- package/bpk-component-button/index.js +7 -0
- package/bpk-component-button/package.json +3 -3
- package/bpk-component-button/src/BpkButton.js +16 -0
- package/bpk-component-button/src/BpkButtonLinkOnDark.js +59 -0
- package/bpk-component-button/src/BpkButtonLinkOnDark.module.scss +23 -0
- package/bpk-component-button/src/BpkButtonSecondaryOnDark.js +48 -0
- package/bpk-component-button/src/BpkButtonSecondaryOnDark.module.scss +23 -0
- package/bpk-component-button/src/themeAttributes.js +9 -0
- package/bpk-component-button/themeAttributes.js +3 -0
- package/bpk-component-calendar/package.json +9 -9
- package/bpk-component-calendar/src/BpkCalendarContainer.js +2 -1
- package/bpk-component-calendar/src/BpkCalendarDate.js +2 -1
- package/bpk-component-calendar/src/BpkCalendarGrid.js +2 -1
- package/bpk-component-calendar/src/BpkCalendarGridHeader.js +2 -1
- package/bpk-component-calendar/src/BpkCalendarGridTransition.js +2 -1
- package/bpk-component-calendar/src/BpkCalendarNav.js +6 -5
- package/bpk-component-calendar/src/Week.js +2 -1
- package/bpk-component-calendar/src/composeCalendar.js +2 -1
- package/bpk-component-card/package.json +4 -4
- package/bpk-component-card/src/BpkCard.js +2 -1
- package/bpk-component-checkbox/package.json +5 -5
- package/bpk-component-checkbox/src/BpkCheckbox.js +2 -1
- package/bpk-component-chip/package.json +5 -5
- package/bpk-component-chip/src/BpkDismissibleChip.js +2 -1
- package/bpk-component-chip/src/BpkSelectableChip.js +3 -2
- package/bpk-component-close-button/package.json +4 -4
- package/bpk-component-close-button/src/BpkCloseButton.js +3 -2
- package/bpk-component-code/package.json +2 -2
- package/bpk-component-code/src/BpkCode.js +2 -1
- package/bpk-component-code/src/BpkCodeBlock.js +2 -1
- package/bpk-component-content-container/package.json +2 -2
- package/bpk-component-content-container/src/BpkContentContainer.js +2 -1
- package/bpk-component-datatable/package.json +4 -4
- package/bpk-component-datatable/src/BpkDataTable.js +2 -1
- package/bpk-component-datatable/src/BpkDataTableColumn.js +2 -1
- package/bpk-component-datatable/src/bpkHeaderRenderer.js +5 -4
- package/bpk-component-datepicker/index.js +1 -1
- package/bpk-component-datepicker/package.json +9 -9
- package/bpk-component-datepicker/src/BpkDatepicker.js +7 -6
- package/bpk-component-datepicker/src/themeAttributes.js +3 -3
- package/bpk-component-description-list/package.json +2 -2
- package/bpk-component-description-list/src/ComponentFactory.js +2 -1
- package/bpk-component-dialog/package.json +8 -8
- package/bpk-component-dialog/src/BpkDialog.js +3 -2
- package/bpk-component-dialog/src/BpkDialogInner.js +4 -3
- package/bpk-component-drawer/package.json +9 -9
- package/bpk-component-drawer/src/BpkDrawer.js +3 -2
- package/bpk-component-drawer/src/BpkDrawerContent.js +4 -3
- package/bpk-component-drawer/src/themeAttributes.js +1 -1
- package/bpk-component-fieldset/package.json +12 -12
- package/bpk-component-fieldset/src/BpkFieldset.js +4 -3
- package/bpk-component-flare/package.json +4 -4
- package/bpk-component-flare/src/BpkContentBubble.js +2 -1
- package/bpk-component-flare/src/BpkFlareBar.js +2 -1
- package/bpk-component-form-validation/package.json +10 -10
- package/bpk-component-form-validation/src/BpkFormValidation.js +5 -4
- package/bpk-component-graphic-promotion/README.md +2 -4
- package/bpk-component-graphic-promotion/index.js +1 -2
- package/bpk-component-graphic-promotion/package.json +5 -5
- package/bpk-component-graphic-promotion/src/BpkGraphicPromo.js +11 -17
- package/bpk-component-graphic-promotion/src/BpkGraphicPromo.module.scss +1 -6
- package/bpk-component-grid/package.json +2 -2
- package/bpk-component-grid/src/BpkGridColumn.js +2 -1
- package/bpk-component-grid/src/BpkGridContainer.js +2 -1
- package/bpk-component-grid/src/BpkGridRow.js +2 -1
- package/bpk-component-grid-toggle/package.json +3 -3
- package/bpk-component-grid-toggle/src/BpkGridToggle.js +3 -2
- package/bpk-component-horizontal-nav/package.json +6 -6
- package/bpk-component-horizontal-nav/src/BpkHorizontalNav.js +3 -2
- package/bpk-component-horizontal-nav/src/BpkHorizontalNavItem.js +2 -1
- package/bpk-component-icon/package.json +7 -7
- package/bpk-component-icon/src/classNameModifierHOCFactory.js +2 -1
- package/bpk-component-icon/src/withAlignment.js +2 -1
- package/bpk-component-icon/src/withDescription.js +2 -1
- package/bpk-component-icon/src/withRtlSupport.js +1 -1
- package/bpk-component-image/package.json +6 -6
- package/bpk-component-image/src/BpkBackgroundImage.js +3 -2
- package/bpk-component-image/src/BpkImage.js +3 -2
- package/bpk-component-image/src/withLazyLoading.js +2 -1
- package/bpk-component-image/src/withLoadingBehavior.js +2 -1
- package/bpk-component-infinite-scroll/package.json +6 -6
- package/bpk-component-infinite-scroll/src/withInfiniteScroll.js +2 -1
- package/bpk-component-input/package.json +6 -6
- package/bpk-component-input/src/BpkClearButton.js +4 -3
- package/bpk-component-input/src/BpkInput.js +2 -1
- package/bpk-component-input/src/withOpenEvents.js +2 -1
- package/bpk-component-label/package.json +2 -2
- package/bpk-component-label/src/BpkLabel.js +2 -1
- package/bpk-component-link/package.json +4 -4
- package/bpk-component-link/src/BpkButtonLink.js +2 -1
- package/bpk-component-link/src/BpkLink.js +2 -1
- package/bpk-component-list/package.json +2 -2
- package/bpk-component-list/src/BpkList.js +2 -1
- package/bpk-component-list/src/BpkList.module.scss +6 -0
- package/bpk-component-list/src/BpkListItem.js +2 -1
- package/bpk-component-loading-button/package.json +6 -6
- package/bpk-component-loading-button/src/BpkLoadingButton.js +19 -11
- package/bpk-component-loading-button/src/BpkLoadingButton.module.scss +10 -0
- package/bpk-component-map/README.md +13 -13
- package/bpk-component-map/package.json +9 -9
- package/bpk-component-map/src/BpkIconMarker.js +2 -1
- package/bpk-component-map/src/BpkIconMarkerBackground.js +2 -1
- package/bpk-component-map/src/BpkMap.js +65 -31
- package/bpk-component-map/src/BpkMap.module.scss +21 -0
- package/bpk-component-map/src/BpkOverlayView.js +1 -1
- package/bpk-component-map/src/BpkPriceMarker.js +3 -2
- package/bpk-component-map/src/DefaultLoadingElement.js +3 -2
- package/bpk-component-map/src/withGoogleMapsScript.js +41 -5
- package/bpk-component-mobile-scroll-container/package.json +3 -3
- package/bpk-component-mobile-scroll-container/src/BpkMobileScrollContainer.js +3 -2
- package/bpk-component-modal/package.json +9 -9
- package/bpk-component-modal/src/BpkModal.js +3 -2
- package/bpk-component-modal/src/BpkModalInner.js +5 -4
- package/bpk-component-modal/src/themeAttributes.js +1 -1
- package/bpk-component-navigation-bar/package.json +8 -8
- package/bpk-component-navigation-bar/src/BpkNavigationBar.js +4 -3
- package/bpk-component-navigation-bar/src/BpkNavigationBar.module.scss +2 -0
- package/bpk-component-navigation-bar/src/BpkNavigationBarButtonLink.js +3 -2
- package/bpk-component-navigation-bar/src/BpkNavigationBarIconButton.js +3 -2
- package/bpk-component-navigation-stack/package.json +7 -7
- package/bpk-component-navigation-stack/src/BpkNavigationStack.js +2 -1
- package/bpk-component-nudger/README.md +2 -2
- package/bpk-component-nudger/package.json +7 -7
- package/bpk-component-nudger/src/BpkConfigurableNudger.js +27 -31
- package/bpk-component-nudger/src/BpkNudger.js +2 -1
- package/bpk-component-nudger/src/BpkNudger.module.scss +1 -1
- package/bpk-component-nudger/src/common-types.js +1 -1
- package/bpk-component-nudger/src/themeAttributes.js +1 -1
- package/bpk-component-overlay/package.json +4 -4
- package/bpk-component-overlay/src/BpkOverlay.js +2 -1
- package/bpk-component-pagination/package.json +4 -4
- package/bpk-component-pagination/src/BpkPagination.js +2 -1
- package/bpk-component-pagination/src/BpkPaginationList.js +2 -1
- package/bpk-component-pagination/src/BpkPaginationNudger.js +5 -4
- package/bpk-component-pagination/src/BpkPaginationPage.js +3 -2
- package/bpk-component-pagination/src/BpkPaginationPage.module.scss +2 -0
- package/bpk-component-pagination/src/themeAttributes.js +1 -1
- package/bpk-component-panel/package.json +2 -2
- package/bpk-component-panel/src/BpkPanel.js +2 -1
- package/bpk-component-phone-input/package.json +9 -9
- package/bpk-component-phone-input/src/BpkPhoneInput.js +5 -4
- package/bpk-component-popover/package.json +8 -8
- package/bpk-component-popover/src/BpkPopover.js +5 -4
- package/bpk-component-popover/src/BpkPopoverPortal.js +2 -1
- package/bpk-component-popover/src/themeAttributes.js +1 -1
- package/bpk-component-progress/package.json +5 -5
- package/bpk-component-progress/src/BpkProgress.js +2 -1
- package/bpk-component-radio/package.json +4 -4
- package/bpk-component-radio/src/BpkRadio.js +2 -1
- package/bpk-component-rating/package.json +4 -4
- package/bpk-component-rating/src/BpkRating.js +3 -2
- package/bpk-component-rtl-toggle/package.json +2 -2
- package/bpk-component-rtl-toggle/src/BpkRtlToggle.js +2 -1
- package/bpk-component-rtl-toggle/src/updateOnDirectionChange.js +2 -1
- package/bpk-component-scrollable-calendar/index.js +1 -1
- package/bpk-component-scrollable-calendar/package.json +6 -6
- package/bpk-component-scrollable-calendar/src/BpkScrollableCalendar.js +1 -1
- package/bpk-component-scrollable-calendar/src/BpkScrollableCalendarDate.js +2 -1
- package/bpk-component-scrollable-calendar/src/BpkScrollableCalendarGrid.js +4 -3
- package/bpk-component-scrollable-calendar/src/BpkScrollableCalendarGridList.js +6 -2
- package/bpk-component-scrollable-calendar/src/utils.js +1 -1
- package/bpk-component-section-list/package.json +6 -6
- package/bpk-component-section-list/src/BpkSectionListItem.js +4 -3
- package/bpk-component-section-list/src/BpkSectionListSection.js +3 -2
- package/bpk-component-select/package.json +3 -3
- package/bpk-component-select/src/BpkSelect.js +2 -1
- package/bpk-component-skip-link/package.json +2 -2
- package/bpk-component-skip-link/src/BpkSkipLink.js +2 -1
- package/bpk-component-slider/package.json +4 -4
- package/bpk-component-slider/src/BpkSlider.js +2 -1
- package/bpk-component-spinner/package.json +3 -3
- package/bpk-component-spinner/src/BpkExtraLargeSpinner.js +2 -1
- package/bpk-component-spinner/src/BpkLargeSpinner.js +2 -1
- package/bpk-component-spinner/src/BpkSpinner.js +2 -1
- package/bpk-component-star-rating/package.json +5 -5
- package/bpk-component-star-rating/src/BpkInteractiveStar.js +2 -1
- package/bpk-component-star-rating/src/BpkInteractiveStarRating.js +2 -1
- package/bpk-component-star-rating/src/BpkStar.js +9 -8
- package/bpk-component-star-rating/src/BpkStarRating.js +2 -1
- package/bpk-component-star-rating/src/withInteractiveStarRatingState.js +2 -1
- package/bpk-component-switch/package.json +2 -2
- package/bpk-component-switch/src/BpkSwitch.js +2 -1
- package/bpk-component-table/package.json +2 -2
- package/bpk-component-table/src/BpkTable.js +2 -1
- package/bpk-component-table/src/BpkTableCell.js +2 -1
- package/bpk-component-table/src/BpkTableHeadCell.js +2 -1
- package/bpk-component-text/README.md +1 -1
- package/bpk-component-text/package.json +2 -2
- package/bpk-component-text/src/BpkText.js +3 -1
- package/bpk-component-text/src/BpkText.module.scss +4 -0
- package/bpk-component-textarea/package.json +4 -4
- package/bpk-component-textarea/src/BpkTextarea.js +2 -1
- package/bpk-component-theme-toggle/package.json +5 -5
- package/bpk-component-theme-toggle/src/BpkThemeToggle.js +4 -3
- package/bpk-component-theme-toggle/src/updateOnThemeChange.js +2 -1
- package/bpk-component-ticket/package.json +4 -4
- package/bpk-component-ticket/src/BpkTicket.js +2 -1
- package/bpk-component-tooltip/package.json +4 -4
- package/bpk-component-tooltip/src/BpkTooltip.js +2 -1
- package/bpk-component-tooltip/src/BpkTooltipPortal.js +2 -1
- package/bpk-scrim-utils/package.json +2 -2
- package/bpk-scrim-utils/src/BpkScrim.js +2 -1
- package/bpk-scrim-utils/src/withScrim.js +2 -1
- package/bpk-theming/package.json +2 -2
- package/package.json +8 -6
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "bpk-component-list",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "4.0.0",
|
|
4
4
|
"description": "Backpack list component.",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"repository": {
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
},
|
|
15
15
|
"gitHead": "5c156b97cb0ba5e75851d3c763334578714c895e",
|
|
16
16
|
"dependencies": {
|
|
17
|
-
"bpk-mixins": "^
|
|
17
|
+
"bpk-mixins": "^30.0.0",
|
|
18
18
|
"bpk-react-utils": "^4.1.1",
|
|
19
19
|
"prop-types": "^15.7.2"
|
|
20
20
|
},
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "bpk-component-loading-button",
|
|
3
|
-
"version": "6.
|
|
3
|
+
"version": "6.1.2",
|
|
4
4
|
"description": "Backpack loading button component.",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"repository": {
|
|
@@ -14,15 +14,15 @@
|
|
|
14
14
|
},
|
|
15
15
|
"gitHead": "f9f94f86d7cfc75e43bc6ad5eb01b23e62a89cc8",
|
|
16
16
|
"dependencies": {
|
|
17
|
-
"bpk-component-button": "^6.
|
|
18
|
-
"bpk-component-icon": "^9.2.
|
|
19
|
-
"bpk-component-spinner": "^5.1.
|
|
20
|
-
"bpk-mixins": "^
|
|
17
|
+
"bpk-component-button": "^6.2.2",
|
|
18
|
+
"bpk-component-icon": "^9.2.8",
|
|
19
|
+
"bpk-component-spinner": "^5.1.7",
|
|
20
|
+
"bpk-mixins": "^30.0.0",
|
|
21
21
|
"bpk-react-utils": "^4.1.1",
|
|
22
22
|
"prop-types": "^15.7.2"
|
|
23
23
|
},
|
|
24
24
|
"devDependencies": {
|
|
25
|
-
"bpk-storybook-utils": "^1.1.
|
|
25
|
+
"bpk-storybook-utils": "^1.1.6"
|
|
26
26
|
},
|
|
27
27
|
"peerDependencies": {
|
|
28
28
|
"react": "^16.3.0 || ^17.0.0"
|
|
@@ -20,16 +20,17 @@
|
|
|
20
20
|
|
|
21
21
|
import PropTypes from 'prop-types';
|
|
22
22
|
import React, { type Node, type Element } from 'react';
|
|
23
|
-
|
|
24
|
-
import
|
|
23
|
+
|
|
24
|
+
import BpkButton from '../../bpk-component-button';
|
|
25
|
+
import { BpkSpinner, BpkLargeSpinner } from '../../bpk-component-spinner';
|
|
25
26
|
import {
|
|
26
27
|
withButtonAlignment,
|
|
27
28
|
withLargeButtonAlignment,
|
|
28
29
|
withRtlSupport,
|
|
29
|
-
} from 'bpk-component-icon';
|
|
30
|
-
import ArrowIconSm from 'bpk-component-icon/sm/long-arrow-right';
|
|
31
|
-
import ArrowIconLg from 'bpk-component-icon/lg/long-arrow-right';
|
|
32
|
-
import { cssModules } from 'bpk-react-utils';
|
|
30
|
+
} from '../../bpk-component-icon';
|
|
31
|
+
import ArrowIconSm from '../../bpk-component-icon/sm/long-arrow-right';
|
|
32
|
+
import ArrowIconLg from '../../bpk-component-icon/lg/long-arrow-right';
|
|
33
|
+
import { cssModules } from '../../bpk-react-utils';
|
|
33
34
|
|
|
34
35
|
import STYLES from './BpkLoadingButton.module.scss';
|
|
35
36
|
|
|
@@ -73,6 +74,7 @@ type LoadingProps = {
|
|
|
73
74
|
destructive: boolean,
|
|
74
75
|
large: boolean,
|
|
75
76
|
link: boolean,
|
|
77
|
+
linkOnDark: boolean,
|
|
76
78
|
loading: boolean,
|
|
77
79
|
iconOnly: boolean,
|
|
78
80
|
icon: ?Element<any>,
|
|
@@ -93,6 +95,7 @@ const BpkLoadingButton = (props: LoadingProps) => {
|
|
|
93
95
|
iconPosition,
|
|
94
96
|
large,
|
|
95
97
|
link,
|
|
98
|
+
linkOnDark,
|
|
96
99
|
loading,
|
|
97
100
|
...rest
|
|
98
101
|
} = props;
|
|
@@ -111,14 +114,18 @@ const BpkLoadingButton = (props: LoadingProps) => {
|
|
|
111
114
|
|
|
112
115
|
const classNames = getClassName(
|
|
113
116
|
loading && 'bpk-loading-button',
|
|
114
|
-
loading && link && 'bpk-loading-button--link',
|
|
117
|
+
loading && (link || linkOnDark) && 'bpk-loading-button--link',
|
|
115
118
|
className,
|
|
116
119
|
);
|
|
117
120
|
|
|
118
121
|
const iconClassNames = getClassName(
|
|
119
122
|
'bpk-loading-button__icon',
|
|
120
123
|
large && 'bpk-loading-button__icon--large',
|
|
121
|
-
|
|
124
|
+
iconOnly &&
|
|
125
|
+
(large
|
|
126
|
+
? 'bpk-loading-button__icon--large-icon-only'
|
|
127
|
+
: 'bpk-loading-button__icon--icon-only'),
|
|
128
|
+
(link || linkOnDark) && 'bpk-loading-button__icon--link',
|
|
122
129
|
);
|
|
123
130
|
|
|
124
131
|
return (
|
|
@@ -129,11 +136,10 @@ const BpkLoadingButton = (props: LoadingProps) => {
|
|
|
129
136
|
large={large}
|
|
130
137
|
className={classNames}
|
|
131
138
|
link={link}
|
|
139
|
+
linkOnDark={linkOnDark}
|
|
132
140
|
{...rest}
|
|
133
141
|
>
|
|
134
|
-
{loading &&
|
|
135
|
-
<span className={iconClassNames}>{loadingIcon}</span>
|
|
136
|
-
)}
|
|
142
|
+
{loading && <span className={iconClassNames}>{loadingIcon}</span>}
|
|
137
143
|
{child0}
|
|
138
144
|
{child1}
|
|
139
145
|
{child2}
|
|
@@ -148,6 +154,7 @@ BpkLoadingButton.propTypes = {
|
|
|
148
154
|
secondary: PropTypes.bool,
|
|
149
155
|
destructive: PropTypes.bool,
|
|
150
156
|
link: PropTypes.bool,
|
|
157
|
+
linkOnDark: PropTypes.bool,
|
|
151
158
|
loading: PropTypes.bool,
|
|
152
159
|
iconOnly: PropTypes.bool,
|
|
153
160
|
icon: PropTypes.element,
|
|
@@ -166,6 +173,7 @@ BpkLoadingButton.defaultProps = {
|
|
|
166
173
|
destructive: false,
|
|
167
174
|
large: false,
|
|
168
175
|
link: false,
|
|
176
|
+
linkOnDark: false,
|
|
169
177
|
loading: false,
|
|
170
178
|
iconOnly: false,
|
|
171
179
|
icon: null,
|
|
@@ -23,6 +23,8 @@ $bpk-spacing-v2: true;
|
|
|
23
23
|
.bpk-loading-button {
|
|
24
24
|
$button-padding-x: bpk-spacing-base() * 2;
|
|
25
25
|
$button-padding-y: bpk-spacing-lg() / 2;
|
|
26
|
+
$button-icon-only-padding-x: $bpk-one-pixel-rem * 9 * 2;
|
|
27
|
+
$button-large-icon-only-padding-x: $bpk-one-pixel-rem * 12 * 2;
|
|
26
28
|
$button-large-padding-y: bpk-spacing-lg();
|
|
27
29
|
|
|
28
30
|
position: relative;
|
|
@@ -47,6 +49,14 @@ $bpk-spacing-v2: true;
|
|
|
47
49
|
height: calc(100% - #{$button-large-padding-y});
|
|
48
50
|
}
|
|
49
51
|
|
|
52
|
+
&--icon-only {
|
|
53
|
+
width: calc(100% - #{$button-icon-only-padding-x});
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
&--large-icon-only {
|
|
57
|
+
width: calc(100% - #{$button-large-icon-only-padding-x});
|
|
58
|
+
}
|
|
59
|
+
|
|
50
60
|
&--link {
|
|
51
61
|
width: 100%;
|
|
52
62
|
background: unset;
|
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
> Backpack map component.
|
|
4
4
|
|
|
5
|
+
Requires **React 16.8+**
|
|
6
|
+
|
|
5
7
|
## Installation
|
|
6
8
|
|
|
7
9
|
```sh
|
|
@@ -100,20 +102,17 @@ export default () => (
|
|
|
100
102
|
|
|
101
103
|
`withGoogleMapsScript` is a HOC that loads the Google Maps JavaScript, then loads the map. This is useful for when you don't already have the Google Maps JavaScript loaded.
|
|
102
104
|
|
|
103
|
-
If you intend to include multiple maps on one page, it's better to load the Google Maps JavaScript
|
|
105
|
+
If you intend to include multiple maps on one page, it's better to load the Google Maps JavaScript in this HOC, as it ensures that script will not be re-downloaded every time it's used.
|
|
104
106
|
|
|
105
107
|
```js
|
|
106
108
|
import React from 'react';
|
|
107
109
|
import BpkMap, { withGoogleMapsScript } from 'bpk-component-map';
|
|
108
110
|
|
|
109
|
-
const MAP_URL =
|
|
110
|
-
'https://maps.googleapis.com/maps/api/js?v=3.exp&libraries=geometry,drawing,places';
|
|
111
|
-
|
|
112
111
|
const BpkMapWithScript = withGoogleMapsScript(BpkMap);
|
|
113
112
|
|
|
114
113
|
export default () => (
|
|
115
114
|
<BpkMapWithScript
|
|
116
|
-
|
|
115
|
+
googleMapsApiKey='YOUR_API_KEY'
|
|
117
116
|
zoom={15}
|
|
118
117
|
center={{
|
|
119
118
|
latitude: 27.9881,
|
|
@@ -129,13 +128,13 @@ export default () => (
|
|
|
129
128
|
|
|
130
129
|
### BpkMap
|
|
131
130
|
|
|
132
|
-
| Property | PropType
|
|
131
|
+
| Property | PropType | Required | Default Value |
|
|
133
132
|
| --------------------- | ----------------------------------------------------------------- | -------- | -------------------------------- |
|
|
134
133
|
| bounds | shape({north: number, east: number, south: number, west: number}) | false | null |
|
|
135
134
|
| center | shape({latitude: number, longitude: number}) | false | null |
|
|
136
|
-
|
|
|
135
|
+
| className | string | false | null |
|
|
137
136
|
| greedyGestureHandling | bool | false | false |
|
|
138
|
-
|
|
|
137
|
+
| mapOptionStyles | array | false | null |
|
|
139
138
|
| mapRef | func | false | null |
|
|
140
139
|
| onRegionChange | func | false | null |
|
|
141
140
|
| onZoom | func | false | null |
|
|
@@ -150,10 +149,12 @@ Note: One of `bounds` and `center` must be provided.
|
|
|
150
149
|
|
|
151
150
|
When using `withGoogleMapsScript`, some additional props are available:
|
|
152
151
|
|
|
153
|
-
| Property
|
|
154
|
-
|
|
|
155
|
-
|
|
|
156
|
-
|
|
|
152
|
+
| Property | PropType | Required | Default Value |
|
|
153
|
+
| ------------------------- | -------- | -------- | --------------------------------- |
|
|
154
|
+
| googleMapsApiKey | string | true | - |
|
|
155
|
+
| libraries | array | false | ['geometry', 'drawing', 'places'] |
|
|
156
|
+
| loadingElement | node | false | BpkSpinner |
|
|
157
|
+
| preventGoogleFontsLoading | bool | false | false |
|
|
157
158
|
|
|
158
159
|
### BpkIconMarker
|
|
159
160
|
|
|
@@ -171,7 +172,6 @@ When using `withGoogleMapsScript`, some additional props are available:
|
|
|
171
172
|
|
|
172
173
|
`BpkIconMarker` only supports small icons from the Backpack icon set. Large icons should not be used with `BpkIconMarker`.
|
|
173
174
|
|
|
174
|
-
|
|
175
175
|
### BpkPriceMarker
|
|
176
176
|
|
|
177
177
|
| Property | PropType | Required | Default Value |
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "bpk-component-map",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "6.0.2",
|
|
4
4
|
"description": "Backpack map component.",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"repository": {
|
|
@@ -14,19 +14,19 @@
|
|
|
14
14
|
},
|
|
15
15
|
"gitHead": "f9f94f86d7cfc75e43bc6ad5eb01b23e62a89cc8",
|
|
16
16
|
"dependencies": {
|
|
17
|
-
"
|
|
18
|
-
"bpk-
|
|
17
|
+
"@react-google-maps/api": "^2.8.1",
|
|
18
|
+
"bpk-component-spinner": "^5.1.7",
|
|
19
|
+
"bpk-mixins": "^30.0.0",
|
|
19
20
|
"bpk-react-utils": "^4.1.1",
|
|
20
|
-
"prop-types": "^15.5.8"
|
|
21
|
-
"react-google-maps": "^9.4.5"
|
|
21
|
+
"prop-types": "^15.5.8"
|
|
22
22
|
},
|
|
23
23
|
"peerDependencies": {
|
|
24
|
-
"react": "^16.3
|
|
24
|
+
"react": "^16.8.3 || ^17.0.0"
|
|
25
25
|
},
|
|
26
26
|
"devDependencies": {
|
|
27
|
-
"bpk-component-icon": "^9.2.
|
|
28
|
-
"bpk-component-text": "^
|
|
29
|
-
"bpk-storybook-utils": "^1.1.
|
|
27
|
+
"bpk-component-icon": "^9.2.8",
|
|
28
|
+
"bpk-component-text": "^7.0.1",
|
|
29
|
+
"bpk-storybook-utils": "^1.1.6",
|
|
30
30
|
"prop-types": "^15.5.8"
|
|
31
31
|
}
|
|
32
32
|
}
|
|
@@ -20,7 +20,8 @@
|
|
|
20
20
|
|
|
21
21
|
import React, { type Node } from 'react';
|
|
22
22
|
import PropTypes from 'prop-types';
|
|
23
|
-
|
|
23
|
+
|
|
24
|
+
import { cssModules } from '../../bpk-react-utils';
|
|
24
25
|
|
|
25
26
|
import BpkIconMarkerBackground from './BpkIconMarkerBackground';
|
|
26
27
|
import { LatLongPropType, type LatLong } from './common-types';
|
|
@@ -18,11 +18,16 @@
|
|
|
18
18
|
|
|
19
19
|
/* @flow strict */
|
|
20
20
|
|
|
21
|
-
import React, { type Node } from 'react';
|
|
21
|
+
import React, { type Node, useCallback, useRef } from 'react';
|
|
22
22
|
import PropTypes from 'prop-types';
|
|
23
|
-
import {
|
|
23
|
+
import { GoogleMap } from '@react-google-maps/api';
|
|
24
|
+
|
|
25
|
+
import { cssModules } from '../../bpk-react-utils';
|
|
24
26
|
|
|
25
27
|
import { LatLongPropType, type LatLong } from './common-types';
|
|
28
|
+
import STYLES from './BpkMap.module.scss';
|
|
29
|
+
|
|
30
|
+
const getClassName = cssModules(STYLES);
|
|
26
31
|
|
|
27
32
|
export type Bounds = {
|
|
28
33
|
south: number,
|
|
@@ -38,6 +43,14 @@ export type MapRef = ?{
|
|
|
38
43
|
fitBounds: (Bounds) => void,
|
|
39
44
|
};
|
|
40
45
|
|
|
46
|
+
type MapOptionStyle = {
|
|
47
|
+
featureType: ?string,
|
|
48
|
+
elementType: ?string,
|
|
49
|
+
stylers: Array<{
|
|
50
|
+
[string]: string,
|
|
51
|
+
}>,
|
|
52
|
+
};
|
|
53
|
+
|
|
41
54
|
type Props = {
|
|
42
55
|
greedyGestureHandling: boolean,
|
|
43
56
|
panEnabled: boolean,
|
|
@@ -46,20 +59,22 @@ type Props = {
|
|
|
46
59
|
bounds: ?Bounds,
|
|
47
60
|
center: ?LatLong,
|
|
48
61
|
children: ?Node,
|
|
49
|
-
containerElement: ?Node,
|
|
50
|
-
mapElement: ?Node,
|
|
51
62
|
mapRef: ?(MapRef) => mixed,
|
|
52
63
|
onRegionChange: ?(Bounds, LatLong) => mixed,
|
|
53
64
|
onZoom: ?(number) => mixed,
|
|
54
65
|
onTilesLoaded: ?() => void,
|
|
66
|
+
className: ?string,
|
|
67
|
+
mapOptionStyles: ?Array<MapOptionStyle>,
|
|
55
68
|
};
|
|
56
69
|
|
|
57
|
-
const BpkMap =
|
|
70
|
+
const BpkMap = (props: Props) => {
|
|
58
71
|
const {
|
|
59
72
|
bounds,
|
|
60
73
|
center,
|
|
61
74
|
children,
|
|
75
|
+
className,
|
|
62
76
|
greedyGestureHandling,
|
|
77
|
+
mapOptionStyles,
|
|
63
78
|
mapRef,
|
|
64
79
|
onRegionChange,
|
|
65
80
|
onTilesLoaded,
|
|
@@ -68,7 +83,6 @@ const BpkMap = withGoogleMap((props: Props) => {
|
|
|
68
83
|
showControls,
|
|
69
84
|
zoom,
|
|
70
85
|
} = props;
|
|
71
|
-
let ref: MapRef = null;
|
|
72
86
|
|
|
73
87
|
if (!bounds && !center) {
|
|
74
88
|
throw new Error('BpkMap: Provide either `bounds` or `center` props.');
|
|
@@ -82,29 +96,37 @@ const BpkMap = withGoogleMap((props: Props) => {
|
|
|
82
96
|
gestureHandling = 'greedy';
|
|
83
97
|
}
|
|
84
98
|
|
|
99
|
+
const ref = useRef(null);
|
|
100
|
+
const mapContainerClassName = getClassName('bpk-map', className);
|
|
101
|
+
|
|
102
|
+
const onLoad = useCallback(
|
|
103
|
+
(map) => {
|
|
104
|
+
ref.current = map;
|
|
105
|
+
if (map && bounds) {
|
|
106
|
+
map.fitBounds({
|
|
107
|
+
south: bounds.south,
|
|
108
|
+
west: bounds.west,
|
|
109
|
+
north: bounds.north,
|
|
110
|
+
east: bounds.east,
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
if (mapRef) {
|
|
114
|
+
mapRef(map);
|
|
115
|
+
}
|
|
116
|
+
},
|
|
117
|
+
[bounds, mapRef],
|
|
118
|
+
);
|
|
119
|
+
|
|
85
120
|
return (
|
|
86
121
|
<GoogleMap
|
|
87
|
-
|
|
88
|
-
ref = map;
|
|
89
|
-
if (map && bounds) {
|
|
90
|
-
map.fitBounds({
|
|
91
|
-
south: bounds.south,
|
|
92
|
-
west: bounds.west,
|
|
93
|
-
north: bounds.north,
|
|
94
|
-
east: bounds.east,
|
|
95
|
-
});
|
|
96
|
-
}
|
|
97
|
-
if (mapRef) {
|
|
98
|
-
mapRef(map);
|
|
99
|
-
}
|
|
100
|
-
}}
|
|
122
|
+
onLoad={onLoad}
|
|
101
123
|
center={
|
|
102
124
|
center
|
|
103
125
|
? {
|
|
104
126
|
lat: center.latitude,
|
|
105
127
|
lng: center.longitude,
|
|
106
128
|
}
|
|
107
|
-
:
|
|
129
|
+
: undefined
|
|
108
130
|
}
|
|
109
131
|
zoom={zoom}
|
|
110
132
|
options={{
|
|
@@ -114,15 +136,18 @@ const BpkMap = withGoogleMap((props: Props) => {
|
|
|
114
136
|
streetViewControl: false,
|
|
115
137
|
fullscreenControl: false,
|
|
116
138
|
rotateControl: false,
|
|
139
|
+
clickableIcons: false,
|
|
140
|
+
// https://developers.google.com/maps/documentation/javascript/reference/map#MapTypeStyle
|
|
141
|
+
styles: mapOptionStyles,
|
|
117
142
|
}}
|
|
118
143
|
onDragEnd={() => {
|
|
119
|
-
if (ref && onRegionChange) {
|
|
120
|
-
onRegionChange(ref.getBounds(), ref.getCenter());
|
|
144
|
+
if (ref && ref.current && onRegionChange) {
|
|
145
|
+
onRegionChange(ref.current.getBounds(), ref.current.getCenter());
|
|
121
146
|
}
|
|
122
147
|
}}
|
|
123
148
|
onZoomChanged={() => {
|
|
124
|
-
if (ref && onZoom) {
|
|
125
|
-
onZoom(ref.getZoom());
|
|
149
|
+
if (ref && ref.current && onZoom) {
|
|
150
|
+
onZoom(ref.current.getZoom());
|
|
126
151
|
}
|
|
127
152
|
}}
|
|
128
153
|
onTilesLoaded={() => {
|
|
@@ -130,11 +155,12 @@ const BpkMap = withGoogleMap((props: Props) => {
|
|
|
130
155
|
onTilesLoaded();
|
|
131
156
|
}
|
|
132
157
|
}}
|
|
158
|
+
mapContainerClassName={mapContainerClassName}
|
|
133
159
|
>
|
|
134
160
|
{children}
|
|
135
161
|
</GoogleMap>
|
|
136
162
|
);
|
|
137
|
-
}
|
|
163
|
+
};
|
|
138
164
|
|
|
139
165
|
BpkMap.propTypes = {
|
|
140
166
|
bounds: PropTypes.shape({
|
|
@@ -145,30 +171,38 @@ BpkMap.propTypes = {
|
|
|
145
171
|
}),
|
|
146
172
|
center: LatLongPropType,
|
|
147
173
|
children: PropTypes.node,
|
|
148
|
-
containerElement: PropTypes.node,
|
|
149
174
|
greedyGestureHandling: PropTypes.bool,
|
|
150
|
-
mapElement: PropTypes.node,
|
|
151
175
|
mapRef: PropTypes.func,
|
|
176
|
+
className: PropTypes.string,
|
|
152
177
|
onRegionChange: PropTypes.func,
|
|
153
178
|
onZoom: PropTypes.func,
|
|
154
179
|
panEnabled: PropTypes.bool,
|
|
155
180
|
showControls: PropTypes.bool,
|
|
181
|
+
onTilesLoaded: PropTypes.func,
|
|
156
182
|
zoom: PropTypes.number,
|
|
183
|
+
mapOptionStyles: PropTypes.arrayOf(
|
|
184
|
+
PropTypes.shape({
|
|
185
|
+
featureType: PropTypes.string,
|
|
186
|
+
elementType: PropTypes.string,
|
|
187
|
+
stylers: PropTypes.arrayOf(PropTypes.object).isRequired,
|
|
188
|
+
}),
|
|
189
|
+
),
|
|
157
190
|
};
|
|
158
191
|
|
|
159
192
|
BpkMap.defaultProps = {
|
|
160
193
|
bounds: null,
|
|
161
|
-
center:
|
|
194
|
+
center: undefined,
|
|
162
195
|
children: null,
|
|
163
|
-
containerElement: <div style={{ height: '100%' }} />,
|
|
164
196
|
greedyGestureHandling: false,
|
|
165
|
-
mapElement: <div style={{ height: '100%' }} />,
|
|
166
197
|
mapRef: null,
|
|
167
198
|
onRegionChange: null,
|
|
168
199
|
onZoom: null,
|
|
200
|
+
onTilesLoaded: null,
|
|
169
201
|
panEnabled: true,
|
|
170
202
|
showControls: true,
|
|
171
203
|
zoom: 15,
|
|
204
|
+
className: null,
|
|
205
|
+
mapOptionStyles: null,
|
|
172
206
|
};
|
|
173
207
|
|
|
174
208
|
export default BpkMap;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Backpack - Skyscanner's Design System
|
|
3
|
+
*
|
|
4
|
+
* Copyright 2016 Skyscanner Ltd
|
|
5
|
+
*
|
|
6
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
7
|
+
* you may not use this file except in compliance with the License.
|
|
8
|
+
* You may obtain a copy of the License at
|
|
9
|
+
*
|
|
10
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
11
|
+
*
|
|
12
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
13
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
14
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
15
|
+
* See the License for the specific language governing permissions and
|
|
16
|
+
* limitations under the License.
|
|
17
|
+
*/
|
|
18
|
+
|
|
19
|
+
.bpk-map {
|
|
20
|
+
height: 100%;
|
|
21
|
+
}
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
|
|
21
21
|
import React, { type Node } from 'react';
|
|
22
22
|
import PropTypes from 'prop-types';
|
|
23
|
-
import { OverlayView } from 'react-google-maps';
|
|
23
|
+
import { OverlayView } from '@react-google-maps/api';
|
|
24
24
|
|
|
25
25
|
import { LatLongPropType, type LatLong } from './common-types';
|
|
26
26
|
|
|
@@ -20,8 +20,9 @@
|
|
|
20
20
|
|
|
21
21
|
import React from 'react';
|
|
22
22
|
import PropTypes from 'prop-types';
|
|
23
|
-
|
|
24
|
-
import
|
|
23
|
+
|
|
24
|
+
import { cssModules } from '../../bpk-react-utils';
|
|
25
|
+
import BpkText, { TEXT_STYLES } from '../../bpk-component-text/src/BpkText';
|
|
25
26
|
|
|
26
27
|
import { LatLongPropType, type LatLong } from './common-types';
|
|
27
28
|
import BpkBasicMapMarker from './BpkBasicMapMarker';
|
|
@@ -18,8 +18,9 @@
|
|
|
18
18
|
/* @flow strict */
|
|
19
19
|
|
|
20
20
|
import React from 'react';
|
|
21
|
-
|
|
22
|
-
import {
|
|
21
|
+
|
|
22
|
+
import { BpkLargeSpinner, SPINNER_TYPES } from '../../bpk-component-spinner';
|
|
23
|
+
import { cssModules } from '../../bpk-react-utils';
|
|
23
24
|
|
|
24
25
|
import STYLES from './DefaultLoadingElement.module.scss';
|
|
25
26
|
|
|
@@ -19,23 +19,59 @@
|
|
|
19
19
|
|
|
20
20
|
import React, { type ComponentType } from 'react';
|
|
21
21
|
import PropTypes from 'prop-types';
|
|
22
|
-
import {
|
|
22
|
+
import { useJsApiLoader } from '@react-google-maps/api';
|
|
23
23
|
|
|
24
24
|
import DefaultLoadingElement from './DefaultLoadingElement';
|
|
25
25
|
|
|
26
|
+
export const LibraryShapeType = PropTypes.arrayOf(
|
|
27
|
+
PropTypes.oneOf([
|
|
28
|
+
'drawing',
|
|
29
|
+
'geometry',
|
|
30
|
+
'localContext',
|
|
31
|
+
'places',
|
|
32
|
+
'visualization',
|
|
33
|
+
]),
|
|
34
|
+
);
|
|
35
|
+
|
|
26
36
|
function withGoogleMapsScript(Component: ComponentType<any>) {
|
|
27
|
-
const
|
|
37
|
+
const WithGoogleMapsScript = ({
|
|
38
|
+
googleMapsApiKey,
|
|
39
|
+
libraries,
|
|
40
|
+
loadingElement,
|
|
41
|
+
preventGoogleFontsLoading,
|
|
42
|
+
...rest
|
|
43
|
+
}: {
|
|
44
|
+
[string]: any,
|
|
45
|
+
}) => {
|
|
46
|
+
const { isLoaded, loadError } = useJsApiLoader({
|
|
47
|
+
googleMapsApiKey,
|
|
48
|
+
libraries,
|
|
49
|
+
preventGoogleFontsLoading,
|
|
50
|
+
version: '3.46',
|
|
51
|
+
});
|
|
52
|
+
|
|
53
|
+
if (!isLoaded) {
|
|
54
|
+
return loadingElement;
|
|
55
|
+
}
|
|
28
56
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
57
|
+
if (loadError) {
|
|
58
|
+
throw new Error('Google maps cannot be loaded!');
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
return <Component {...rest} />;
|
|
62
|
+
};
|
|
32
63
|
|
|
33
64
|
WithGoogleMapsScript.propTypes = {
|
|
34
65
|
loadingElement: PropTypes.node,
|
|
66
|
+
googleMapsApiKey: PropTypes.string.isRequired,
|
|
67
|
+
libraries: LibraryShapeType,
|
|
68
|
+
preventGoogleFontsLoading: PropTypes.bool,
|
|
35
69
|
};
|
|
36
70
|
|
|
37
71
|
WithGoogleMapsScript.defaultProps = {
|
|
38
72
|
loadingElement: <DefaultLoadingElement />,
|
|
73
|
+
preventGoogleFontsLoading: false,
|
|
74
|
+
libraries: ['geometry', 'drawing', 'places'],
|
|
39
75
|
};
|
|
40
76
|
|
|
41
77
|
return WithGoogleMapsScript;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "bpk-component-mobile-scroll-container",
|
|
3
|
-
"version": "3.1.
|
|
3
|
+
"version": "3.1.7",
|
|
4
4
|
"description": "Backpack mobile scroll container component.",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"repository": {
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
},
|
|
15
15
|
"gitHead": "5c156b97cb0ba5e75851d3c763334578714c895e",
|
|
16
16
|
"dependencies": {
|
|
17
|
-
"bpk-mixins": "^
|
|
17
|
+
"bpk-mixins": "^30.0.0",
|
|
18
18
|
"bpk-react-utils": "^4.1.1",
|
|
19
19
|
"lodash.debounce": "^4.0.8",
|
|
20
20
|
"prop-types": "^15.7.2"
|
|
@@ -23,6 +23,6 @@
|
|
|
23
23
|
"react": "^16.3.0 || ^17.0.0"
|
|
24
24
|
},
|
|
25
25
|
"devDependencies": {
|
|
26
|
-
"@skyscanner/bpk-foundations-web": "^
|
|
26
|
+
"@skyscanner/bpk-foundations-web": "^7.0.0"
|
|
27
27
|
}
|
|
28
28
|
}
|