diff --git a/superset-frontend/src/SqlLab/components/Link.jsx b/superset-frontend/src/SqlLab/components/Link.jsx deleted file mode 100644 index 33e5890cb057..000000000000 --- a/superset-frontend/src/SqlLab/components/Link.jsx +++ /dev/null @@ -1,72 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -import React from 'react'; -import PropTypes from 'prop-types'; -import { OverlayTrigger, Tooltip } from 'react-bootstrap'; - -const propTypes = { - children: PropTypes.node, - className: PropTypes.string, - href: PropTypes.string, - onClick: PropTypes.func, - placement: PropTypes.string, - style: PropTypes.object, - tooltip: PropTypes.string, -}; -const defaultProps = { - className: '', - href: '#', - onClick: () => {}, - placement: 'top', - style: {}, - tooltip: null, -}; - -class Link extends React.PureComponent { - render() { - const tooltip = {this.props.tooltip}; - const link = ( - - {this.props.children} - - ); - if (this.props.tooltip) { - return ( - - {link} - - ); - } - return link; - } -} -Link.propTypes = propTypes; -Link.defaultProps = defaultProps; - -export default Link; diff --git a/superset-frontend/src/SqlLab/components/Link.tsx b/superset-frontend/src/SqlLab/components/Link.tsx new file mode 100644 index 000000000000..be1d83616348 --- /dev/null +++ b/superset-frontend/src/SqlLab/components/Link.tsx @@ -0,0 +1,67 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +import React, { ReactNode } from 'react'; +// @ts-ignore +import { OverlayTrigger, Tooltip } from 'react-bootstrap'; + +interface Props { + children: ReactNode; + className: string; + href: string; + onClick: () => void; + placement: string; + style: object; + tooltip: string | null; +} + +const Link = ({ + children = null, + className = '', + href = '#', + onClick = () => undefined, + placement = 'top', + style = {}, + tooltip = null, +}: Props) => { + const link = ( + + {children} + + ); + if (tooltip) { + return ( + {tooltip}} + placement={placement} + delayShow={300} + delayHide={150} + > + {link} + + ); + } + return link; +}; + +export default Link;