@skyscanner/backpack-web 9.2.0-beta.2 → 9.3.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 (234) 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-breadcrumb/src/BpkBreadcrumbItem.module.scss +2 -2
  31. package/bpk-component-breakpoint/package.json +3 -3
  32. package/bpk-component-button/package.json +3 -3
  33. package/bpk-component-calendar/package.json +9 -9
  34. package/bpk-component-calendar/src/BpkCalendarContainer.js +2 -1
  35. package/bpk-component-calendar/src/BpkCalendarDate.js +2 -1
  36. package/bpk-component-calendar/src/BpkCalendarGrid.js +5 -3
  37. package/bpk-component-calendar/src/BpkCalendarGridHeader.js +2 -1
  38. package/bpk-component-calendar/src/BpkCalendarGridTransition.js +2 -1
  39. package/bpk-component-calendar/src/BpkCalendarNav.js +6 -5
  40. package/bpk-component-calendar/src/Week.js +2 -1
  41. package/bpk-component-calendar/src/composeCalendar.js +2 -1
  42. package/bpk-component-card/package.json +4 -4
  43. package/bpk-component-card/src/BpkCard.js +2 -1
  44. package/bpk-component-checkbox/package.json +5 -5
  45. package/bpk-component-checkbox/src/BpkCheckbox.js +2 -1
  46. package/bpk-component-chip/package.json +5 -5
  47. package/bpk-component-chip/src/BpkDismissibleChip.js +2 -1
  48. package/bpk-component-chip/src/BpkSelectableChip.js +3 -2
  49. package/bpk-component-close-button/package.json +4 -4
  50. package/bpk-component-close-button/src/BpkCloseButton.js +3 -2
  51. package/bpk-component-code/package.json +2 -2
  52. package/bpk-component-code/src/BpkCode.js +2 -1
  53. package/bpk-component-code/src/BpkCodeBlock.js +2 -1
  54. package/bpk-component-content-cards/README.md +43 -0
  55. package/bpk-component-content-cards/index.ts +21 -0
  56. package/bpk-component-content-cards/package.json +23 -0
  57. package/bpk-component-content-cards/src/BpkContentCard/BpkContentCard-test.tsx +88 -0
  58. package/bpk-component-content-cards/src/BpkContentCard/BpkContentCard.module.scss +87 -0
  59. package/bpk-component-content-cards/src/BpkContentCard/BpkContentCard.tsx +84 -0
  60. package/bpk-component-content-cards/src/BpkContentCard/index.ts +19 -0
  61. package/bpk-component-content-cards/src/BpkContentCards-test.tsx +126 -0
  62. package/bpk-component-content-cards/src/BpkContentCards.module.css +18 -0
  63. package/bpk-component-content-cards/src/BpkContentCards.module.scss +51 -0
  64. package/bpk-component-content-cards/src/BpkContentCards.tsx +72 -0
  65. package/bpk-component-content-cards/src/accessibility-test.tsx +64 -0
  66. package/bpk-component-content-container/package.json +2 -2
  67. package/bpk-component-content-container/src/BpkContentContainer.js +2 -1
  68. package/bpk-component-datatable/package.json +4 -4
  69. package/bpk-component-datatable/src/BpkDataTable.js +2 -1
  70. package/bpk-component-datatable/src/BpkDataTableColumn.js +2 -1
  71. package/bpk-component-datatable/src/bpkHeaderRenderer.js +5 -4
  72. package/bpk-component-datepicker/index.js +1 -1
  73. package/bpk-component-datepicker/package.json +9 -9
  74. package/bpk-component-datepicker/src/BpkDatepicker.js +7 -6
  75. package/bpk-component-datepicker/src/themeAttributes.js +3 -3
  76. package/bpk-component-description-list/package.json +2 -2
  77. package/bpk-component-description-list/src/ComponentFactory.js +2 -1
  78. package/bpk-component-dialog/package.json +8 -8
  79. package/bpk-component-dialog/src/BpkDialog.js +3 -2
  80. package/bpk-component-dialog/src/BpkDialogInner.js +4 -3
  81. package/bpk-component-drawer/package.json +9 -9
  82. package/bpk-component-drawer/src/BpkDrawer.js +3 -2
  83. package/bpk-component-drawer/src/BpkDrawerContent.js +4 -3
  84. package/bpk-component-drawer/src/themeAttributes.js +1 -1
  85. package/bpk-component-fieldset/package.json +12 -12
  86. package/bpk-component-fieldset/src/BpkFieldset.js +4 -3
  87. package/bpk-component-flare/package.json +4 -4
  88. package/bpk-component-flare/src/BpkContentBubble.js +2 -1
  89. package/bpk-component-flare/src/BpkFlareBar.js +2 -1
  90. package/bpk-component-floating-notification/package.json +5 -5
  91. package/bpk-component-floating-notification/src/BpkFloatingNotification.js +5 -4
  92. package/bpk-component-form-validation/package.json +10 -10
  93. package/bpk-component-form-validation/src/BpkFormValidation.js +5 -4
  94. package/bpk-component-graphic-promotion/package.json +4 -4
  95. package/bpk-component-graphic-promotion/src/BpkGraphicPromo-test.tsx +5 -3
  96. package/bpk-component-graphic-promotion/src/BpkGraphicPromo.tsx +28 -27
  97. package/bpk-component-grid/package.json +2 -2
  98. package/bpk-component-grid/src/BpkGridColumn.js +2 -1
  99. package/bpk-component-grid/src/BpkGridContainer.js +2 -1
  100. package/bpk-component-grid/src/BpkGridRow.js +2 -1
  101. package/bpk-component-grid-toggle/package.json +3 -3
  102. package/bpk-component-grid-toggle/src/BpkGridToggle.js +3 -2
  103. package/bpk-component-horizontal-nav/package.json +6 -6
  104. package/bpk-component-horizontal-nav/src/BpkHorizontalNav.js +3 -2
  105. package/bpk-component-horizontal-nav/src/BpkHorizontalNavItem.js +2 -1
  106. package/bpk-component-icon/package.json +7 -7
  107. package/bpk-component-icon/src/classNameModifierHOCFactory.js +2 -1
  108. package/bpk-component-icon/src/withAlignment.js +2 -1
  109. package/bpk-component-icon/src/withDescription.js +2 -1
  110. package/bpk-component-icon/src/withRtlSupport.js +1 -1
  111. package/bpk-component-image/package.json +6 -6
  112. package/bpk-component-image/src/BpkBackgroundImage.js +3 -2
  113. package/bpk-component-image/src/BpkImage.js +3 -2
  114. package/bpk-component-image/src/withLazyLoading.js +2 -1
  115. package/bpk-component-image/src/withLoadingBehavior.js +2 -1
  116. package/bpk-component-infinite-scroll/package.json +6 -6
  117. package/bpk-component-infinite-scroll/src/withInfiniteScroll.js +2 -1
  118. package/bpk-component-input/package.json +6 -6
  119. package/bpk-component-input/src/BpkClearButton.js +4 -3
  120. package/bpk-component-input/src/BpkInput.js +2 -1
  121. package/bpk-component-input/src/withOpenEvents.js +2 -1
  122. package/bpk-component-label/package.json +2 -2
  123. package/bpk-component-label/src/BpkLabel.js +2 -1
  124. package/bpk-component-link/package.json +4 -4
  125. package/bpk-component-link/src/BpkButtonLink.js +2 -1
  126. package/bpk-component-link/src/BpkLink.js +2 -1
  127. package/bpk-component-list/package.json +2 -2
  128. package/bpk-component-list/src/BpkList.js +2 -1
  129. package/bpk-component-list/src/BpkListItem.js +2 -1
  130. package/bpk-component-loading-button/package.json +6 -6
  131. package/bpk-component-loading-button/src/BpkLoadingButton.js +7 -6
  132. package/bpk-component-map/package.json +6 -6
  133. package/bpk-component-map/src/BpkIconMarker.js +2 -1
  134. package/bpk-component-map/src/BpkIconMarker.module.scss +3 -3
  135. package/bpk-component-map/src/BpkIconMarkerBackground.js +2 -1
  136. package/bpk-component-map/src/BpkIconMarkerBackground.module.scss +4 -4
  137. package/bpk-component-map/src/BpkMap.js +2 -1
  138. package/bpk-component-map/src/BpkPriceMarker.js +3 -2
  139. package/bpk-component-map/src/BpkPriceMarker.module.scss +17 -17
  140. package/bpk-component-map/src/DefaultLoadingElement.js +3 -2
  141. package/bpk-component-map/src/DefaultLoadingElement.module.scss +1 -1
  142. package/bpk-component-mobile-scroll-container/package.json +3 -3
  143. package/bpk-component-mobile-scroll-container/src/BpkMobileScrollContainer.js +2 -1
  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 +3 -2
  150. package/bpk-component-navigation-bar/src/BpkNavigationBarButtonLink.js +3 -2
  151. package/bpk-component-navigation-bar/src/BpkNavigationBarIconButton.js +3 -2
  152. package/bpk-component-nudger/package.json +7 -7
  153. package/bpk-component-nudger/src/BpkConfigurableNudger.js +7 -6
  154. package/bpk-component-nudger/src/BpkNudger.js +2 -1
  155. package/bpk-component-nudger/src/themeAttributes.js +1 -1
  156. package/bpk-component-overlay/package.json +4 -4
  157. package/bpk-component-overlay/src/BpkOverlay.js +2 -1
  158. package/bpk-component-pagination/package.json +4 -4
  159. package/bpk-component-pagination/src/BpkPagination.js +2 -1
  160. package/bpk-component-pagination/src/BpkPaginationList.js +2 -1
  161. package/bpk-component-pagination/src/BpkPaginationNudger.js +5 -4
  162. package/bpk-component-pagination/src/BpkPaginationPage.js +3 -2
  163. package/bpk-component-pagination/src/themeAttributes.js +1 -1
  164. package/bpk-component-panel/package.json +2 -2
  165. package/bpk-component-panel/src/BpkPanel.js +2 -1
  166. package/bpk-component-phone-input/package.json +9 -9
  167. package/bpk-component-phone-input/src/BpkPhoneInput.js +5 -4
  168. package/bpk-component-popover/package.json +8 -8
  169. package/bpk-component-popover/src/BpkPopover.js +5 -4
  170. package/bpk-component-popover/src/BpkPopoverPortal.js +2 -1
  171. package/bpk-component-popover/src/themeAttributes.js +1 -1
  172. package/bpk-component-price/package.json +3 -3
  173. package/bpk-component-price/src/BpkPrice.js +3 -2
  174. package/bpk-component-progress/package.json +5 -5
  175. package/bpk-component-progress/src/BpkProgress.js +2 -1
  176. package/bpk-component-radio/package.json +4 -4
  177. package/bpk-component-radio/src/BpkRadio.js +2 -1
  178. package/bpk-component-rating/package.json +4 -4
  179. package/bpk-component-rating/src/BpkRating.js +3 -2
  180. package/bpk-component-rtl-toggle/package.json +2 -2
  181. package/bpk-component-rtl-toggle/src/BpkRtlToggle.js +2 -1
  182. package/bpk-component-rtl-toggle/src/updateOnDirectionChange.js +2 -1
  183. package/bpk-component-scrollable-calendar/index.js +1 -1
  184. package/bpk-component-scrollable-calendar/package.json +7 -7
  185. package/bpk-component-scrollable-calendar/src/BpkScrollableCalendar.js +1 -1
  186. package/bpk-component-scrollable-calendar/src/BpkScrollableCalendarDate.js +2 -1
  187. package/bpk-component-scrollable-calendar/src/BpkScrollableCalendarGrid.js +4 -3
  188. package/bpk-component-scrollable-calendar/src/BpkScrollableCalendarGridList.js +105 -70
  189. package/bpk-component-scrollable-calendar/src/utils.js +25 -2
  190. package/bpk-component-section-list/package.json +6 -6
  191. package/bpk-component-section-list/src/BpkSectionListItem.js +4 -3
  192. package/bpk-component-section-list/src/BpkSectionListSection.js +3 -2
  193. package/bpk-component-select/package.json +3 -3
  194. package/bpk-component-select/src/BpkSelect.js +2 -1
  195. package/bpk-component-skip-link/package.json +2 -2
  196. package/bpk-component-skip-link/src/BpkSkipLink.js +2 -1
  197. package/bpk-component-slider/package.json +4 -4
  198. package/bpk-component-slider/src/BpkSlider.js +2 -1
  199. package/bpk-component-spinner/package.json +3 -3
  200. package/bpk-component-spinner/src/BpkExtraLargeSpinner.js +2 -1
  201. package/bpk-component-spinner/src/BpkLargeSpinner.js +2 -1
  202. package/bpk-component-spinner/src/BpkSpinner.js +2 -1
  203. package/bpk-component-split-input/package.json +3 -3
  204. package/bpk-component-split-input/src/BpkInputField.js +3 -2
  205. package/bpk-component-split-input/src/BpkSplitInput.js +3 -2
  206. package/bpk-component-star-rating/package.json +5 -5
  207. package/bpk-component-star-rating/src/BpkInteractiveStar.js +2 -1
  208. package/bpk-component-star-rating/src/BpkInteractiveStarRating.js +2 -1
  209. package/bpk-component-star-rating/src/BpkStar.js +9 -8
  210. package/bpk-component-star-rating/src/BpkStarRating.js +2 -1
  211. package/bpk-component-star-rating/src/withInteractiveStarRatingState.js +2 -1
  212. package/bpk-component-switch/package.json +2 -2
  213. package/bpk-component-switch/src/BpkSwitch.js +2 -1
  214. package/bpk-component-table/package.json +2 -2
  215. package/bpk-component-table/src/BpkTable.js +2 -1
  216. package/bpk-component-table/src/BpkTableCell.js +2 -1
  217. package/bpk-component-table/src/BpkTableHeadCell.js +2 -1
  218. package/bpk-component-text/package.json +2 -2
  219. package/bpk-component-text/src/BpkText.js +2 -1
  220. package/bpk-component-textarea/package.json +4 -4
  221. package/bpk-component-textarea/src/BpkTextarea.js +2 -1
  222. package/bpk-component-theme-toggle/package.json +5 -5
  223. package/bpk-component-theme-toggle/src/BpkThemeToggle.js +4 -3
  224. package/bpk-component-theme-toggle/src/updateOnThemeChange.js +2 -1
  225. package/bpk-component-ticket/package.json +4 -4
  226. package/bpk-component-ticket/src/BpkTicket.js +2 -1
  227. package/bpk-component-tooltip/package.json +4 -4
  228. package/bpk-component-tooltip/src/BpkTooltip.js +2 -1
  229. package/bpk-component-tooltip/src/BpkTooltipPortal.js +2 -1
  230. package/bpk-scrim-utils/package.json +2 -2
  231. package/bpk-scrim-utils/src/BpkScrim.js +2 -1
  232. package/bpk-scrim-utils/src/withScrim.js +2 -1
  233. package/bpk-theming/package.json +2 -2
  234. package/package.json +6 -5
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bpk-component-rating",
3
- "version": "6.0.1",
3
+ "version": "6.0.2",
4
4
  "description": "Backpack rating component.",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
@@ -14,7 +14,7 @@
14
14
  },
15
15
  "gitHead": "f9f94f86d7cfc75e43bc6ad5eb01b23e62a89cc8",
16
16
  "dependencies": {
17
- "bpk-mixins": "^31.4.0",
17
+ "bpk-mixins": "^31.5.0",
18
18
  "bpk-react-utils": "^7.0.0",
19
19
  "lodash.clamp": "^4.0.3",
20
20
  "prop-types": "^15.5.8"
@@ -23,7 +23,7 @@
23
23
  "react": "^17.0.2"
24
24
  },
25
25
  "devDependencies": {
26
- "@skyscanner/bpk-foundations-web": "^8.5.0",
27
- "bpk-component-text": "^8.0.1"
26
+ "@skyscanner/bpk-foundations-web": "^9.0.0",
27
+ "bpk-component-text": "^8.0.2"
28
28
  }
29
29
  }
@@ -20,8 +20,9 @@
20
20
  import React, { type Node } from 'react';
21
21
  import PropTypes from 'prop-types';
22
22
  import clamp from 'lodash.clamp';
23
- import { cssModules } from 'bpk-react-utils';
24
- import BpkText, { TEXT_STYLES } from 'bpk-component-text';
23
+
24
+ import { cssModules } from '../../bpk-react-utils';
25
+ import BpkText, { TEXT_STYLES } from '../../bpk-component-text';
25
26
 
26
27
  import STYLES from './BpkRating.module.scss';
27
28
  import { RATING_SIZES, RATING_SCALES } from './common-types';
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bpk-component-rtl-toggle",
3
- "version": "4.0.1",
3
+ "version": "4.0.2",
4
4
  "description": "Backpack RTL toggle 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-component-link": "^4.0.1",
17
+ "bpk-component-link": "^4.0.2",
18
18
  "bpk-react-utils": "^7.0.0",
19
19
  "prop-types": "^15.7.2"
20
20
  },
@@ -18,7 +18,8 @@
18
18
 
19
19
  import React from 'react';
20
20
  import PropTypes from 'prop-types';
21
- import { BpkButtonLink } from 'bpk-component-link';
21
+
22
+ import { BpkButtonLink } from '../../bpk-component-link';
22
23
 
23
24
  import { getHtmlElement, DIRECTIONS, DIRECTION_CHANGE_EVENT } from './utils';
24
25
 
@@ -17,7 +17,8 @@
17
17
  */
18
18
 
19
19
  import React, { Component } from 'react';
20
- import { wrapDisplayName } from 'bpk-react-utils';
20
+
21
+ import { wrapDisplayName } from '../../bpk-react-utils';
21
22
 
22
23
  import { getHtmlElement, DIRECTION_CHANGE_EVENT } from './utils';
23
24
 
@@ -17,7 +17,7 @@
17
17
  */
18
18
  /* @flow strict */
19
19
 
20
- import { CALENDAR_SELECTION_TYPE } from 'bpk-component-calendar';
20
+ import { CALENDAR_SELECTION_TYPE } from '../bpk-component-calendar';
21
21
 
22
22
  import BpkScrollableCalendar from './src/BpkScrollableCalendar';
23
23
  import BpkScrollableCalendarDate from './src/BpkScrollableCalendarDate';
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bpk-component-scrollable-calendar",
3
- "version": "7.0.1",
3
+ "version": "7.1.0",
4
4
  "description": "Backpack scrollable calendar component.",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
@@ -14,17 +14,17 @@
14
14
  },
15
15
  "gitHead": "4e4ec9add28e1db54d6a38a10c331bbd163f2926",
16
16
  "dependencies": {
17
- "@skyscanner/bpk-foundations-web": "^8.5.0",
18
- "bpk-component-calendar": "^12.0.1",
19
- "bpk-component-text": "^8.0.1",
20
- "bpk-mixins": "^31.4.0",
17
+ "@skyscanner/bpk-foundations-web": "^9.0.0",
18
+ "bpk-component-calendar": "^12.0.2",
19
+ "bpk-component-text": "^8.0.2",
20
+ "bpk-mixins": "^31.5.0",
21
21
  "bpk-react-utils": "^7.0.0",
22
22
  "date-fns": "^2.21.1",
23
23
  "prop-types": "^15.5.8",
24
- "react-virtualized": "^9.22.3"
24
+ "react-window": "^1.8.7"
25
25
  },
26
26
  "devDependencies": {
27
- "bpk-storybook-utils": "^2.0.1"
27
+ "bpk-storybook-utils": "^2.0.2"
28
28
  },
29
29
  "peerDependencies": {
30
30
  "react": "^17.0.2"
@@ -21,7 +21,7 @@ import {
21
21
  BpkCalendarGridHeader,
22
22
  withCalendarState,
23
23
  composeCalendar,
24
- } from 'bpk-component-calendar';
24
+ } from '../../bpk-component-calendar';
25
25
 
26
26
  import BpkscrollableCalendarDate from './BpkScrollableCalendarDate';
27
27
  import BpkScrollableCalendarGridList from './BpkScrollableCalendarGridList';
@@ -18,10 +18,11 @@
18
18
 
19
19
  import PropTypes from 'prop-types';
20
20
  import React, { PureComponent } from 'react';
21
+
21
22
  import {
22
23
  BpkCalendarDate,
23
24
  BpkCalendarDatePropTypes,
24
- } from 'bpk-component-calendar';
25
+ } from '../../bpk-component-calendar';
25
26
 
26
27
  class BpkScrollableCalendarDate extends PureComponent {
27
28
  render() {
@@ -17,12 +17,13 @@
17
17
  */
18
18
 
19
19
  import React from 'react';
20
- import { cssModules } from 'bpk-react-utils';
21
- import BpkText, { TEXT_STYLES } from 'bpk-component-text';
20
+
21
+ import { cssModules } from '../../bpk-react-utils';
22
+ import BpkText, { TEXT_STYLES } from '../../bpk-component-text';
22
23
  import {
23
24
  BpkCalendarGrid,
24
25
  BpkCalendarGridPropTypes,
25
- } from 'bpk-component-calendar';
26
+ } from '../../bpk-component-calendar';
26
27
 
27
28
  import STYLES from './BpkScrollableCalendarGrid.module.scss';
28
29
 
@@ -18,28 +18,35 @@
18
18
 
19
19
  import PropTypes from 'prop-types';
20
20
  import React from 'react';
21
- import { cssModules, deprecated } from 'bpk-react-utils';
22
- import { DateUtils, BpkCalendarGridPropTypes } from 'bpk-component-calendar';
23
21
  import { startOfDay, startOfMonth } from 'date-fns';
22
+ import { VariableSizeList as List } from 'react-window';
23
+
24
+ import { cssModules, deprecated } from '../../bpk-react-utils';
24
25
  import {
25
- AutoSizer,
26
- List,
27
- CellMeasurer,
28
- CellMeasurerCache,
29
- } from 'react-virtualized';
26
+ DateUtils,
27
+ BpkCalendarGridPropTypes,
28
+ } from '../../bpk-component-calendar';
30
29
 
31
30
  import STYLES from './BpkScrollableCalendarGridList.module.scss';
32
31
  import BpkScrollableCalendarGrid from './BpkScrollableCalendarGrid';
33
- import getMonthsArray from './utils';
32
+ import { getMonthsArray, getMonthItemHeights } from './utils';
34
33
 
35
34
  const getClassName = cssModules(STYLES);
36
35
 
36
+ // The `react-window` API requires the height in pixels to be specified.
37
+ // These constants are here to facilitate calculating the height.
38
+ const ROW_HEIGHT = 44;
39
+ // This is the additional height of each grid without any rows.
40
+ const BASE_MONTH_ITEM_HEIGHT = 130;
41
+ const COLUMN_COUNT = 7;
42
+ // Most calendar grids have 5 rows:
43
+ const ESTIMATED_MONTH_ITEM_HEIGHT = BASE_MONTH_ITEM_HEIGHT + 5 * ROW_HEIGHT;
44
+
37
45
  class BpkScrollableCalendarGridList extends React.Component {
38
46
  constructor(props) {
39
47
  super(props);
40
48
 
41
- this.rowRenderer = this.rowRenderer.bind(this);
42
- this.renderList = this.renderList.bind(this);
49
+ this.outerDiv = null;
43
50
 
44
51
  const startDate = startOfDay(startOfMonth(this.props.minDate));
45
52
  const endDate = startOfDay(startOfMonth(this.props.maxDate));
@@ -48,88 +55,116 @@ class BpkScrollableCalendarGridList extends React.Component {
48
55
  startDate,
49
56
  );
50
57
  const months = getMonthsArray(startDate, monthsCount);
58
+ const monthItemHeights = getMonthItemHeights(
59
+ months,
60
+ props.weekStartsOn,
61
+ COLUMN_COUNT,
62
+ ROW_HEIGHT,
63
+ BASE_MONTH_ITEM_HEIGHT,
64
+ );
51
65
 
52
- const cache = new CellMeasurerCache({
53
- fixedWidth: true,
54
- defaultHeight: 276, // most common height (in px) of BpkScrollableCalendarGrid
55
- });
56
66
  this.state = {
57
67
  months,
58
- cache,
68
+ monthItemHeights,
69
+ outerHeight: ESTIMATED_MONTH_ITEM_HEIGHT,
59
70
  };
60
71
  }
61
72
 
73
+ componentDidMount = () => {
74
+ this.setComponentHeight();
75
+ if (typeof document !== 'undefined') {
76
+ window.addEventListener('resize', this.setComponentHeight);
77
+ document.addEventListener('orientationchange', this.setComponentHeight);
78
+ document.addEventListener('fullscreenchange', this.setComponentHeight);
79
+ }
80
+ };
81
+
82
+ componentWillUnmount = () => {
83
+ if (typeof document !== 'undefined') {
84
+ window.removeEventListener('resize', this.setComponentHeight);
85
+ document.removeEventListener(
86
+ 'orientationchange',
87
+ this.setComponentHeight,
88
+ );
89
+ document.removeEventListener('fullscreenchange', this.setComponentHeight);
90
+ }
91
+ };
92
+
62
93
  getHtmlElement = () =>
63
94
  typeof document !== 'undefined' ? document.querySelector('html') : {};
64
95
 
65
- rowRenderer({ index, key, parent, style }) {
66
- return (
67
- <CellMeasurer
68
- key={key}
69
- cache={this.state.cache}
70
- parent={parent}
71
- columnIndex={0}
72
- rowIndex={index}
73
- >
74
- <div style={style}>
75
- <BpkScrollableCalendarGrid
76
- onDateClick={this.props.onDateClick}
77
- {...this.props}
78
- key={key}
79
- month={this.state.months[index]}
80
- focusedDate={this.props.focusedDate}
81
- preventKeyboardFocus={this.props.preventKeyboardFocus}
82
- aria-hidden={index !== 1}
83
- className={getClassName('bpk-scrollable-calendar-grid-list__item')}
84
- />
85
- </div>
86
- </CellMeasurer>
87
- );
88
- }
96
+ getItemSize = (index) =>
97
+ this.state.monthItemHeights[index] || ESTIMATED_MONTH_ITEM_HEIGHT;
89
98
 
90
- renderList(width, height, minDate, focusedDate, selectionConfiguration) {
91
- const { date, startDate } = selectionConfiguration || {};
92
- const selectedDate = focusedDate || date || startDate;
93
- return (
94
- <List
95
- extraData={this.props}
96
- style={this.getHtmlElement().dir === 'rtl' ? { direction: 'rtl' } : {}}
97
- width={width}
98
- height={height}
99
- deferredMeasurementCache={this.state.cache}
100
- rowHeight={this.state.cache.rowHeight}
101
- rowRenderer={this.rowRenderer}
102
- rowCount={this.state.months.length}
103
- overscanRowCount={0}
104
- scrollToIndex={
105
- selectedDate
106
- ? DateUtils.differenceInCalendarMonths(selectedDate, minDate)
107
- : 0
108
- }
99
+ setComponentHeight = () => {
100
+ const outerNode = this.outerDiv;
101
+ if (outerNode) {
102
+ const newHeight = outerNode.clientHeight;
103
+ this.setState({ outerHeight: newHeight });
104
+ } else {
105
+ this.setState({ outerHeight: ESTIMATED_MONTH_ITEM_HEIGHT });
106
+ }
107
+ };
108
+
109
+ rowRenderer = ({ index, style }) => (
110
+ <div style={style}>
111
+ <BpkScrollableCalendarGrid
112
+ onDateClick={this.props.onDateClick}
113
+ {...this.props}
114
+ month={this.state.months[index]}
115
+ focusedDate={this.props.focusedDate}
116
+ preventKeyboardFocus={this.props.preventKeyboardFocus}
117
+ aria-hidden={index !== 1}
118
+ className={getClassName('bpk-scrollable-calendar-grid-list__item')}
109
119
  />
110
- );
111
- }
120
+ </div>
121
+ );
122
+
123
+ calculateOffsetInPixels = (numberOfMonths) => {
124
+ // The `react-window` API requires the scroll offset to be provided in pixels.
125
+ // Here we use the pre-calculated item heights to find the correct pixel offset
126
+ let result = 0;
127
+ for (let i = 0; i < numberOfMonths; i += 1) {
128
+ result += this.getItemSize(i);
129
+ }
130
+ return result;
131
+ };
112
132
 
113
133
  render() {
114
134
  const { focusedDate, minDate, selectionConfiguration } = this.props;
135
+ const { date, startDate } = selectionConfiguration || {};
136
+ const selectedDate = focusedDate || date || startDate;
137
+
115
138
  return (
116
139
  <div
117
140
  className={getClassName(
118
141
  'bpk-scrollable-calendar-grid-list',
119
142
  this.props.className,
120
143
  )}
144
+ ref={(div) => {
145
+ this.outerDiv = div;
146
+ }}
121
147
  >
122
- <AutoSizer>
123
- {({ height, width }) =>
124
- this.renderList(
125
- width,
126
- height,
127
- minDate,
128
- focusedDate,
129
- selectionConfiguration,
130
- )
148
+ <List
149
+ extraData={this.props}
150
+ style={
151
+ this.getHtmlElement().dir === 'rtl' ? { direction: 'rtl' } : {}
131
152
  }
132
- </AutoSizer>
153
+ width="100%"
154
+ height={this.state.outerHeight}
155
+ estimatedItemSize={ESTIMATED_MONTH_ITEM_HEIGHT}
156
+ itemSize={this.getItemSize}
157
+ itemCount={this.state.months.length}
158
+ rowCount={this.state.months.length}
159
+ overscanCount={1}
160
+ initialScrollOffset={this.calculateOffsetInPixels(
161
+ selectedDate
162
+ ? DateUtils.differenceInCalendarMonths(selectedDate, minDate)
163
+ : 0,
164
+ )}
165
+ >
166
+ {this.rowRenderer}
167
+ </List>
133
168
  </div>
134
169
  );
135
170
  }
@@ -16,7 +16,7 @@
16
16
  * limitations under the License.
17
17
  */
18
18
 
19
- import { DateUtils } from 'bpk-component-calendar';
19
+ import { DateUtils } from '../../bpk-component-calendar';
20
20
 
21
21
  const getMonthsArray = (startDate, count) => {
22
22
  const months = [];
@@ -27,4 +27,27 @@ const getMonthsArray = (startDate, count) => {
27
27
 
28
28
  return months;
29
29
  };
30
- export default getMonthsArray;
30
+
31
+ // Here we calculate the height of each calendar grid item in pixels, as the `react-window` API
32
+ // requires that these are provided so that they can be efficiently rendered.
33
+ const getMonthItemHeights = (
34
+ months,
35
+ weekStartsOn,
36
+ columnCount,
37
+ rowHeight,
38
+ baseMonthItemHeight,
39
+ ) => {
40
+ const monthItemHeights = months.map((month) => {
41
+ const firstDayOffset = (month.getDay() + 7 - weekStartsOn) % 7;
42
+ const monthLength = DateUtils.daysInMonth(
43
+ month.getYear(),
44
+ month.getMonth(),
45
+ );
46
+ const calendarGridSpaces = firstDayOffset + monthLength;
47
+ const rowCount = Math.ceil(calendarGridSpaces / columnCount);
48
+ return baseMonthItemHeight + rowHeight * rowCount;
49
+ });
50
+ return monthItemHeights;
51
+ };
52
+
53
+ export { getMonthsArray, getMonthItemHeights };
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bpk-component-section-list",
3
- "version": "4.0.1",
3
+ "version": "4.0.2",
4
4
  "description": "Backpack section list component.",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
@@ -14,15 +14,15 @@
14
14
  },
15
15
  "gitHead": "f9f94f86d7cfc75e43bc6ad5eb01b23e62a89cc8",
16
16
  "dependencies": {
17
- "@skyscanner/bpk-foundations-web": "^8.5.0",
18
- "bpk-component-icon": "^10.0.1",
19
- "bpk-component-text": "^8.0.1",
20
- "bpk-mixins": "^31.4.0",
17
+ "@skyscanner/bpk-foundations-web": "^9.0.0",
18
+ "bpk-component-icon": "^10.0.2",
19
+ "bpk-component-text": "^8.0.2",
20
+ "bpk-mixins": "^31.5.0",
21
21
  "bpk-react-utils": "^7.0.0",
22
22
  "prop-types": "^15.7.2"
23
23
  },
24
24
  "devDependencies": {
25
- "bpk-storybook-utils": "^2.0.1"
25
+ "bpk-storybook-utils": "^2.0.2"
26
26
  },
27
27
  "peerDependencies": {
28
28
  "react": "^17.0.2"
@@ -20,9 +20,10 @@
20
20
 
21
21
  import PropTypes from 'prop-types';
22
22
  import React, { type Node } from 'react';
23
- import { cssModules } from 'bpk-react-utils';
24
- import BpkLargeChevronRightIcon from 'bpk-component-icon/lg/chevron-right';
25
- import { withRtlSupport } from 'bpk-component-icon';
23
+
24
+ import { cssModules } from '../../bpk-react-utils';
25
+ import BpkLargeChevronRightIcon from '../../bpk-component-icon/lg/chevron-right';
26
+ import { withRtlSupport } from '../../bpk-component-icon';
26
27
 
27
28
  import STYLES from './BpkSectionListItem.module.scss';
28
29
 
@@ -20,8 +20,9 @@
20
20
 
21
21
  import PropTypes from 'prop-types';
22
22
  import React, { type Node } from 'react';
23
- import { cssModules } from 'bpk-react-utils';
24
- import BpkText, { TEXT_STYLES } from 'bpk-component-text';
23
+
24
+ import { cssModules } from '../../bpk-react-utils';
25
+ import BpkText, { TEXT_STYLES } from '../../bpk-component-text';
25
26
 
26
27
  import STYLES from './BpkSectionListSection.module.scss';
27
28
 
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bpk-component-select",
3
- "version": "6.0.1",
3
+ "version": "6.0.2",
4
4
  "description": "Backpack select component.",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
@@ -14,12 +14,12 @@
14
14
  },
15
15
  "gitHead": "5c156b97cb0ba5e75851d3c763334578714c895e",
16
16
  "dependencies": {
17
- "bpk-mixins": "^31.4.0",
17
+ "bpk-mixins": "^31.5.0",
18
18
  "bpk-react-utils": "^7.0.0",
19
19
  "prop-types": "^15.7.2"
20
20
  },
21
21
  "devDependencies": {
22
- "bpk-storybook-utils": "^2.0.1"
22
+ "bpk-storybook-utils": "^2.0.2"
23
23
  },
24
24
  "peerDependencies": {
25
25
  "react": "^17.0.2"
@@ -19,7 +19,8 @@
19
19
 
20
20
  import PropTypes from 'prop-types';
21
21
  import React, { type Element } from 'react';
22
- import { cssModules } from 'bpk-react-utils';
22
+
23
+ import { cssModules } from '../../bpk-react-utils';
23
24
 
24
25
  import STYLES from './BpkSelect.module.scss';
25
26
 
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bpk-component-skip-link",
3
- "version": "3.0.1",
3
+ "version": "3.0.2",
4
4
  "description": "Backpack skip-link component.",
5
5
  "main": "index.js",
6
6
  "repository": {
@@ -13,7 +13,7 @@
13
13
  "react": "^17.0.2"
14
14
  },
15
15
  "dependencies": {
16
- "bpk-mixins": "^31.4.0",
16
+ "bpk-mixins": "^31.5.0",
17
17
  "bpk-react-utils": "^7.0.0",
18
18
  "prop-types": "^15.5.8"
19
19
  },
@@ -19,7 +19,8 @@
19
19
 
20
20
  import PropTypes from 'prop-types';
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 './BpkSkipLink.module.scss';
25
26
 
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bpk-component-slider",
3
- "version": "4.0.1",
3
+ "version": "4.0.2",
4
4
  "description": "Backpack slider component.",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
@@ -14,8 +14,8 @@
14
14
  },
15
15
  "gitHead": "5c156b97cb0ba5e75851d3c763334578714c895e",
16
16
  "dependencies": {
17
- "@skyscanner/bpk-foundations-web": "^8.5.0",
18
- "bpk-mixins": "^31.4.0",
17
+ "@skyscanner/bpk-foundations-web": "^9.0.0",
18
+ "bpk-mixins": "^31.5.0",
19
19
  "bpk-react-utils": "^7.0.0",
20
20
  "prop-types": "^15.7.2",
21
21
  "react-slider": "^1.3.1"
@@ -24,6 +24,6 @@
24
24
  "react": "^17.0.2"
25
25
  },
26
26
  "devDependencies": {
27
- "bpk-component-rtl-toggle": "^4.0.1"
27
+ "bpk-component-rtl-toggle": "^4.0.2"
28
28
  }
29
29
  }
@@ -19,7 +19,8 @@
19
19
  import React from 'react';
20
20
  import Slider from 'react-slider';
21
21
  import PropTypes from 'prop-types';
22
- import { cssModules, isRTL } from 'bpk-react-utils';
22
+
23
+ import { cssModules, isRTL } from '../../bpk-react-utils';
23
24
 
24
25
  import STYLES from './BpkSlider.module.scss';
25
26
 
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bpk-component-spinner",
3
- "version": "6.0.1",
3
+ "version": "6.0.2",
4
4
  "description": "Backpack spinner components.",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
@@ -14,8 +14,8 @@
14
14
  },
15
15
  "gitHead": "5c156b97cb0ba5e75851d3c763334578714c895e",
16
16
  "dependencies": {
17
- "@skyscanner/bpk-svgs": "^14.3.6",
18
- "bpk-mixins": "^31.4.0",
17
+ "@skyscanner/bpk-svgs": "^14.3.8",
18
+ "bpk-mixins": "^31.5.0",
19
19
  "bpk-react-utils": "^7.0.0",
20
20
  "prop-types": "^15.7.2"
21
21
  },
@@ -20,9 +20,10 @@
20
20
 
21
21
  import React from 'react';
22
22
  import PropTypes from 'prop-types';
23
- import { cssModules } from 'bpk-react-utils';
24
23
  import XlSpinner from '@skyscanner/bpk-svgs/dist/js/spinners/xl';
25
24
 
25
+ import { cssModules } from '../../bpk-react-utils';
26
+
26
27
  import STYLES from './BpkSpinner.module.scss';
27
28
  import SPINNER_TYPES from './spinnerTypes';
28
29
 
@@ -20,9 +20,10 @@
20
20
 
21
21
  import PropTypes from 'prop-types';
22
22
  import React from 'react';
23
- import { cssModules } from 'bpk-react-utils';
24
23
  import LgSpinner from '@skyscanner/bpk-svgs/dist/js/spinners/lg';
25
24
 
25
+ import { cssModules } from '../../bpk-react-utils';
26
+
26
27
  import STYLES from './BpkSpinner.module.scss';
27
28
  import SPINNER_TYPES from './spinnerTypes';
28
29
 
@@ -20,9 +20,10 @@
20
20
 
21
21
  import PropTypes from 'prop-types';
22
22
  import React from 'react';
23
- import { cssModules } from 'bpk-react-utils';
24
23
  import SmSpinner from '@skyscanner/bpk-svgs/dist/js/spinners/sm';
25
24
 
25
+ import { cssModules } from '../../bpk-react-utils';
26
+
26
27
  import STYLES from './BpkSpinner.module.scss';
27
28
  import SPINNER_TYPES from './spinnerTypes';
28
29
 
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bpk-component-split-input",
3
- "version": "2.0.1",
3
+ "version": "2.0.2",
4
4
  "description": "Backpack split-input component.",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
@@ -13,8 +13,8 @@
13
13
  "registry": "https://registry.npmjs.org/"
14
14
  },
15
15
  "dependencies": {
16
- "bpk-component-input": "^7.0.1",
17
- "bpk-mixins": "^31.4.0",
16
+ "bpk-component-input": "^7.0.2",
17
+ "bpk-mixins": "^31.5.0",
18
18
  "bpk-react-utils": "^7.0.0",
19
19
  "prop-types": "^15.5.8"
20
20
  },