@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.
Files changed (238) hide show
  1. package/bpk-animate-height/package.json +3 -3
  2. package/bpk-component-accordion/package.json +7 -7
  3. package/bpk-component-accordion/src/BpkAccordion.js +2 -1
  4. package/bpk-component-accordion/src/BpkAccordionItem.js +6 -5
  5. package/bpk-component-accordion/src/withAccordionItemState.js +2 -1
  6. package/bpk-component-accordion/src/withSingleItemAccordionState.js +2 -1
  7. package/bpk-component-aria-live/package.json +7 -7
  8. package/bpk-component-aria-live/src/BpkAriaLive.js +2 -1
  9. package/bpk-component-autosuggest/package.json +4 -4
  10. package/bpk-component-autosuggest/src/BpkAutosuggest.js +3 -2
  11. package/bpk-component-autosuggest/src/BpkAutosuggestSuggestion.js +2 -1
  12. package/bpk-component-badge/package.json +5 -5
  13. package/bpk-component-badge/src/BpkBadge.js +2 -1
  14. package/bpk-component-banner-alert/package.json +9 -9
  15. package/bpk-component-banner-alert/src/AnimateAndFade.js +3 -2
  16. package/bpk-component-banner-alert/src/BpkBannerAlertInner.js +8 -7
  17. package/bpk-component-banner-alert/src/withBannerAlertState.js +2 -1
  18. package/bpk-component-barchart/package.json +8 -8
  19. package/bpk-component-barchart/src/BpkBarchart.js +3 -2
  20. package/bpk-component-barchart/src/BpkBarchartBar.js +2 -1
  21. package/bpk-component-barchart/src/BpkChartAxis.js +2 -1
  22. package/bpk-component-barchart/src/BpkChartDataTable.js +2 -1
  23. package/bpk-component-barchart/src/BpkChartGridLines.js +2 -1
  24. package/bpk-component-barchart/src/RTLtransforms.js +1 -1
  25. package/bpk-component-blockquote/package.json +2 -2
  26. package/bpk-component-blockquote/src/BpkBlockquote.js +2 -1
  27. package/bpk-component-breadcrumb/package.json +5 -5
  28. package/bpk-component-breadcrumb/src/BpkBreadcrumb.js +2 -1
  29. package/bpk-component-breadcrumb/src/BpkBreadcrumbItem.js +6 -5
  30. package/bpk-component-breakpoint/package.json +3 -3
  31. package/bpk-component-button/BpkButtonLinkOnDark.js +21 -0
  32. package/bpk-component-button/BpkButtonSecondaryOnDark.js +21 -0
  33. package/bpk-component-button/README.md +32 -19
  34. package/bpk-component-button/index.js +7 -0
  35. package/bpk-component-button/package.json +3 -3
  36. package/bpk-component-button/src/BpkButton.js +16 -0
  37. package/bpk-component-button/src/BpkButtonLinkOnDark.js +59 -0
  38. package/bpk-component-button/src/BpkButtonLinkOnDark.module.scss +23 -0
  39. package/bpk-component-button/src/BpkButtonSecondaryOnDark.js +48 -0
  40. package/bpk-component-button/src/BpkButtonSecondaryOnDark.module.scss +23 -0
  41. package/bpk-component-button/src/themeAttributes.js +9 -0
  42. package/bpk-component-button/themeAttributes.js +3 -0
  43. package/bpk-component-calendar/package.json +9 -9
  44. package/bpk-component-calendar/src/BpkCalendarContainer.js +2 -1
  45. package/bpk-component-calendar/src/BpkCalendarDate.js +2 -1
  46. package/bpk-component-calendar/src/BpkCalendarGrid.js +2 -1
  47. package/bpk-component-calendar/src/BpkCalendarGridHeader.js +2 -1
  48. package/bpk-component-calendar/src/BpkCalendarGridTransition.js +2 -1
  49. package/bpk-component-calendar/src/BpkCalendarNav.js +6 -5
  50. package/bpk-component-calendar/src/Week.js +2 -1
  51. package/bpk-component-calendar/src/composeCalendar.js +2 -1
  52. package/bpk-component-card/package.json +4 -4
  53. package/bpk-component-card/src/BpkCard.js +2 -1
  54. package/bpk-component-checkbox/package.json +5 -5
  55. package/bpk-component-checkbox/src/BpkCheckbox.js +2 -1
  56. package/bpk-component-chip/package.json +5 -5
  57. package/bpk-component-chip/src/BpkDismissibleChip.js +2 -1
  58. package/bpk-component-chip/src/BpkSelectableChip.js +3 -2
  59. package/bpk-component-close-button/package.json +4 -4
  60. package/bpk-component-close-button/src/BpkCloseButton.js +3 -2
  61. package/bpk-component-code/package.json +2 -2
  62. package/bpk-component-code/src/BpkCode.js +2 -1
  63. package/bpk-component-code/src/BpkCodeBlock.js +2 -1
  64. package/bpk-component-content-container/package.json +2 -2
  65. package/bpk-component-content-container/src/BpkContentContainer.js +2 -1
  66. package/bpk-component-datatable/package.json +4 -4
  67. package/bpk-component-datatable/src/BpkDataTable.js +2 -1
  68. package/bpk-component-datatable/src/BpkDataTableColumn.js +2 -1
  69. package/bpk-component-datatable/src/bpkHeaderRenderer.js +5 -4
  70. package/bpk-component-datepicker/index.js +1 -1
  71. package/bpk-component-datepicker/package.json +9 -9
  72. package/bpk-component-datepicker/src/BpkDatepicker.js +7 -6
  73. package/bpk-component-datepicker/src/themeAttributes.js +3 -3
  74. package/bpk-component-description-list/package.json +2 -2
  75. package/bpk-component-description-list/src/ComponentFactory.js +2 -1
  76. package/bpk-component-dialog/package.json +8 -8
  77. package/bpk-component-dialog/src/BpkDialog.js +3 -2
  78. package/bpk-component-dialog/src/BpkDialogInner.js +4 -3
  79. package/bpk-component-drawer/package.json +9 -9
  80. package/bpk-component-drawer/src/BpkDrawer.js +3 -2
  81. package/bpk-component-drawer/src/BpkDrawerContent.js +4 -3
  82. package/bpk-component-drawer/src/themeAttributes.js +1 -1
  83. package/bpk-component-fieldset/package.json +12 -12
  84. package/bpk-component-fieldset/src/BpkFieldset.js +4 -3
  85. package/bpk-component-flare/package.json +4 -4
  86. package/bpk-component-flare/src/BpkContentBubble.js +2 -1
  87. package/bpk-component-flare/src/BpkFlareBar.js +2 -1
  88. package/bpk-component-form-validation/package.json +10 -10
  89. package/bpk-component-form-validation/src/BpkFormValidation.js +5 -4
  90. package/bpk-component-graphic-promotion/README.md +2 -4
  91. package/bpk-component-graphic-promotion/index.js +1 -2
  92. package/bpk-component-graphic-promotion/package.json +5 -5
  93. package/bpk-component-graphic-promotion/src/BpkGraphicPromo.js +11 -17
  94. package/bpk-component-graphic-promotion/src/BpkGraphicPromo.module.scss +1 -6
  95. package/bpk-component-grid/package.json +2 -2
  96. package/bpk-component-grid/src/BpkGridColumn.js +2 -1
  97. package/bpk-component-grid/src/BpkGridContainer.js +2 -1
  98. package/bpk-component-grid/src/BpkGridRow.js +2 -1
  99. package/bpk-component-grid-toggle/package.json +3 -3
  100. package/bpk-component-grid-toggle/src/BpkGridToggle.js +3 -2
  101. package/bpk-component-horizontal-nav/package.json +6 -6
  102. package/bpk-component-horizontal-nav/src/BpkHorizontalNav.js +3 -2
  103. package/bpk-component-horizontal-nav/src/BpkHorizontalNavItem.js +2 -1
  104. package/bpk-component-icon/package.json +7 -7
  105. package/bpk-component-icon/src/classNameModifierHOCFactory.js +2 -1
  106. package/bpk-component-icon/src/withAlignment.js +2 -1
  107. package/bpk-component-icon/src/withDescription.js +2 -1
  108. package/bpk-component-icon/src/withRtlSupport.js +1 -1
  109. package/bpk-component-image/package.json +6 -6
  110. package/bpk-component-image/src/BpkBackgroundImage.js +3 -2
  111. package/bpk-component-image/src/BpkImage.js +3 -2
  112. package/bpk-component-image/src/withLazyLoading.js +2 -1
  113. package/bpk-component-image/src/withLoadingBehavior.js +2 -1
  114. package/bpk-component-infinite-scroll/package.json +6 -6
  115. package/bpk-component-infinite-scroll/src/withInfiniteScroll.js +2 -1
  116. package/bpk-component-input/package.json +6 -6
  117. package/bpk-component-input/src/BpkClearButton.js +4 -3
  118. package/bpk-component-input/src/BpkInput.js +2 -1
  119. package/bpk-component-input/src/withOpenEvents.js +2 -1
  120. package/bpk-component-label/package.json +2 -2
  121. package/bpk-component-label/src/BpkLabel.js +2 -1
  122. package/bpk-component-link/package.json +4 -4
  123. package/bpk-component-link/src/BpkButtonLink.js +2 -1
  124. package/bpk-component-link/src/BpkLink.js +2 -1
  125. package/bpk-component-list/package.json +2 -2
  126. package/bpk-component-list/src/BpkList.js +2 -1
  127. package/bpk-component-list/src/BpkList.module.scss +6 -0
  128. package/bpk-component-list/src/BpkListItem.js +2 -1
  129. package/bpk-component-loading-button/package.json +6 -6
  130. package/bpk-component-loading-button/src/BpkLoadingButton.js +19 -11
  131. package/bpk-component-loading-button/src/BpkLoadingButton.module.scss +10 -0
  132. package/bpk-component-map/README.md +13 -13
  133. package/bpk-component-map/package.json +9 -9
  134. package/bpk-component-map/src/BpkIconMarker.js +2 -1
  135. package/bpk-component-map/src/BpkIconMarkerBackground.js +2 -1
  136. package/bpk-component-map/src/BpkMap.js +65 -31
  137. package/bpk-component-map/src/BpkMap.module.scss +21 -0
  138. package/bpk-component-map/src/BpkOverlayView.js +1 -1
  139. package/bpk-component-map/src/BpkPriceMarker.js +3 -2
  140. package/bpk-component-map/src/DefaultLoadingElement.js +3 -2
  141. package/bpk-component-map/src/withGoogleMapsScript.js +41 -5
  142. package/bpk-component-mobile-scroll-container/package.json +3 -3
  143. package/bpk-component-mobile-scroll-container/src/BpkMobileScrollContainer.js +3 -2
  144. package/bpk-component-modal/package.json +9 -9
  145. package/bpk-component-modal/src/BpkModal.js +3 -2
  146. package/bpk-component-modal/src/BpkModalInner.js +5 -4
  147. package/bpk-component-modal/src/themeAttributes.js +1 -1
  148. package/bpk-component-navigation-bar/package.json +8 -8
  149. package/bpk-component-navigation-bar/src/BpkNavigationBar.js +4 -3
  150. package/bpk-component-navigation-bar/src/BpkNavigationBar.module.scss +2 -0
  151. package/bpk-component-navigation-bar/src/BpkNavigationBarButtonLink.js +3 -2
  152. package/bpk-component-navigation-bar/src/BpkNavigationBarIconButton.js +3 -2
  153. package/bpk-component-navigation-stack/package.json +7 -7
  154. package/bpk-component-navigation-stack/src/BpkNavigationStack.js +2 -1
  155. package/bpk-component-nudger/README.md +2 -2
  156. package/bpk-component-nudger/package.json +7 -7
  157. package/bpk-component-nudger/src/BpkConfigurableNudger.js +27 -31
  158. package/bpk-component-nudger/src/BpkNudger.js +2 -1
  159. package/bpk-component-nudger/src/BpkNudger.module.scss +1 -1
  160. package/bpk-component-nudger/src/common-types.js +1 -1
  161. package/bpk-component-nudger/src/themeAttributes.js +1 -1
  162. package/bpk-component-overlay/package.json +4 -4
  163. package/bpk-component-overlay/src/BpkOverlay.js +2 -1
  164. package/bpk-component-pagination/package.json +4 -4
  165. package/bpk-component-pagination/src/BpkPagination.js +2 -1
  166. package/bpk-component-pagination/src/BpkPaginationList.js +2 -1
  167. package/bpk-component-pagination/src/BpkPaginationNudger.js +5 -4
  168. package/bpk-component-pagination/src/BpkPaginationPage.js +3 -2
  169. package/bpk-component-pagination/src/BpkPaginationPage.module.scss +2 -0
  170. package/bpk-component-pagination/src/themeAttributes.js +1 -1
  171. package/bpk-component-panel/package.json +2 -2
  172. package/bpk-component-panel/src/BpkPanel.js +2 -1
  173. package/bpk-component-phone-input/package.json +9 -9
  174. package/bpk-component-phone-input/src/BpkPhoneInput.js +5 -4
  175. package/bpk-component-popover/package.json +8 -8
  176. package/bpk-component-popover/src/BpkPopover.js +5 -4
  177. package/bpk-component-popover/src/BpkPopoverPortal.js +2 -1
  178. package/bpk-component-popover/src/themeAttributes.js +1 -1
  179. package/bpk-component-progress/package.json +5 -5
  180. package/bpk-component-progress/src/BpkProgress.js +2 -1
  181. package/bpk-component-radio/package.json +4 -4
  182. package/bpk-component-radio/src/BpkRadio.js +2 -1
  183. package/bpk-component-rating/package.json +4 -4
  184. package/bpk-component-rating/src/BpkRating.js +3 -2
  185. package/bpk-component-rtl-toggle/package.json +2 -2
  186. package/bpk-component-rtl-toggle/src/BpkRtlToggle.js +2 -1
  187. package/bpk-component-rtl-toggle/src/updateOnDirectionChange.js +2 -1
  188. package/bpk-component-scrollable-calendar/index.js +1 -1
  189. package/bpk-component-scrollable-calendar/package.json +6 -6
  190. package/bpk-component-scrollable-calendar/src/BpkScrollableCalendar.js +1 -1
  191. package/bpk-component-scrollable-calendar/src/BpkScrollableCalendarDate.js +2 -1
  192. package/bpk-component-scrollable-calendar/src/BpkScrollableCalendarGrid.js +4 -3
  193. package/bpk-component-scrollable-calendar/src/BpkScrollableCalendarGridList.js +6 -2
  194. package/bpk-component-scrollable-calendar/src/utils.js +1 -1
  195. package/bpk-component-section-list/package.json +6 -6
  196. package/bpk-component-section-list/src/BpkSectionListItem.js +4 -3
  197. package/bpk-component-section-list/src/BpkSectionListSection.js +3 -2
  198. package/bpk-component-select/package.json +3 -3
  199. package/bpk-component-select/src/BpkSelect.js +2 -1
  200. package/bpk-component-skip-link/package.json +2 -2
  201. package/bpk-component-skip-link/src/BpkSkipLink.js +2 -1
  202. package/bpk-component-slider/package.json +4 -4
  203. package/bpk-component-slider/src/BpkSlider.js +2 -1
  204. package/bpk-component-spinner/package.json +3 -3
  205. package/bpk-component-spinner/src/BpkExtraLargeSpinner.js +2 -1
  206. package/bpk-component-spinner/src/BpkLargeSpinner.js +2 -1
  207. package/bpk-component-spinner/src/BpkSpinner.js +2 -1
  208. package/bpk-component-star-rating/package.json +5 -5
  209. package/bpk-component-star-rating/src/BpkInteractiveStar.js +2 -1
  210. package/bpk-component-star-rating/src/BpkInteractiveStarRating.js +2 -1
  211. package/bpk-component-star-rating/src/BpkStar.js +9 -8
  212. package/bpk-component-star-rating/src/BpkStarRating.js +2 -1
  213. package/bpk-component-star-rating/src/withInteractiveStarRatingState.js +2 -1
  214. package/bpk-component-switch/package.json +2 -2
  215. package/bpk-component-switch/src/BpkSwitch.js +2 -1
  216. package/bpk-component-table/package.json +2 -2
  217. package/bpk-component-table/src/BpkTable.js +2 -1
  218. package/bpk-component-table/src/BpkTableCell.js +2 -1
  219. package/bpk-component-table/src/BpkTableHeadCell.js +2 -1
  220. package/bpk-component-text/README.md +1 -1
  221. package/bpk-component-text/package.json +2 -2
  222. package/bpk-component-text/src/BpkText.js +3 -1
  223. package/bpk-component-text/src/BpkText.module.scss +4 -0
  224. package/bpk-component-textarea/package.json +4 -4
  225. package/bpk-component-textarea/src/BpkTextarea.js +2 -1
  226. package/bpk-component-theme-toggle/package.json +5 -5
  227. package/bpk-component-theme-toggle/src/BpkThemeToggle.js +4 -3
  228. package/bpk-component-theme-toggle/src/updateOnThemeChange.js +2 -1
  229. package/bpk-component-ticket/package.json +4 -4
  230. package/bpk-component-ticket/src/BpkTicket.js +2 -1
  231. package/bpk-component-tooltip/package.json +4 -4
  232. package/bpk-component-tooltip/src/BpkTooltip.js +2 -1
  233. package/bpk-component-tooltip/src/BpkTooltipPortal.js +2 -1
  234. package/bpk-scrim-utils/package.json +2 -2
  235. package/bpk-scrim-utils/src/BpkScrim.js +2 -1
  236. package/bpk-scrim-utils/src/withScrim.js +2 -1
  237. package/bpk-theming/package.json +2 -2
  238. package/package.json +8 -6
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bpk-component-list",
3
- "version": "3.1.4",
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": "^28.1.0",
17
+ "bpk-mixins": "^30.0.0",
18
18
  "bpk-react-utils": "^4.1.1",
19
19
  "prop-types": "^15.7.2"
20
20
  },
@@ -20,7 +20,8 @@
20
20
 
21
21
  import PropTypes from 'prop-types';
22
22
  import React, { type Node } from 'react';
23
- import { cssModules } from 'bpk-react-utils';
23
+
24
+ import { cssModules } from '../../bpk-react-utils';
24
25
 
25
26
  import STYLES from './BpkList.module.scss';
26
27
 
@@ -27,5 +27,11 @@
27
27
 
28
28
  & & {
29
29
  @include bpk-list--nested;
30
+
31
+ /* stylelint-disable selector-max-compound-selectors */
32
+
33
+ > li {
34
+ margin-bottom: 0;
35
+ }
30
36
  }
31
37
  }
@@ -20,7 +20,8 @@
20
20
 
21
21
  import PropTypes from 'prop-types';
22
22
  import React, { type Node } from 'react';
23
- import { cssModules } from 'bpk-react-utils';
23
+
24
+ import { cssModules } from '../../bpk-react-utils';
24
25
 
25
26
  import STYLES from './BpkList.module.scss';
26
27
 
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bpk-component-loading-button",
3
- "version": "6.0.0",
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.1.0",
18
- "bpk-component-icon": "^9.2.5",
19
- "bpk-component-spinner": "^5.1.4",
20
- "bpk-mixins": "^28.1.0",
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.3"
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
- import BpkButton from 'bpk-component-button';
24
- import { BpkSpinner, BpkLargeSpinner } from 'bpk-component-spinner';
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
- link && 'bpk-loading-button__icon--link',
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 && !iconOnly && (
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 elsewhere and not use this HOC, as it downloads the script every time it's used.
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
- googleMapURL={MAP_URL}
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 | Required | Default Value |
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
- | containerElement | node | false | <div style={{height: '100%'}} /> |
135
+ | className | string | false | null |
137
136
  | greedyGestureHandling | bool | false | false |
138
- | mapElement | node | false | <div style={{height: '100%'}} /> |
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 | PropType | Required | Default Value |
154
- | -------------- | -------- | -------- | ------------- |
155
- | googleMapURL | string | true | - |
156
- | loadingElement | node | false | BpkSpinner |
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": "5.2.5",
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
- "bpk-component-spinner": "^5.1.4",
18
- "bpk-mixins": "^28.1.0",
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.0 || ^17.0.0"
24
+ "react": "^16.8.3 || ^17.0.0"
25
25
  },
26
26
  "devDependencies": {
27
- "bpk-component-icon": "^9.2.5",
28
- "bpk-component-text": "^6.1.5",
29
- "bpk-storybook-utils": "^1.1.3",
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
- import { cssModules } from 'bpk-react-utils';
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';
@@ -19,7 +19,8 @@
19
19
  /* @flow strict */
20
20
 
21
21
  import React from 'react';
22
- import { cssModules } from 'bpk-react-utils';
22
+
23
+ import { cssModules } from '../../bpk-react-utils';
23
24
 
24
25
  import STYLES from './BpkIconMarkerBackground.module.scss';
25
26
 
@@ -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 { withGoogleMap, GoogleMap } from 'react-google-maps';
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 = withGoogleMap((props: Props) => {
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
- ref={(map: MapRef) => {
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
- : null
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: null,
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
- import { cssModules } from 'bpk-react-utils';
24
- import BpkText, { TEXT_STYLES } from 'bpk-component-text/src/BpkText';
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
- import { BpkLargeSpinner, SPINNER_TYPES } from 'bpk-component-spinner';
22
- import { cssModules } from 'bpk-react-utils';
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 { withScriptjs } from 'react-google-maps';
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 ScriptedComponent = withScriptjs(Component);
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
- const WithGoogleMapsScript = ({ ...rest }: { [string]: any }) => (
30
- <ScriptedComponent {...rest} />
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.4",
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": "^28.1.0",
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": "^6.1.0"
26
+ "@skyscanner/bpk-foundations-web": "^7.0.0"
27
27
  }
28
28
  }