Convert QueryStatus to ts

pull/10616/head
Andrew Watkins 2018-05-11 14:50:41 -07:00
parent eaa04a3193
commit 1191b966a1
1 changed files with 28 additions and 49 deletions

View File

@ -1,31 +1,22 @@
import React, {Component, ReactElement} from 'react' import React, {SFC, ReactNode} from 'react'
import LoadingDots from 'src/shared/components/LoadingDots' import LoadingDots from 'src/shared/components/LoadingDots'
import classnames from 'classnames' import classnames from 'classnames'
import {Status} from 'src/types'
interface Status {
error: string
success: string
warn: string
loading: boolean
}
interface Props { interface Props {
children: ReactElement<any>
status: Status status: Status
children: ReactNode
} }
class QueryStatus extends Component<Props> { const QueryStatus: SFC<Props> = ({status, children}) => {
public render() {
const {status, children} = this.props
if (!status) { if (!status) {
return <div className="query-editor--status">{children}</div> return <div className="query-editor--status">{children}</div>
} }
if (!!status.loading) { if (status.loading) {
return ( return (
<div className="query-editor--status"> <div className="query-editor--status">
<LoadingDots /> <LoadingDots className="query-editor--loading" />
{children} {children}
</div> </div>
) )
@ -33,28 +24,13 @@ class QueryStatus extends Component<Props> {
return ( return (
<div className="query-editor--status"> <div className="query-editor--status">
<span className={this.className}> <span
{this.icon} className={classnames('query-status-output', {
{status.error || status.warn || status.success}
</span>
{children}
</div>
)
}
private get className(): string {
const {status} = this.props
return classnames('query-status-output', {
'query-status-output--error': status.error, 'query-status-output--error': status.error,
'query-status-output--success': status.success, 'query-status-output--success': status.success,
'query-status-output--warning': status.warn, 'query-status-output--warning': status.warn,
}) })}
} >
private get icon(): JSX.Element {
const {status} = this.props
return (
<span <span
className={classnames('icon', { className={classnames('icon', {
stop: status.error, stop: status.error,
@ -62,8 +38,11 @@ class QueryStatus extends Component<Props> {
'alert-triangle': status.warn, 'alert-triangle': status.warn,
})} })}
/> />
{status.error || status.warn || status.success}
</span>
{children}
</div>
) )
}
} }
export default QueryStatus export default QueryStatus