diff --git a/package-lock.json b/package-lock.json index 2321cd2cf..a0c6f82dc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -16549,9 +16549,9 @@ "dev": true }, "react-popper": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/react-popper/-/react-popper-1.0.0.tgz", - "integrity": "sha1-uZRSFE6P5KzHf6PZWajHngemUIQ=", + "version": "1.0.0-beta.6", + "resolved": "https://registry.npmjs.org/react-popper/-/react-popper-1.0.0-beta.6.tgz", + "integrity": "sha1-yyeirFatzLr1+cQTI4cokGkkCDQ=", "requires": { "babel-runtime": "6.x.x", "create-react-context": "^0.2.1", diff --git a/package.json b/package.json index 49b0d6ea4..8dc74e5d8 100644 --- a/package.json +++ b/package.json @@ -49,7 +49,7 @@ "performance-now": "^2.1.0", "rc-tooltip": "^3.7.2", "react-copy-to-clipboard": "^5.0.1", - "react-popper": "^1.14.3", + "react-popper": "^1.0.0-beta.6", "react-tooltip": "^3.6.1", "subscriptions-transport-ws": "^0.9.11", "uuid": "^3.2.1" diff --git a/src/core/client/stream/components/Comment.tsx b/src/core/client/stream/components/Comment.tsx index 7bb017b42..014989a51 100644 --- a/src/core/client/stream/components/Comment.tsx +++ b/src/core/client/stream/components/Comment.tsx @@ -1,10 +1,9 @@ import cn from "classnames"; import React from "react"; import { StatelessComponent } from "react"; -import CopyToClipboard from "react-copy-to-clipboard"; -import { Manager, Popper, Reference } from "react-popper"; -import { Button, Input, Popover, Typography } from "talk-ui/components"; +import { Typography } from "talk-ui/components"; import * as styles from "./Comment.css"; +import PermalinkPopover from "./PermalinkPopover"; export interface CommentProps { id: string; @@ -28,40 +27,8 @@ const Comment: StatelessComponent = props => { {props.author && props.author.username} {props.body} - - - {({ ref }) => ( - - )} - - - {({ ref, style, placement, arrowProps }) => ( -
- Popper element -
- )} -
-
- - - - - -
- } - > - - + ); diff --git a/src/core/client/stream/components/PermalinkPopover.tsx b/src/core/client/stream/components/PermalinkPopover.tsx new file mode 100644 index 000000000..cd110dfe3 --- /dev/null +++ b/src/core/client/stream/components/PermalinkPopover.tsx @@ -0,0 +1,25 @@ +import React from "react"; +import CopyToClipboard from "react-copy-to-clipboard"; +import { Button, Input, Popover } from "talk-ui/components"; + +class PermalinkPopover extends React.Component { + public render() { + const props = this.props; + return ( + + + + + + + } + > + + + ); + } +} + +export default PermalinkPopover; diff --git a/src/core/client/ui/components/Button/Button.tsx b/src/core/client/ui/components/Button/Button.tsx index dadb7a35d..127d16c2e 100644 --- a/src/core/client/ui/components/Button/Button.tsx +++ b/src/core/client/ui/components/Button/Button.tsx @@ -49,6 +49,7 @@ class Button extends React.Component { [classes.secondary]: secondary, }); + console.log(this.props); return ( ; children: React.ReactElement; + placement?: + | "auto-start" + | "auto" + | "auto-end" + | "top-start" + | "top" + | "top-end" + | "right-start" + | "right" + | "right-end" + | "bottom-end" + | "bottom" + | "bottom-start" + | "left-end" + | "left" + | "left-start"; } class Popover extends React.Component { public render() { - const { children, body } = this.props; + const { children, body, placement = "top" } = this.props; return ( {({ ref }) => React.cloneElement(children, { ref })} - {({ ref, placement, style }) => + {({ ref, style }) => React.cloneElement(body, { ref, style, - "data-placement": placement, }) } diff --git a/src/core/client/ui/hocs/withFowardedRefs.tsx b/src/core/client/ui/hocs/withFowardedRefs.tsx new file mode 100644 index 000000000..6fe7a726c --- /dev/null +++ b/src/core/client/ui/hocs/withFowardedRefs.tsx @@ -0,0 +1,9 @@ +import React from "react"; + +export function forwardRef( + WrappedComponent: React.ComponentType +): React.RefForwardingComponent { + return React.forwardRef((props, ref) => { + return ; + }); +}