|
1 | 1 | import React, { ComponentType } from 'react'; |
2 | | -import PropTypes from 'prop-types'; |
3 | 2 | import classnames from 'classnames'; |
4 | 3 | import RelativePortal from 'react-relative-portal'; |
5 | 4 | import { ComponentSettingsContext } from './ComponentSettings'; |
@@ -237,16 +236,6 @@ export function autoAlign(options: AutoAlignOptions) { |
237 | 236 | content: any; |
238 | 237 | /* eslint-enable react/sort-comp */ |
239 | 238 |
|
240 | | - context!: Pick< |
241 | | - ComponentSettingsContext, |
242 | | - 'portalClassName' | 'portalStyle' |
243 | | - >; |
244 | | - |
245 | | - static contextTypes = { |
246 | | - portalClassName: PropTypes.string, |
247 | | - portalStyle: PropTypes.object, // eslint-disable-line react/forbid-prop-types |
248 | | - }; |
249 | | - |
250 | 239 | constructor(props: ResultProps) { |
251 | 240 | super(props); |
252 | 241 | this.state = { |
@@ -380,10 +369,6 @@ export function autoAlign(options: AutoAlignOptions) { |
380 | 369 | children, |
381 | 370 | ...pprops |
382 | 371 | } = this.props; |
383 | | - const { |
384 | | - portalClassName = 'slds-scope', |
385 | | - portalStyle = { position: 'absolute', top: 0, left: 0, right: 0 }, |
386 | | - } = this.context; |
387 | 372 | // eslint-disable-next-line prefer-const |
388 | 373 | let { top, left } = calcAlignmentRect( |
389 | 374 | triggerNodeRect, |
@@ -411,22 +396,37 @@ export function autoAlign(options: AutoAlignOptions) { |
411 | 396 | content |
412 | 397 | ) : ( |
413 | 398 | <div ref={(node) => (this.node = node)}> |
414 | | - <RelativePortal |
415 | | - fullWidth |
416 | | - left={offsetLeft} |
417 | | - right={-offsetLeft} |
418 | | - top={offsetTop} |
419 | | - onScroll={ignoreFirstCall(this.requestRecalcAlignment)} |
420 | | - component='div' |
421 | | - className={classnames(portalClassName, additionalPortalClassName)} |
422 | | - style={{ ...portalStyle, ...additionalPortalStyle }} |
423 | | - > |
424 | | - {this.state.triggerNodeRect ? ( |
425 | | - content |
426 | | - ) : ( |
427 | | - <div className='slds-hidden'>{content}</div> |
| 399 | + <ComponentSettingsContext.Consumer> |
| 400 | + {({ |
| 401 | + portalClassName = 'slds-scope', |
| 402 | + portalStyle = { |
| 403 | + position: 'absolute', |
| 404 | + top: 0, |
| 405 | + left: 0, |
| 406 | + right: 0, |
| 407 | + }, |
| 408 | + }) => ( |
| 409 | + <RelativePortal |
| 410 | + fullWidth |
| 411 | + left={offsetLeft} |
| 412 | + right={-offsetLeft} |
| 413 | + top={offsetTop} |
| 414 | + onScroll={ignoreFirstCall(this.requestRecalcAlignment)} |
| 415 | + component='div' |
| 416 | + className={classnames( |
| 417 | + portalClassName, |
| 418 | + additionalPortalClassName |
| 419 | + )} |
| 420 | + style={{ ...portalStyle, ...additionalPortalStyle }} |
| 421 | + > |
| 422 | + {this.state.triggerNodeRect ? ( |
| 423 | + content |
| 424 | + ) : ( |
| 425 | + <div className='slds-hidden'>{content}</div> |
| 426 | + )} |
| 427 | + </RelativePortal> |
428 | 428 | )} |
429 | | - </RelativePortal> |
| 429 | + </ComponentSettingsContext.Consumer> |
430 | 430 | </div> |
431 | 431 | ); |
432 | 432 | } |
|
0 commit comments