Skip to content

Commit 1e46cde

Browse files
committed
make createPortal usage optional
1 parent 6a04e6e commit 1e46cde

File tree

4 files changed

+904
-325
lines changed

4 files changed

+904
-325
lines changed

.size-snapshot.json

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,25 @@
11
{
22
"dist/index.js": {
3-
"bundled": 6280,
4-
"minified": 6280,
5-
"gzipped": 1974
3+
"bundled": 6334,
4+
"minified": 6334,
5+
"gzipped": 1993
66
},
77
"lib/cjs/index.js": {
8-
"bundled": 11982,
9-
"minified": 6536,
10-
"gzipped": 1904
8+
"bundled": 12177,
9+
"minified": 6590,
10+
"gzipped": 1926
1111
},
1212
"lib/esm/index.js": {
13-
"bundled": 11940,
14-
"minified": 6518,
15-
"gzipped": 1906,
13+
"bundled": 12135,
14+
"minified": 6572,
15+
"gzipped": 1928,
1616
"treeshaked": {
1717
"rollup": {
18-
"code": 6028,
18+
"code": 6082,
1919
"import_statements": 361
2020
},
2121
"webpack": {
22-
"code": 7329
22+
"code": 7385
2323
}
2424
}
2525
}

package.json

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -113,22 +113,22 @@
113113
"@babel/preset-env": "^7.1.0",
114114
"@babel/preset-react": "^7.0.0",
115115
"babel-eslint": "^10.0.1",
116-
"docz": "^0.11.2",
116+
"docz": "^0.12.5",
117117
"docz-plugin-css": "^0.11.0",
118118
"eslint": "^5.6.1",
119119
"eslint-config-prettier": "^3.1.0",
120-
"eslint-plugin-jsx-a11y": "^6.1.1",
121-
"eslint-plugin-prettier": "^2.7.0",
120+
"eslint-plugin-jsx-a11y": "^6.1.2",
121+
"eslint-plugin-prettier": "^3.0.0",
122122
"eslint-plugin-react": "^7.11.1",
123-
"gh-pages": "^2.0.0",
123+
"gh-pages": "^2.0.1",
124124
"pre-commit": "^1.2.2",
125125
"prettier": "^1.14.3",
126126
"react": "^16.5.2",
127127
"react-dom": "^16.5.2",
128128
"rimraf": "^2.6.2",
129-
"rollup": "^0.66.2",
129+
"rollup": "^0.66.6",
130130
"rollup-plugin-babel": "^4.0.3",
131-
"rollup-plugin-commonjs": "^9.1.8",
131+
"rollup-plugin-commonjs": "^9.2.0",
132132
"rollup-plugin-node-resolve": "^3.4.0",
133133
"rollup-plugin-size-snapshot": "^0.7.0",
134134
"rollup-plugin-terser": "^3.0.0"

src/TooltipTrigger.js

Lines changed: 52 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,10 @@ export default class TooltipTrigger extends PureComponent {
6565
* whether to close the tooltip when it's trigger is out of the boundary
6666
*/
6767
closeOnOutOfBoundaries: T.bool,
68+
/**
69+
* whether to React.createPortal for creating tooltip
70+
*/
71+
usePortal: T.bool,
6872
/**
6973
* modifiers passed directly to the underlying popper.js instance
7074
* For more information, refer to Popper.js’ modifier docs:
@@ -80,7 +84,8 @@ export default class TooltipTrigger extends PureComponent {
8084
placement: 'right',
8185
trigger: 'hover',
8286
closeOnOutOfBoundaries: true,
83-
onVisibilityChange: noop
87+
onVisibilityChange: noop,
88+
usePortal: true
8489
};
8590

8691
state = {
@@ -166,9 +171,53 @@ export default class TooltipTrigger extends PureComponent {
166171
placement,
167172
trigger,
168173
modifiers,
169-
closeOnOutOfBoundaries
174+
closeOnOutOfBoundaries,
175+
usePortal
170176
} = this.props;
171177

178+
const popper = (
179+
<Popper
180+
placement={placement}
181+
modifiers={{ ...DEFAULT_MODIFIERS, ...modifiers }}
182+
>
183+
{({
184+
ref,
185+
style,
186+
placement,
187+
arrowProps,
188+
outOfBoundaries,
189+
scheduleUpdate
190+
}) => (
191+
<TooltipContext.Consumer>
192+
{({
193+
addParentOutsideClickHandler,
194+
removeParentOutsideClickHandler,
195+
parentOutsideClickHandler
196+
}) => (
197+
<Tooltip
198+
{...{
199+
style,
200+
arrowProps,
201+
placement,
202+
trigger,
203+
closeOnOutOfBoundaries,
204+
tooltip,
205+
addParentOutsideClickHandler,
206+
removeParentOutsideClickHandler,
207+
parentOutsideClickHandler,
208+
outOfBoundaries,
209+
scheduleUpdate
210+
}}
211+
innerRef={ref}
212+
hideTooltip={this._hideTooltip}
213+
clearScheduled={this._clearScheduled}
214+
/>
215+
)}
216+
</TooltipContext.Consumer>
217+
)}
218+
</Popper>
219+
);
220+
172221
return (
173222
<Manager>
174223
<Reference>
@@ -177,49 +226,7 @@ export default class TooltipTrigger extends PureComponent {
177226
}
178227
</Reference>
179228
{this._getState() &&
180-
createPortal(
181-
<Popper
182-
placement={placement}
183-
modifiers={{ ...DEFAULT_MODIFIERS, ...modifiers }}
184-
>
185-
{({
186-
ref,
187-
style,
188-
placement,
189-
arrowProps,
190-
outOfBoundaries,
191-
scheduleUpdate
192-
}) => (
193-
<TooltipContext.Consumer>
194-
{({
195-
addParentOutsideClickHandler,
196-
removeParentOutsideClickHandler,
197-
parentOutsideClickHandler
198-
}) => (
199-
<Tooltip
200-
{...{
201-
style,
202-
arrowProps,
203-
placement,
204-
trigger,
205-
closeOnOutOfBoundaries,
206-
tooltip,
207-
addParentOutsideClickHandler,
208-
removeParentOutsideClickHandler,
209-
parentOutsideClickHandler,
210-
outOfBoundaries,
211-
scheduleUpdate
212-
}}
213-
innerRef={ref}
214-
hideTooltip={this._hideTooltip}
215-
clearScheduled={this._clearScheduled}
216-
/>
217-
)}
218-
</TooltipContext.Consumer>
219-
)}
220-
</Popper>,
221-
document.body
222-
)}
229+
(usePortal ? createPortal(popper, document.body) : popper)}
223230
</Manager>
224231
);
225232
}

0 commit comments

Comments
 (0)