diff --git a/src/core/client/stream/components/Comment.tsx b/src/core/client/stream/components/Comment.tsx index b594cf27d..cc13ae115 100644 --- a/src/core/client/stream/components/Comment.tsx +++ b/src/core/client/stream/components/Comment.tsx @@ -2,7 +2,7 @@ import cn from "classnames"; import React from "react"; import { StatelessComponent } from "react"; import CopyToClipboard from "react-copy-to-clipboard"; -import { Button, Input, Tooltip, Typography } from "talk-ui/components"; +import { Button, Input, Popover, Typography } from "talk-ui/components"; import * as styles from "./Comment.css"; export interface CommentProps { @@ -15,6 +15,8 @@ export interface CommentProps { gutterBottom?: boolean; } +// make a permalink popover + const Comment: StatelessComponent = props => { const rootClassName = cn(styles.root, props.className, { [styles.gutterBottom]: props.gutterBottom, @@ -26,26 +28,18 @@ const Comment: StatelessComponent = props => { {props.body}
- + +
+ } > - Share - - - - - { - console.log("ey"); - }} - > - - - + + ); diff --git a/src/core/client/tslint.json b/src/core/client/tslint.json index 9abc9b921..0079a6de1 100644 --- a/src/core/client/tslint.json +++ b/src/core/client/tslint.json @@ -1,20 +1,13 @@ { - "extends": [ - "../../../tslint.json", - "tslint-react" - ], + "extends": ["../../../tslint.json", "tslint-react"], "rules": { + "jsx-curly-spacing": false, "jsx-no-multiline-js": false, - "jsx-boolean-value": [ - true, - "never" - ] + "jsx-boolean-value": [true, "never"] }, "jsRules": { + "jsx-curly-spacing": false, "jsx-no-multiline-js": false, - "jsx-boolean-value": [ - true, - "never" - ] + "jsx-boolean-value": [true, "never"] } -} \ No newline at end of file +} diff --git a/src/core/client/ui/components/Tooltip/Tooltip.css b/src/core/client/ui/components/Popover/Popover.css similarity index 100% rename from src/core/client/ui/components/Tooltip/Tooltip.css rename to src/core/client/ui/components/Popover/Popover.css diff --git a/src/core/client/ui/components/Popover/Popover.tsx b/src/core/client/ui/components/Popover/Popover.tsx new file mode 100644 index 000000000..a3c2b9b4b --- /dev/null +++ b/src/core/client/ui/components/Popover/Popover.tsx @@ -0,0 +1,32 @@ +import React from "react"; +import { Manager, Popper, Reference } from "react-popper"; +// import * as styles from "./Popover.css"; + +interface InnerProps { + body: React.ReactElement; + children: React.ReactElement; +} + +class Popover extends React.Component { + public render() { + const { children, body } = this.props; + return ( + + + {({ ref }) => React.cloneElement(children, { ref })} + + + {({ ref, style, placement, arrowProps }) => + React.cloneElement(body, { + ref, + style, + "data-placement": placement, + }) + } + + + ); + } +} + +export default Popover; diff --git a/src/core/client/ui/components/Popover/index.ts b/src/core/client/ui/components/Popover/index.ts new file mode 100644 index 000000000..7e46e3708 --- /dev/null +++ b/src/core/client/ui/components/Popover/index.ts @@ -0,0 +1,2 @@ +export * from "./Popover"; +export { default } from "./Popover"; diff --git a/src/core/client/ui/components/TextField/TextField.css b/src/core/client/ui/components/TextField/TextField.css new file mode 100644 index 000000000..4d2e9e88a --- /dev/null +++ b/src/core/client/ui/components/TextField/TextField.css @@ -0,0 +1,11 @@ +.root { + font-family: "Source Sans Pro"; + font-weight: 400; + font-size: 16px; + letter-spacing: calc(0.57em / 16); + background: #ffffff; + border: 1px solid #979797; + box-sizing: border-box; + border-radius: 1px; + padding: 5px 20px; +} diff --git a/src/core/client/ui/components/TextField/TextField.d.ts b/src/core/client/ui/components/TextField/TextField.d.ts new file mode 100644 index 000000000..f99662ba2 --- /dev/null +++ b/src/core/client/ui/components/TextField/TextField.d.ts @@ -0,0 +1 @@ +export const root: string; diff --git a/src/core/client/ui/components/TextField/TextField.tsx b/src/core/client/ui/components/TextField/TextField.tsx new file mode 100644 index 000000000..d1a623662 --- /dev/null +++ b/src/core/client/ui/components/TextField/TextField.tsx @@ -0,0 +1,14 @@ +import cn from "classnames"; +import React, { InputHTMLAttributes, StatelessComponent } from "react"; + +import * as styles from "./TextField"; + +interface InnerProps extends InputHTMLAttributes { + classes?: typeof styles; +} + +const Input: StatelessComponent = ({ className, ...rest }) => { + return ; +}; + +export default Input; diff --git a/src/core/client/ui/components/TextField/index.ts b/src/core/client/ui/components/TextField/index.ts new file mode 100644 index 000000000..e38acd4ea --- /dev/null +++ b/src/core/client/ui/components/TextField/index.ts @@ -0,0 +1,2 @@ +export * from "./TextField"; +export { default } from "./TextField"; diff --git a/src/core/client/ui/components/Tooltip/Tooltip.tsx b/src/core/client/ui/components/Tooltip/Tooltip.tsx deleted file mode 100644 index f6e1a9cf0..000000000 --- a/src/core/client/ui/components/Tooltip/Tooltip.tsx +++ /dev/null @@ -1,22 +0,0 @@ -import cn from "classnames"; -import React from "react"; -import ReactTooltip from "react-tooltip"; -import * as styles from "./Tooltip.css"; - -interface InnerProps extends ReactTooltip.Props { - clickable: boolean; -} - -class Tooltip extends React.Component { - public render() { - const { clickable } = this.props; - return ( - - ); - } -} - -export default Tooltip; diff --git a/src/core/client/ui/components/Tooltip/index.ts b/src/core/client/ui/components/Tooltip/index.ts deleted file mode 100644 index 9474b3888..000000000 --- a/src/core/client/ui/components/Tooltip/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from "./Tooltip"; -export { default } from "./Tooltip"; diff --git a/src/core/client/ui/components/index.ts b/src/core/client/ui/components/index.ts index 6e1fcd8a6..9f16ee536 100644 --- a/src/core/client/ui/components/index.ts +++ b/src/core/client/ui/components/index.ts @@ -2,5 +2,5 @@ export { default as BaseButton } from "./BaseButton"; export { default as Button } from "./Button"; export { default as Center } from "./Center"; export { default as Typography } from "./Typography"; -export { default as Tooltip } from "./Tooltip"; +export { default as Popover } from "./Popover"; export { default as Input } from "./Input"; diff --git a/src/tsconfig.json b/src/tsconfig.json index eddf98d29..857892f4d 100644 --- a/src/tsconfig.json +++ b/src/tsconfig.json @@ -9,26 +9,13 @@ "outDir": "../dist", // See https://github.com/prismagraphql/graphql-request/issues/26 for why we // have to include "dom" here. - "lib": [ - "es6", - "esnext.asynciterable", - "dom" - ], + "lib": ["es6", "esnext.asynciterable", "dom"], "baseUrl": "./", "paths": { - "talk-server/*": [ - "./core/server/*" - ], - "talk-common/*": [ - "./core/common/*" - ] + "talk-server/*": ["./core/server/*"], + "talk-common/*": ["./core/common/*"] } }, - "include": [ - "./**/*" - ], - "exclude": [ - "node_modules", - "./core/client" - ] -} \ No newline at end of file + "include": ["./**/*"], + "exclude": ["node_modules", "./core/client"] +} diff --git a/tslint.json b/tslint.json index 68001f8c6..853208eb0 100644 --- a/tslint.json +++ b/tslint.json @@ -7,10 +7,7 @@ "rules": { "prettier": true, "object-literal-sort-keys": false, - "interface-name": [ - true, - "never-prefix" - ], + "interface-name": [true, "never-prefix"], "no-switch-case-fall-through": true, "member-ordering": false, "variable-name": [ @@ -35,8 +32,6 @@ ] }, "linterOptions": { - "exclude": [ - "**/node_modules/**/*" - ] + "exclude": ["**/node_modules/**/*"] } -} \ No newline at end of file +}