Skip to content
This repository was archived by the owner on Dec 5, 2024. It is now read-only.

Commit 4c0954b

Browse files
author
Federico Zivolo
committed
feat: Added support for positionFixed option
1 parent 888b879 commit 4c0954b

File tree

5 files changed

+20
-3
lines changed

5 files changed

+20
-3
lines changed

README.md

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,13 +63,14 @@ familiar with it, please read more [on the official React documentation](https:/
6363
The `Manager` component is a simple wrapper that needs to surround all the other `react-popper` components in order
6464
to make them communicate with each others.
6565

66-
The `Popper` component accepts the properties `children`, `placement`, `modifiers`, and `eventsEneabled`.
66+
The `Popper` component accepts the properties `children`, `placement`, `modifiers`, `eventsEneabled` and `positionFixed`.
6767

6868
```jsx
6969
<Popper
7070
placement="right"
7171
modifiers={{ preventOverflow: { enabled: false } }}
7272
eventsEnabled={true}
73+
positionFixed={false}
7374
>
7475
{ props => [...] }
7576
</Popper>
@@ -128,6 +129,12 @@ eventsEnabled?: boolean;
128129
129130
Tells `react-popper` to enable or disable the [Popper.js event listeners](https://popper.js.org/popper-documentation.html#Popper.Defaults.eventsEnabled). `true` by default.
130131
132+
##### `positionFixed`
133+
134+
Set this property to `true` to tell Popper.js to use the `position: fixed` strategy
135+
to position the popper element. By default it's false, meaning that it will use the
136+
`position: absolute` strategy.
137+
131138
##### `modifiers`
132139
133140
```js

src/Popper.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ type PopperProps = {
3030
modifiers?: Modifiers,
3131
placement?: Placement,
3232
eventsEnabled?: boolean,
33+
positionFixed?: boolean,
3334
referenceElement?: ReferenceElement,
3435
children: RenderProp,
3536
};
@@ -54,6 +55,7 @@ export class Popper extends Component<PopperProps, PopperState> {
5455
placement: 'bottom',
5556
eventsEnabled: true,
5657
referenceElement: undefined,
58+
positionFixed: false,
5759
};
5860

5961
state = {
@@ -78,6 +80,7 @@ export class Popper extends Component<PopperProps, PopperState> {
7880
getOptions = () => ({
7981
placement: this.props.placement,
8082
eventsEnabled: this.props.eventsEnabled,
83+
positionFixed: this.props.positionFixed,
8184
modifiers: {
8285
...this.props.modifiers,
8386
arrow: {
@@ -151,7 +154,8 @@ export class Popper extends Component<PopperProps, PopperState> {
151154
this.props.eventsEnabled !== prevProps.eventsEnabled ||
152155
this.state.arrowNode !== prevState.arrowNode ||
153156
this.state.popperNode !== prevState.popperNode ||
154-
this.props.referenceElement !== prevProps.referenceElement
157+
this.props.referenceElement !== prevProps.referenceElement ||
158+
this.props.positionFixed !== prevProps.positionFixed
155159
) {
156160
this.updatePopperInstance();
157161
}

src/__snapshots__/Popper.test.js.snap

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ exports[`Popper component renders the expected markup 1`] = `
44
<Popper
55
eventsEnabled={true}
66
placement="bottom"
7+
positionFixed={false}
78
referenceElement={<div />}
89
>
910
<div

typings/react-popper.d.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ interface PopperProps {
1717
modifiers?: PopperJS.Modifiers;
1818
placement?: PopperJS.Placement;
1919
eventsEnabled?: boolean;
20+
positionFixed?: boolean;
2021
children: (props: ({
2122
ref: (ref: HTMLElement | null) => void,
2223
style: React.CSSProperties,

typings/tests/main-test.tsx

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,11 @@ import { Manager, Reference, Popper } from '../..';
44
const Test = () => (
55
<Manager>
66
<Reference>{({ ref }) => <div ref={ref} />}</Reference>
7-
<Popper>
7+
<Popper
8+
eventsEnabled
9+
positionFixed
10+
modifiers={{ flip: { enabled: false } }}
11+
>
812
{({ ref, style, placement, scheduleUpdate, arrowProps }) => (
913
<div
1014
ref={ref}

0 commit comments

Comments
 (0)