@atlaskit/popper 6.1.0 → 6.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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,26 @@
1
1
  # @atlaskit/popper
2
2
 
3
+ ## 6.3.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [#138688](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/138688)
8
+ [`961d97994618c`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/961d97994618c) -
9
+ Adds `shouldFitViewport` prop which will apply `max-width` and `max-height` to contain the
10
+ popper/popup within the viewport.
11
+
12
+ ## 6.2.0
13
+
14
+ ### Minor Changes
15
+
16
+ - [#127511](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/127511)
17
+ [`db30e29344013`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/db30e29344013) -
18
+ Widening range of `react` and `react-dom` peer dependencies from `^16.8.0 || ^17.0.0 || ~18.2.0`
19
+ to the wider range of ``^16.8.0 || ^17.0.0 || ^18.0.0` (where applicable).
20
+
21
+ This change has been done to enable usage of `react@18.3` as well as to have a consistent peer
22
+ dependency range for `react` and `react-dom` for `/platform` packages.
23
+
3
24
  ## 6.1.0
4
25
 
5
26
  ### Minor Changes
@@ -0,0 +1,94 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.getMaxSizeModifiers = getMaxSizeModifiers;
8
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
9
+ function getMaxSizeModifiers(_ref) {
10
+ var viewportPadding = _ref.viewportPadding;
11
+ return [{
12
+ /**
13
+ * Performing DOM measurements in the 'read' phase,
14
+ * which is the convention for popper modifiers
15
+ */
16
+ name: 'maxSizeData',
17
+ enabled: true,
18
+ phase: 'read',
19
+ fn: function fn(_ref2) {
20
+ var state = _ref2.state,
21
+ name = _ref2.name;
22
+ if (!window.visualViewport) {
23
+ return;
24
+ }
25
+ state.modifiersData[name] = {
26
+ viewport: {
27
+ width: window.visualViewport.width,
28
+ height: window.visualViewport.height
29
+ }
30
+ };
31
+ }
32
+ }, {
33
+ /**
34
+ * Applying max size CSS
35
+ */
36
+ name: 'maxSize',
37
+ enabled: true,
38
+ phase: 'beforeWrite',
39
+ requiresIfExists: ['offset', 'preventOverflow', 'flip'],
40
+ fn: function fn(_ref3) {
41
+ var _data$viewport, _data$viewport2, _state$modifiersData$2, _state$modifiersData;
42
+ var state = _ref3.state;
43
+ var data = state.modifiersData.maxSizeData;
44
+ if (typeof (data === null || data === void 0 || (_data$viewport = data.viewport) === null || _data$viewport === void 0 ? void 0 : _data$viewport.width) !== 'number' || typeof (data === null || data === void 0 || (_data$viewport2 = data.viewport) === null || _data$viewport2 === void 0 ? void 0 : _data$viewport2.height) !== 'number') {
45
+ // This shouldn't occur in a real browser but might in non-browser test environments
46
+ return;
47
+ }
48
+ var viewport = data.viewport;
49
+ var _state$modifiersData$ = state.modifiersData.popperOffsets,
50
+ popperOffsets = _state$modifiersData$ === void 0 ? {
51
+ x: 0,
52
+ y: 0
53
+ } : _state$modifiersData$;
54
+ var _state$placement$spli = state.placement.split('-'),
55
+ _state$placement$spli2 = (0, _slicedToArray2.default)(_state$placement$spli, 1),
56
+ basePlacement = _state$placement$spli2[0];
57
+ var placementOffset = (_state$modifiersData$2 = (_state$modifiersData = state.modifiersData) === null || _state$modifiersData === void 0 || (_state$modifiersData = _state$modifiersData.offset) === null || _state$modifiersData === void 0 ? void 0 : _state$modifiersData[state.placement]) !== null && _state$modifiersData$2 !== void 0 ? _state$modifiersData$2 : {
58
+ x: 0,
59
+ y: 0
60
+ };
61
+
62
+ // By default we set these to the entire viewport (minus padding)
63
+ // Each placement direction will overwrite one of these
64
+ var maxWidth = viewport.width - 2 * viewportPadding;
65
+ var maxHeight = viewport.height - 2 * viewportPadding;
66
+ if (basePlacement === 'top') {
67
+ maxHeight = state.rects.reference.y +
68
+ // Viewport-relative position of reference element
69
+ placementOffset.y -
70
+ // Space between popper and reference
71
+ viewportPadding;
72
+ }
73
+ if (basePlacement === 'bottom') {
74
+ maxHeight = viewport.height - popperOffsets.y -
75
+ // Viewport-relative position of popper
76
+ viewportPadding;
77
+ }
78
+ if (basePlacement === 'left') {
79
+ maxWidth = state.rects.reference.x +
80
+ // Viewport-relative position of reference element
81
+ placementOffset.x -
82
+ // Space between popper and reference
83
+ viewportPadding;
84
+ }
85
+ if (basePlacement === 'right') {
86
+ maxWidth = viewport.width - popperOffsets.x -
87
+ // Viewport-relative position of popper
88
+ viewportPadding;
89
+ }
90
+ state.styles.popper.maxWidth = "".concat(maxWidth, "px");
91
+ state.styles.popper.maxHeight = "".concat(maxHeight, "px");
92
+ }
93
+ }];
94
+ }
@@ -16,25 +16,21 @@ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers
16
16
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
17
17
  var _react = _interopRequireWildcard(require("react"));
18
18
  var _reactPopper = require("react-popper");
19
+ var _maxSize = require("./max-size");
19
20
  var _core = require("@popperjs/core");
20
21
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
21
22
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
22
23
  // Export types from PopperJS / React Popper
23
24
 
25
+ var viewportPadding = 5;
24
26
  var constantModifiers = [{
25
27
  name: 'flip',
26
28
  options: {
27
29
  flipVariations: false,
28
- padding: 5,
30
+ padding: viewportPadding,
29
31
  boundary: 'clippingParents',
30
32
  rootBoundary: 'viewport'
31
33
  }
32
- }, {
33
- name: 'preventOverflow',
34
- options: {
35
- padding: 5,
36
- rootBoundary: 'document'
37
- }
38
34
  }];
39
35
  function defaultChildrenFn() {
40
36
  return null;
@@ -51,20 +47,31 @@ function Popper(_ref) {
51
47
  referenceElement = _ref$referenceElement === void 0 ? undefined : _ref$referenceElement,
52
48
  modifiers = _ref.modifiers,
53
49
  _ref$strategy = _ref.strategy,
54
- strategy = _ref$strategy === void 0 ? 'fixed' : _ref$strategy;
50
+ strategy = _ref$strategy === void 0 ? 'fixed' : _ref$strategy,
51
+ _ref$shouldFitViewpor = _ref.shouldFitViewport,
52
+ shouldFitViewport = _ref$shouldFitViewpor === void 0 ? false : _ref$shouldFitViewpor;
55
53
  var _offset = (0, _slicedToArray2.default)(offset, 2),
56
54
  offsetX = _offset[0],
57
55
  offsetY = _offset[1];
58
- // Merge a new offset modifier only if new offset values passed in
59
56
  var internalModifiers = (0, _react.useMemo)(function () {
57
+ var preventOverflowModifier = {
58
+ name: 'preventOverflow',
59
+ options: {
60
+ padding: viewportPadding,
61
+ rootBoundary: shouldFitViewport ? 'viewport' : 'document'
62
+ }
63
+ };
60
64
  var offsetModifier = {
61
65
  name: 'offset',
62
66
  options: {
63
67
  offset: [offsetX, offsetY]
64
68
  }
65
69
  };
66
- return [].concat(constantModifiers, [offsetModifier]);
67
- }, [offsetX, offsetY]);
70
+ var maxSizeModifiers = shouldFitViewport ? (0, _maxSize.getMaxSizeModifiers)({
71
+ viewportPadding: viewportPadding
72
+ }) : [];
73
+ return [].concat(constantModifiers, [preventOverflowModifier, offsetModifier], (0, _toConsumableArray2.default)(maxSizeModifiers));
74
+ }, [offsetX, offsetY, shouldFitViewport]);
68
75
 
69
76
  // Merge custom props and memoize
70
77
  var mergedModifiers = (0, _react.useMemo)(function () {
@@ -0,0 +1,90 @@
1
+ export function getMaxSizeModifiers({
2
+ viewportPadding
3
+ }) {
4
+ return [{
5
+ /**
6
+ * Performing DOM measurements in the 'read' phase,
7
+ * which is the convention for popper modifiers
8
+ */
9
+ name: 'maxSizeData',
10
+ enabled: true,
11
+ phase: 'read',
12
+ fn({
13
+ state,
14
+ name
15
+ }) {
16
+ if (!window.visualViewport) {
17
+ return;
18
+ }
19
+ state.modifiersData[name] = {
20
+ viewport: {
21
+ width: window.visualViewport.width,
22
+ height: window.visualViewport.height
23
+ }
24
+ };
25
+ }
26
+ }, {
27
+ /**
28
+ * Applying max size CSS
29
+ */
30
+ name: 'maxSize',
31
+ enabled: true,
32
+ phase: 'beforeWrite',
33
+ requiresIfExists: ['offset', 'preventOverflow', 'flip'],
34
+ fn({
35
+ state
36
+ }) {
37
+ var _data$viewport, _data$viewport2, _state$modifiersData$, _state$modifiersData, _state$modifiersData$2;
38
+ const data = state.modifiersData.maxSizeData;
39
+ if (typeof (data === null || data === void 0 ? void 0 : (_data$viewport = data.viewport) === null || _data$viewport === void 0 ? void 0 : _data$viewport.width) !== 'number' || typeof (data === null || data === void 0 ? void 0 : (_data$viewport2 = data.viewport) === null || _data$viewport2 === void 0 ? void 0 : _data$viewport2.height) !== 'number') {
40
+ // This shouldn't occur in a real browser but might in non-browser test environments
41
+ return;
42
+ }
43
+ const {
44
+ viewport
45
+ } = data;
46
+ const {
47
+ popperOffsets = {
48
+ x: 0,
49
+ y: 0
50
+ }
51
+ } = state.modifiersData;
52
+ const [basePlacement] = state.placement.split('-');
53
+ const placementOffset = (_state$modifiersData$ = (_state$modifiersData = state.modifiersData) === null || _state$modifiersData === void 0 ? void 0 : (_state$modifiersData$2 = _state$modifiersData.offset) === null || _state$modifiersData$2 === void 0 ? void 0 : _state$modifiersData$2[state.placement]) !== null && _state$modifiersData$ !== void 0 ? _state$modifiersData$ : {
54
+ x: 0,
55
+ y: 0
56
+ };
57
+
58
+ // By default we set these to the entire viewport (minus padding)
59
+ // Each placement direction will overwrite one of these
60
+ let maxWidth = viewport.width - 2 * viewportPadding;
61
+ let maxHeight = viewport.height - 2 * viewportPadding;
62
+ if (basePlacement === 'top') {
63
+ maxHeight = state.rects.reference.y +
64
+ // Viewport-relative position of reference element
65
+ placementOffset.y -
66
+ // Space between popper and reference
67
+ viewportPadding;
68
+ }
69
+ if (basePlacement === 'bottom') {
70
+ maxHeight = viewport.height - popperOffsets.y -
71
+ // Viewport-relative position of popper
72
+ viewportPadding;
73
+ }
74
+ if (basePlacement === 'left') {
75
+ maxWidth = state.rects.reference.x +
76
+ // Viewport-relative position of reference element
77
+ placementOffset.x -
78
+ // Space between popper and reference
79
+ viewportPadding;
80
+ }
81
+ if (basePlacement === 'right') {
82
+ maxWidth = viewport.width - popperOffsets.x -
83
+ // Viewport-relative position of popper
84
+ viewportPadding;
85
+ }
86
+ state.styles.popper.maxWidth = `${maxWidth}px`;
87
+ state.styles.popper.maxHeight = `${maxHeight}px`;
88
+ }
89
+ }];
90
+ }
@@ -1,22 +1,18 @@
1
1
  import React, { useMemo } from 'react';
2
2
  import { Popper as ReactPopper } from 'react-popper';
3
+ import { getMaxSizeModifiers } from './max-size';
3
4
  export { placements } from '@popperjs/core';
4
5
  // Export types from PopperJS / React Popper
5
6
 
7
+ const viewportPadding = 5;
6
8
  const constantModifiers = [{
7
9
  name: 'flip',
8
10
  options: {
9
11
  flipVariations: false,
10
- padding: 5,
12
+ padding: viewportPadding,
11
13
  boundary: 'clippingParents',
12
14
  rootBoundary: 'viewport'
13
15
  }
14
- }, {
15
- name: 'preventOverflow',
16
- options: {
17
- padding: 5,
18
- rootBoundary: 'document'
19
- }
20
16
  }];
21
17
  function defaultChildrenFn() {
22
18
  return null;
@@ -28,19 +24,29 @@ export function Popper({
28
24
  placement = 'bottom-start',
29
25
  referenceElement = undefined,
30
26
  modifiers,
31
- strategy = 'fixed'
27
+ strategy = 'fixed',
28
+ shouldFitViewport = false
32
29
  }) {
33
30
  const [offsetX, offsetY] = offset;
34
- // Merge a new offset modifier only if new offset values passed in
35
31
  const internalModifiers = useMemo(() => {
32
+ const preventOverflowModifier = {
33
+ name: 'preventOverflow',
34
+ options: {
35
+ padding: viewportPadding,
36
+ rootBoundary: shouldFitViewport ? 'viewport' : 'document'
37
+ }
38
+ };
36
39
  const offsetModifier = {
37
40
  name: 'offset',
38
41
  options: {
39
42
  offset: [offsetX, offsetY]
40
43
  }
41
44
  };
42
- return [...constantModifiers, offsetModifier];
43
- }, [offsetX, offsetY]);
45
+ const maxSizeModifiers = shouldFitViewport ? getMaxSizeModifiers({
46
+ viewportPadding
47
+ }) : [];
48
+ return [...constantModifiers, preventOverflowModifier, offsetModifier, ...maxSizeModifiers];
49
+ }, [offsetX, offsetY, shouldFitViewport]);
44
50
 
45
51
  // Merge custom props and memoize
46
52
  const mergedModifiers = useMemo(() => {
@@ -0,0 +1,87 @@
1
+ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
2
+ export function getMaxSizeModifiers(_ref) {
3
+ var viewportPadding = _ref.viewportPadding;
4
+ return [{
5
+ /**
6
+ * Performing DOM measurements in the 'read' phase,
7
+ * which is the convention for popper modifiers
8
+ */
9
+ name: 'maxSizeData',
10
+ enabled: true,
11
+ phase: 'read',
12
+ fn: function fn(_ref2) {
13
+ var state = _ref2.state,
14
+ name = _ref2.name;
15
+ if (!window.visualViewport) {
16
+ return;
17
+ }
18
+ state.modifiersData[name] = {
19
+ viewport: {
20
+ width: window.visualViewport.width,
21
+ height: window.visualViewport.height
22
+ }
23
+ };
24
+ }
25
+ }, {
26
+ /**
27
+ * Applying max size CSS
28
+ */
29
+ name: 'maxSize',
30
+ enabled: true,
31
+ phase: 'beforeWrite',
32
+ requiresIfExists: ['offset', 'preventOverflow', 'flip'],
33
+ fn: function fn(_ref3) {
34
+ var _data$viewport, _data$viewport2, _state$modifiersData$2, _state$modifiersData;
35
+ var state = _ref3.state;
36
+ var data = state.modifiersData.maxSizeData;
37
+ if (typeof (data === null || data === void 0 || (_data$viewport = data.viewport) === null || _data$viewport === void 0 ? void 0 : _data$viewport.width) !== 'number' || typeof (data === null || data === void 0 || (_data$viewport2 = data.viewport) === null || _data$viewport2 === void 0 ? void 0 : _data$viewport2.height) !== 'number') {
38
+ // This shouldn't occur in a real browser but might in non-browser test environments
39
+ return;
40
+ }
41
+ var viewport = data.viewport;
42
+ var _state$modifiersData$ = state.modifiersData.popperOffsets,
43
+ popperOffsets = _state$modifiersData$ === void 0 ? {
44
+ x: 0,
45
+ y: 0
46
+ } : _state$modifiersData$;
47
+ var _state$placement$spli = state.placement.split('-'),
48
+ _state$placement$spli2 = _slicedToArray(_state$placement$spli, 1),
49
+ basePlacement = _state$placement$spli2[0];
50
+ var placementOffset = (_state$modifiersData$2 = (_state$modifiersData = state.modifiersData) === null || _state$modifiersData === void 0 || (_state$modifiersData = _state$modifiersData.offset) === null || _state$modifiersData === void 0 ? void 0 : _state$modifiersData[state.placement]) !== null && _state$modifiersData$2 !== void 0 ? _state$modifiersData$2 : {
51
+ x: 0,
52
+ y: 0
53
+ };
54
+
55
+ // By default we set these to the entire viewport (minus padding)
56
+ // Each placement direction will overwrite one of these
57
+ var maxWidth = viewport.width - 2 * viewportPadding;
58
+ var maxHeight = viewport.height - 2 * viewportPadding;
59
+ if (basePlacement === 'top') {
60
+ maxHeight = state.rects.reference.y +
61
+ // Viewport-relative position of reference element
62
+ placementOffset.y -
63
+ // Space between popper and reference
64
+ viewportPadding;
65
+ }
66
+ if (basePlacement === 'bottom') {
67
+ maxHeight = viewport.height - popperOffsets.y -
68
+ // Viewport-relative position of popper
69
+ viewportPadding;
70
+ }
71
+ if (basePlacement === 'left') {
72
+ maxWidth = state.rects.reference.x +
73
+ // Viewport-relative position of reference element
74
+ placementOffset.x -
75
+ // Space between popper and reference
76
+ viewportPadding;
77
+ }
78
+ if (basePlacement === 'right') {
79
+ maxWidth = viewport.width - popperOffsets.x -
80
+ // Viewport-relative position of popper
81
+ viewportPadding;
82
+ }
83
+ state.styles.popper.maxWidth = "".concat(maxWidth, "px");
84
+ state.styles.popper.maxHeight = "".concat(maxHeight, "px");
85
+ }
86
+ }];
87
+ }
@@ -2,23 +2,19 @@ import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
2
2
  import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
3
3
  import React, { useMemo } from 'react';
4
4
  import { Popper as ReactPopper } from 'react-popper';
5
+ import { getMaxSizeModifiers } from './max-size';
5
6
  export { placements } from '@popperjs/core';
6
7
  // Export types from PopperJS / React Popper
7
8
 
9
+ var viewportPadding = 5;
8
10
  var constantModifiers = [{
9
11
  name: 'flip',
10
12
  options: {
11
13
  flipVariations: false,
12
- padding: 5,
14
+ padding: viewportPadding,
13
15
  boundary: 'clippingParents',
14
16
  rootBoundary: 'viewport'
15
17
  }
16
- }, {
17
- name: 'preventOverflow',
18
- options: {
19
- padding: 5,
20
- rootBoundary: 'document'
21
- }
22
18
  }];
23
19
  function defaultChildrenFn() {
24
20
  return null;
@@ -35,20 +31,31 @@ export function Popper(_ref) {
35
31
  referenceElement = _ref$referenceElement === void 0 ? undefined : _ref$referenceElement,
36
32
  modifiers = _ref.modifiers,
37
33
  _ref$strategy = _ref.strategy,
38
- strategy = _ref$strategy === void 0 ? 'fixed' : _ref$strategy;
34
+ strategy = _ref$strategy === void 0 ? 'fixed' : _ref$strategy,
35
+ _ref$shouldFitViewpor = _ref.shouldFitViewport,
36
+ shouldFitViewport = _ref$shouldFitViewpor === void 0 ? false : _ref$shouldFitViewpor;
39
37
  var _offset = _slicedToArray(offset, 2),
40
38
  offsetX = _offset[0],
41
39
  offsetY = _offset[1];
42
- // Merge a new offset modifier only if new offset values passed in
43
40
  var internalModifiers = useMemo(function () {
41
+ var preventOverflowModifier = {
42
+ name: 'preventOverflow',
43
+ options: {
44
+ padding: viewportPadding,
45
+ rootBoundary: shouldFitViewport ? 'viewport' : 'document'
46
+ }
47
+ };
44
48
  var offsetModifier = {
45
49
  name: 'offset',
46
50
  options: {
47
51
  offset: [offsetX, offsetY]
48
52
  }
49
53
  };
50
- return [].concat(constantModifiers, [offsetModifier]);
51
- }, [offsetX, offsetY]);
54
+ var maxSizeModifiers = shouldFitViewport ? getMaxSizeModifiers({
55
+ viewportPadding: viewportPadding
56
+ }) : [];
57
+ return [].concat(constantModifiers, [preventOverflowModifier, offsetModifier], _toConsumableArray(maxSizeModifiers));
58
+ }, [offsetX, offsetY, shouldFitViewport]);
52
59
 
53
60
  // Merge custom props and memoize
54
61
  var mergedModifiers = useMemo(function () {
@@ -0,0 +1,21 @@
1
+ export declare function getMaxSizeModifiers({ viewportPadding }: {
2
+ viewportPadding: number;
3
+ }): [{
4
+ /**
5
+ * Performing DOM measurements in the 'read' phase,
6
+ * which is the convention for popper modifiers
7
+ */
8
+ readonly name: "maxSizeData";
9
+ readonly enabled: true;
10
+ readonly phase: "read";
11
+ readonly fn: ({ state, name }: import("@popperjs/core").ModifierArguments<any>) => void;
12
+ }, {
13
+ /**
14
+ * Applying max size CSS
15
+ */
16
+ readonly name: "maxSize";
17
+ readonly enabled: true;
18
+ readonly phase: "beforeWrite";
19
+ readonly requiresIfExists: ["offset", "preventOverflow", "flip"];
20
+ readonly fn: ({ state }: import("@popperjs/core").ModifierArguments<any>) => void;
21
+ }];
@@ -32,5 +32,10 @@ export interface CustomPopperProps<Modifiers> {
32
32
  * Placement strategy used. Can be 'fixed' or 'absolute'
33
33
  */
34
34
  strategy?: PopperProps<Modifiers>['strategy'];
35
+ /**
36
+ * Determines if the popper will have a `max-width` and `max-height` set to
37
+ * constrain it to the viewport.
38
+ */
39
+ shouldFitViewport?: boolean;
35
40
  }
36
- export declare function Popper<CustomModifiers>({ children, offset, placement, referenceElement, modifiers, strategy, }: CustomPopperProps<CustomModifiers>): JSX.Element;
41
+ export declare function Popper<CustomModifiers>({ children, offset, placement, referenceElement, modifiers, strategy, shouldFitViewport, }: CustomPopperProps<CustomModifiers>): JSX.Element;
@@ -0,0 +1,28 @@
1
+ export declare function getMaxSizeModifiers({ viewportPadding }: {
2
+ viewportPadding: number;
3
+ }): [
4
+ {
5
+ /**
6
+ * Performing DOM measurements in the 'read' phase,
7
+ * which is the convention for popper modifiers
8
+ */
9
+ readonly name: "maxSizeData";
10
+ readonly enabled: true;
11
+ readonly phase: "read";
12
+ readonly fn: ({ state, name }: import("@popperjs/core").ModifierArguments<any>) => void;
13
+ },
14
+ {
15
+ /**
16
+ * Applying max size CSS
17
+ */
18
+ readonly name: "maxSize";
19
+ readonly enabled: true;
20
+ readonly phase: "beforeWrite";
21
+ readonly requiresIfExists: [
22
+ "offset",
23
+ "preventOverflow",
24
+ "flip"
25
+ ];
26
+ readonly fn: ({ state }: import("@popperjs/core").ModifierArguments<any>) => void;
27
+ }
28
+ ];
@@ -35,5 +35,10 @@ export interface CustomPopperProps<Modifiers> {
35
35
  * Placement strategy used. Can be 'fixed' or 'absolute'
36
36
  */
37
37
  strategy?: PopperProps<Modifiers>['strategy'];
38
+ /**
39
+ * Determines if the popper will have a `max-width` and `max-height` set to
40
+ * constrain it to the viewport.
41
+ */
42
+ shouldFitViewport?: boolean;
38
43
  }
39
- export declare function Popper<CustomModifiers>({ children, offset, placement, referenceElement, modifiers, strategy, }: CustomPopperProps<CustomModifiers>): JSX.Element;
44
+ export declare function Popper<CustomModifiers>({ children, offset, placement, referenceElement, modifiers, strategy, shouldFitViewport, }: CustomPopperProps<CustomModifiers>): JSX.Element;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlaskit/popper",
3
- "version": "6.1.0",
3
+ "version": "6.3.0",
4
4
  "description": "A wrapper for React Popper for situations which require a bespoke popup where other ADS components are deemed unsuitable",
5
5
  "publishConfig": {
6
6
  "registry": "https://registry.npmjs.org/"
@@ -16,10 +16,6 @@
16
16
  "atlaskit:src": "src/index.tsx",
17
17
  "atlassian": {
18
18
  "team": "Design System Team",
19
- "productPushConsumption": [
20
- "jira"
21
- ],
22
- "releaseModel": "continuous",
23
19
  "website": {
24
20
  "name": "Popper",
25
21
  "category": "Libraries"
@@ -32,12 +28,13 @@
32
28
  "react-popper": "^2.3.0"
33
29
  },
34
30
  "peerDependencies": {
35
- "react": "^16.8.0 || ^17.0.0 || ~18.2.0"
31
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
36
32
  },
37
33
  "devDependencies": {
38
34
  "@af/accessibility-testing": "*",
35
+ "@af/integration-testing": "*",
39
36
  "@af/visual-regression": "*",
40
- "@atlaskit/ds-lib": "^2.3.0",
37
+ "@atlaskit/ds-lib": "^2.5.0",
41
38
  "@atlaskit/ssr": "*",
42
39
  "@atlaskit/visual-regression": "*",
43
40
  "@emotion/react": "^11.7.1",