@skyscanner/backpack-web 2.0.1 → 3.1.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 (90) hide show
  1. package/bpk-animate-height/package.json +26 -0
  2. package/bpk-component-accordion/package.json +31 -0
  3. package/bpk-component-aria-live/package.json +31 -0
  4. package/bpk-component-autosuggest/package.json +29 -0
  5. package/bpk-component-badge/package.json +29 -0
  6. package/bpk-component-banner-alert/package.json +34 -0
  7. package/bpk-component-barchart/package.json +35 -0
  8. package/bpk-component-barchart/src/BpkBarchartBar.js +3 -2
  9. package/bpk-component-blockquote/package.json +24 -0
  10. package/bpk-component-breadcrumb/package.json +27 -0
  11. package/bpk-component-breakpoint/package.json +28 -0
  12. package/bpk-component-button/package.json +26 -0
  13. package/bpk-component-calendar/package.json +34 -0
  14. package/bpk-component-calendar/src/BpkCalendarGridTransition.js +4 -2
  15. package/bpk-component-calendar/src/Week.js +3 -1
  16. package/bpk-component-card/package.json +28 -0
  17. package/bpk-component-checkbox/package.json +29 -0
  18. package/bpk-component-chip/package.json +29 -0
  19. package/bpk-component-close-button/package.json +28 -0
  20. package/bpk-component-code/package.json +24 -0
  21. package/bpk-component-content-container/package.json +24 -0
  22. package/bpk-component-datatable/package.json +30 -0
  23. package/bpk-component-datepicker/package.json +33 -0
  24. package/bpk-component-description-list/package.json +24 -0
  25. package/bpk-component-dialog/package.json +32 -0
  26. package/bpk-component-drawer/package.json +34 -0
  27. package/bpk-component-fieldset/package.json +36 -0
  28. package/bpk-component-flare/package.json +29 -0
  29. package/bpk-component-form-validation/package.json +34 -0
  30. package/bpk-component-graphic-promotion/package.json +26 -0
  31. package/bpk-component-grid/package.json +24 -0
  32. package/bpk-component-grid-toggle/package.json +25 -0
  33. package/bpk-component-horizontal-nav/package.json +30 -0
  34. package/bpk-component-icon/package.json +34 -0
  35. package/bpk-component-image/package.json +31 -0
  36. package/bpk-component-infinite-scroll/package.json +31 -0
  37. package/bpk-component-input/package.json +30 -0
  38. package/bpk-component-label/package.json +24 -0
  39. package/bpk-component-link/package.json +28 -0
  40. package/bpk-component-list/package.json +24 -0
  41. package/bpk-component-loading-button/package.json +30 -0
  42. package/bpk-component-map/package.json +32 -0
  43. package/bpk-component-mobile-scroll-container/package.json +28 -0
  44. package/bpk-component-modal/package.json +33 -0
  45. package/bpk-component-navigation-bar/package.json +32 -0
  46. package/bpk-component-navigation-stack/package.json +32 -0
  47. package/bpk-component-nudger/package.json +32 -0
  48. package/bpk-component-overlay/package.json +28 -0
  49. package/bpk-component-pagination/package.json +28 -0
  50. package/bpk-component-panel/package.json +24 -0
  51. package/bpk-component-phone-input/package.json +33 -0
  52. package/bpk-component-popover/README.md +2 -2
  53. package/bpk-component-popover/package.json +35 -0
  54. package/bpk-component-popover/src/BpkPopover.js +1 -0
  55. package/bpk-component-popover/src/BpkPopover.module.scss +28 -26
  56. package/bpk-component-popover/src/BpkPopoverPortal.js +43 -17
  57. package/bpk-component-price/README.md +35 -0
  58. package/bpk-component-price/index.js +23 -0
  59. package/bpk-component-price/package.json +24 -0
  60. package/bpk-component-price/src/BpkPrice.js +106 -0
  61. package/bpk-component-price/src/BpkPrice.module.scss +55 -0
  62. package/bpk-component-progress/package.json +30 -0
  63. package/bpk-component-radio/package.json +28 -0
  64. package/bpk-component-rating/package.json +29 -0
  65. package/bpk-component-rating/src/BpkRating.js +6 -1
  66. package/bpk-component-rtl-toggle/package.json +24 -0
  67. package/bpk-component-scrollable-calendar/package.json +32 -0
  68. package/bpk-component-section-list/package.json +30 -0
  69. package/bpk-component-select/package.json +27 -0
  70. package/bpk-component-skip-link/package.json +24 -0
  71. package/bpk-component-slider/package.json +29 -0
  72. package/bpk-component-spinner/package.json +25 -0
  73. package/bpk-component-star-rating/package.json +29 -0
  74. package/bpk-component-star-rating/src/BpkStarRating.js +6 -1
  75. package/bpk-component-switch/package.json +24 -0
  76. package/bpk-component-table/package.json +24 -0
  77. package/bpk-component-text/package.json +24 -0
  78. package/bpk-component-textarea/package.json +28 -0
  79. package/bpk-component-theme-toggle/package.json +27 -0
  80. package/bpk-component-theme-toggle/src/BpkThemeToggle.js +0 -8
  81. package/bpk-component-ticket/package.json +28 -0
  82. package/bpk-component-tooltip/README.md +2 -2
  83. package/bpk-component-tooltip/package.json +29 -0
  84. package/bpk-component-tooltip/src/BpkTooltip.js +6 -1
  85. package/bpk-component-tooltip/src/BpkTooltip.module.scss +46 -55
  86. package/bpk-component-tooltip/src/BpkTooltipPortal.js +21 -12
  87. package/bpk-react-utils/package.json +25 -0
  88. package/bpk-scrim-utils/package.json +25 -0
  89. package/bpk-theming/package.json +23 -0
  90. package/package.json +5 -3
@@ -19,27 +19,13 @@
19
19
  @import '~bpk-mixins';
20
20
  $bpk-spacing-v2: true;
21
21
 
22
- $arrow-size: bpk-spacing-sm();
22
+ $arrow-size: bpk-spacing-md();
23
+ $arrow-inset-margin: -($bpk-one-pixel-rem * 3);
24
+ $light-arrow-border-color: $bpk-color-sky-gray-tint-06;
23
25
  $dark-background-color: $bpk-color-sky-gray;
24
26
 
25
27
  .bpk-tooltip-portal {
26
28
  z-index: $bpk-zindex-tooltip;
27
-
28
- &[x-placement='top'] {
29
- margin-bottom: $arrow-size;
30
- }
31
-
32
- &[x-placement='right'] {
33
- margin-left: $arrow-size;
34
- }
35
-
36
- &[x-placement='bottom'] {
37
- margin-top: $arrow-size;
38
- }
39
-
40
- &[x-placement='left'] {
41
- margin-right: $arrow-size;
42
- }
43
29
  }
44
30
 
45
31
  .bpk-tooltip {
@@ -51,24 +37,26 @@ $dark-background-color: $bpk-color-sky-gray;
51
37
  &--appear {
52
38
  opacity: 0;
53
39
 
54
- .bpk-tooltip-portal[x-placement='top'] &:not(.bpk-tooltip--appear-active) {
40
+ .bpk-tooltip-portal[data-popper-placement='top']
41
+ &:not(.bpk-tooltip--appear-active) {
55
42
  transform: translate(0, -1rem);
56
43
  transition: none;
57
44
  }
58
45
 
59
- .bpk-tooltip-portal[x-placement='right']
46
+ .bpk-tooltip-portal[data-popper-placement='right']
60
47
  &:not(.bpk-tooltip--appear-active) {
61
48
  transform: translate(1rem, 0);
62
49
  transition: none;
63
50
  }
64
51
 
65
- .bpk-tooltip-portal[x-placement='bottom']
52
+ .bpk-tooltip-portal[data-popper-placement='bottom']
66
53
  &:not(.bpk-tooltip--appear-active) {
67
54
  transform: translate(0, 1rem);
68
55
  transition: none;
69
56
  }
70
57
 
71
- .bpk-tooltip-portal[x-placement='left'] &:not(.bpk-tooltip--appear-active) {
58
+ .bpk-tooltip-portal[data-popper-placement='left']
59
+ &:not(.bpk-tooltip--appear-active) {
72
60
  transform: translate(-1rem, 0);
73
61
  transition: none;
74
62
  }
@@ -82,55 +70,58 @@ $dark-background-color: $bpk-color-sky-gray;
82
70
  }
83
71
 
84
72
  &__arrow {
85
- @include bpk-layer-arrow($arrow-size);
86
-
87
- .bpk-tooltip-portal[x-placement='top'] & {
88
- @include bpk-layer-arrow-bottom($arrow-size);
73
+ position: aboslute;
74
+ width: $arrow-size;
75
+ height: $arrow-size;
76
+ transform: rotate(45deg);
77
+ border: $bpk-one-pixel-rem solid transparent;
78
+ background: inherit;
79
+ background-color: $bpk-color-white;
80
+
81
+ .bpk-tooltip-portal[data-popper-placement='top'] & {
82
+ bottom: $arrow-inset-margin;
83
+ border-right-color: $light-arrow-border-color;
84
+ border-bottom-color: $light-arrow-border-color;
89
85
  }
90
86
 
91
- .bpk-tooltip-portal[x-placement='right'] & {
92
- @include bpk-layer-arrow-left($arrow-size);
87
+ .bpk-tooltip-portal[data-popper-placement='right'] & {
88
+ left: $arrow-inset-margin;
89
+ border-bottom-color: $light-arrow-border-color;
90
+ border-left-color: $light-arrow-border-color;
93
91
  }
94
92
 
95
- .bpk-tooltip-portal[x-placement='bottom'] & {
96
- @include bpk-layer-arrow-top($arrow-size);
93
+ .bpk-tooltip-portal[data-popper-placement='bottom'] & {
94
+ top: $arrow-inset-margin;
95
+ border-top-color: $light-arrow-border-color;
96
+ border-left-color: $light-arrow-border-color;
97
97
  }
98
98
 
99
- .bpk-tooltip-portal[x-placement='left'] & {
100
- @include bpk-layer-arrow-right($arrow-size);
99
+ .bpk-tooltip-portal[data-popper-placement='left'] & {
100
+ right: $arrow-inset-margin;
101
+ border-top-color: $light-arrow-border-color;
102
+ border-right-color: $light-arrow-border-color;
101
103
  }
102
104
 
103
105
  &--dark {
104
- .bpk-tooltip-portal[x-placement='top'] & {
105
- @include bpk-layer-arrow-bottom(
106
- $arrow-size,
107
- $dark-background-color,
108
- $dark-background-color
109
- );
106
+ background-color: $dark-background-color;
107
+ .bpk-tooltip-portal[data-popper-placement='top'] & {
108
+ border-right-color: $dark-background-color;
109
+ border-bottom-color: $dark-background-color;
110
110
  }
111
111
 
112
- .bpk-tooltip-portal[x-placement='right'] & {
113
- @include bpk-layer-arrow-left(
114
- $arrow-size,
115
- $dark-background-color,
116
- $dark-background-color
117
- );
112
+ .bpk-tooltip-portal[data-popper-placement='right'] & {
113
+ border-bottom-color: $dark-background-color;
114
+ border-left-color: $dark-background-color;
118
115
  }
119
116
 
120
- .bpk-tooltip-portal[x-placement='bottom'] & {
121
- @include bpk-layer-arrow-top(
122
- $arrow-size,
123
- $dark-background-color,
124
- $dark-background-color
125
- );
117
+ .bpk-tooltip-portal[data-popper-placement='bottom'] & {
118
+ border-top-color: $dark-background-color;
119
+ border-left-color: $dark-background-color;
126
120
  }
127
121
 
128
- .bpk-tooltip-portal[x-placement='left'] & {
129
- @include bpk-layer-arrow-right(
130
- $arrow-size,
131
- $dark-background-color,
132
- $dark-background-color
133
- );
122
+ .bpk-tooltip-portal[data-popper-placement='left'] & {
123
+ border-top-color: $dark-background-color;
124
+ border-right-color: $dark-background-color;
134
125
  }
135
126
  }
136
127
  }
@@ -18,7 +18,7 @@
18
18
 
19
19
  /* @flow strict */
20
20
 
21
- import Popper from '@skyscanner/popper.js';
21
+ import { createPopper, basePlacements } from '@popperjs/core';
22
22
  import PropTypes from 'prop-types';
23
23
  import React, { Component, type Node, type Element } from 'react';
24
24
 
@@ -29,7 +29,6 @@ import BpkTooltip, {
29
29
  defaultProps as tooltipDefaultProps,
30
30
  type TooltipProps,
31
31
  } from './BpkTooltip';
32
- import { ARROW_ID } from './constants';
33
32
  import STYLES from './BpkTooltip.module.scss';
34
33
 
35
34
  const getClassName = cssModules(STYLES);
@@ -59,7 +58,7 @@ type State = {
59
58
  };
60
59
 
61
60
  class BpkTooltipPortal extends Component<Props, State> {
62
- popper: ?typeof Popper;
61
+ popper: ?typeof createPopper;
63
62
 
64
63
  targetRef: ?HTMLElement;
65
64
 
@@ -68,7 +67,7 @@ class BpkTooltipPortal extends Component<Props, State> {
68
67
  ariaLabel: PropTypes.string.isRequired,
69
68
  target: PropTypes.node.isRequired,
70
69
  children: PropTypes.node.isRequired,
71
- placement: PropTypes.oneOf(Popper.placements),
70
+ placement: PropTypes.oneOf(basePlacements),
72
71
  hideOnTouchDevices: PropTypes.bool,
73
72
  portalStyle: PropTypes.object, // eslint-disable-line react/forbid-prop-types
74
73
  portalClassName: PropTypes.string,
@@ -120,22 +119,32 @@ class BpkTooltipPortal extends Component<Props, State> {
120
119
  }
121
120
 
122
121
  onOpen = (tooltipElement: HTMLElement, targetElement: HTMLElement) => {
122
+ // The default modifiers for the popper
123
123
  // Note that GPU acceleration should be disabled otherwise Popper will use `translate3d`
124
124
  // which can cause blurriness in Safari and Chrome.
125
- this.popper = new Popper(targetElement, tooltipElement, {
126
- placement: this.props.placement,
127
- modifiers: {
128
- ...this.props.popperModifiers,
129
- computeStyle: {
125
+ const stdModifiers = [
126
+ {
127
+ name: 'computeStyles',
128
+ options: {
130
129
  gpuAcceleration: false,
131
130
  },
132
- arrow: {
133
- element: `#${ARROW_ID}`,
131
+ },
132
+ {
133
+ name: 'offset',
134
+ options: {
135
+ offset: [0, 8],
134
136
  },
135
137
  },
138
+ ];
139
+
140
+ this.popper = createPopper(targetElement, tooltipElement, {
141
+ placement: this.props.placement,
142
+ modifiers: this.props.popperModifiers
143
+ ? [...this.props.popperModifiers, ...stdModifiers]
144
+ : stdModifiers,
136
145
  });
137
146
 
138
- this.popper.scheduleUpdate();
147
+ this.popper.update();
139
148
  };
140
149
 
141
150
  beforeClose = (done: () => mixed) => {
@@ -0,0 +1,25 @@
1
+ {
2
+ "name": "bpk-react-utils",
3
+ "version": "4.1.2",
4
+ "description": "Utilities for Backpack's React components.",
5
+ "license": "Apache-2.0",
6
+ "repository": {
7
+ "type": "git",
8
+ "url": "git@github.com:Skyscanner/backpack.git"
9
+ },
10
+ "author": "Backpack Design System <backpack@skyscanner.net>",
11
+ "main": "index.js",
12
+ "publishConfig": {
13
+ "registry": "https://registry.npmjs.org/"
14
+ },
15
+ "gitHead": "c2217d61875a1f3aa2bb9ed9583c50e3f1523501",
16
+ "dependencies": {
17
+ "object-assign": "^4.1.1",
18
+ "prop-types": "^15.7.2",
19
+ "react-transition-group": "^2.5.3"
20
+ },
21
+ "peerDependencies": {
22
+ "react": "^16.3.0 || ^17.0.0",
23
+ "react-dom": "^16.3.0 || ^17.0.0"
24
+ }
25
+ }
@@ -0,0 +1,25 @@
1
+ {
2
+ "name": "bpk-scrim-utils",
3
+ "version": "5.1.9",
4
+ "description": "Higher order component that adds an overlay behind components and manages scroll states.",
5
+ "license": "Apache-2.0",
6
+ "repository": {
7
+ "type": "git",
8
+ "url": "git@github.com:Skyscanner/backpack.git"
9
+ },
10
+ "author": "Backpack Design System <backpack@skyscanner.net>",
11
+ "main": "index.js",
12
+ "publishConfig": {
13
+ "registry": "https://registry.npmjs.org/"
14
+ },
15
+ "gitHead": "5c156b97cb0ba5e75851d3c763334578714c895e",
16
+ "dependencies": {
17
+ "a11y-focus-scope": "^1.1.3",
18
+ "a11y-focus-store": "^1.0.0",
19
+ "bpk-mixins": "^31.1.1",
20
+ "bpk-react-utils": "^4.1.2"
21
+ },
22
+ "peerDependencies": {
23
+ "react": "^16.3.0 || ^17.0.0"
24
+ }
25
+ }
@@ -0,0 +1,23 @@
1
+ {
2
+ "name": "bpk-theming",
3
+ "version": "2.1.6",
4
+ "description": "Backpack theming utlities.",
5
+ "license": "Apache-2.0",
6
+ "repository": {
7
+ "type": "git",
8
+ "url": "git@github.com:Skyscanner/backpack.git"
9
+ },
10
+ "author": "Backpack Design System <backpack@skyscanner.net>",
11
+ "main": "index.js",
12
+ "publishConfig": {
13
+ "registry": "https://registry.npmjs.org/"
14
+ },
15
+ "gitHead": "c2217d61875a1f3aa2bb9ed9583c50e3f1523501",
16
+ "dependencies": {
17
+ "@skyscanner/bpk-foundations-web": "^8.0.0",
18
+ "prop-types": "^15.7.2"
19
+ },
20
+ "peerDependencies": {
21
+ "react": "^16.0.0 || ^17.0.0"
22
+ }
23
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@skyscanner/backpack-web",
3
- "version": "2.0.1",
3
+ "version": "3.1.0",
4
4
  "description": "Backpack Design System web library",
5
5
  "repository": {
6
6
  "type": "git",
@@ -22,14 +22,16 @@
22
22
  "access": "public"
23
23
  },
24
24
  "dependencies": {
25
+ "@popperjs/core": "^2.11.5",
26
+ "@react-google-maps/api": "^2.12.0",
25
27
  "@skyscanner/bpk-foundations-web": "^8.0.0",
26
- "@skyscanner/popper.js": "^1.12.9-beta.1",
28
+ "@skyscanner/bpk-svgs": "^14.1.9",
27
29
  "a11y-focus-scope": "^1.1.3",
28
30
  "a11y-focus-store": "^1.0.0",
29
31
  "bpk-mixins": "^31.1.1",
30
- "date-fns": "^2.21.1",
31
32
  "d3-path": "^2.0.0",
32
33
  "d3-scale": "^4.0.2",
34
+ "date-fns": "^2.21.1",
33
35
  "intersection-observer": "^0.7.0",
34
36
  "lodash": "^4.17.20",
35
37
  "lodash.clamp": "^4.0.3",