UNPKG

1.76 kBJavaScriptView Raw
1function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
2
3import * as React from 'react';
4import PortalConsumer from './PortalConsumer';
5import PortalHost, { PortalContext } from './PortalHost';
6import { Provider as SettingsProvider, Consumer as SettingsConsumer } from '../../core/settings';
7import { ThemeProvider, withTheme } from '../../core/theming';
8
9/**
10 * Portal allows to render a component at a different place in the parent tree.
11 * You can use it to render content which should appear above other elements, similar to `Modal`.
12 * It requires a [`Portal.Host`](portal-host.html) component to be rendered somewhere in the parent tree.
13 *
14 * ## Usage
15 * ```js
16 * import * as React from 'react';
17 * import { Portal, Text } from 'react-native-paper';
18 *
19 * const MyComponent = () => (
20 * <Portal>
21 * <Text>This is rendered at a different place</Text>
22 * </Portal>
23 * );
24 *
25 * export default MyComponent;
26 * ```
27 */
28class Portal extends React.Component {
29 // @component ./PortalHost.tsx
30 render() {
31 const {
32 children,
33 theme
34 } = this.props;
35 return /*#__PURE__*/React.createElement(SettingsConsumer, null, settings => /*#__PURE__*/React.createElement(PortalContext.Consumer, null, manager => /*#__PURE__*/React.createElement(PortalConsumer, {
36 manager: manager
37 }, /*#__PURE__*/React.createElement(SettingsProvider, {
38 value: settings
39 }, /*#__PURE__*/React.createElement(ThemeProvider, {
40 theme: theme
41 }, children)))));
42 }
43
44}
45
46_defineProperty(Portal, "Host", PortalHost);
47
48export default withTheme(Portal);
49//# sourceMappingURL=Portal.js.map
\No newline at end of file