diff --git a/client/app/components/ApplicationArea/ApplicationLayout/DesktopNavbar.jsx b/client/app/components/ApplicationArea/ApplicationLayout/DesktopNavbar.jsx index 5cb8a8cfe..07f1c1db9 100644 --- a/client/app/components/ApplicationArea/ApplicationLayout/DesktopNavbar.jsx +++ b/client/app/components/ApplicationArea/ApplicationLayout/DesktopNavbar.jsx @@ -2,6 +2,7 @@ import { first } from "lodash"; import React, { useState } from "react"; import Button from "antd/lib/button"; import Menu from "antd/lib/menu"; +import Link from "@/components/Link"; import HelpTrigger from "@/components/HelpTrigger"; import CreateDashboardDialog from "@/components/dashboards/CreateDashboardDialog"; import { Auth, currentUser } from "@/services/auth"; @@ -45,34 +46,36 @@ export default function DesktopNavbar() { return (
- - Redash - +
+ + Redash + +
{currentUser.hasPermission("list_dashboards") && ( - + Dashboards - + )} {currentUser.hasPermission("view_query") && ( - + Queries - + )} {currentUser.hasPermission("list_alerts") && ( - + Alerts - + )} @@ -93,9 +96,9 @@ export default function DesktopNavbar() { }> {canCreateQuery && ( - + New Query - + )} {canCreateDashboard && ( @@ -107,9 +110,9 @@ export default function DesktopNavbar() { )} {canCreateAlert && ( - + New Alert - + )} @@ -125,10 +128,10 @@ export default function DesktopNavbar() { {firstSettingsTab && ( - + Settings - + )} @@ -145,11 +148,11 @@ export default function DesktopNavbar() { }> - Profile + Profile {currentUser.hasPermission("super_admin") && ( - System Status + System Status )} diff --git a/client/app/components/ApplicationArea/ApplicationLayout/MobileNavbar.jsx b/client/app/components/ApplicationArea/ApplicationLayout/MobileNavbar.jsx index 20982b029..78eae2106 100644 --- a/client/app/components/ApplicationArea/ApplicationLayout/MobileNavbar.jsx +++ b/client/app/components/ApplicationArea/ApplicationLayout/MobileNavbar.jsx @@ -5,6 +5,7 @@ import Button from "antd/lib/button"; import MenuOutlinedIcon from "@ant-design/icons/MenuOutlined"; import Dropdown from "antd/lib/dropdown"; import Menu from "antd/lib/menu"; +import Link from "@/components/Link"; import { Auth, currentUser } from "@/services/auth"; import settingsMenu from "@/services/settingsMenu"; import logoUrl from "@/assets/images/redash_icon_small.png"; @@ -17,9 +18,9 @@ export default function MobileNavbar({ getPopupContainer }) { return (
- + Redash - +
{currentUser.hasPermission("list_dashboards") && ( - Dashboards + Dashboards )} {currentUser.hasPermission("view_query") && ( - Queries + Queries )} {currentUser.hasPermission("list_alerts") && ( - Alerts + Alerts )} - Edit Profile + Edit Profile {firstSettingsTab && ( - Settings + Settings )} {currentUser.hasPermission("super_admin") && ( - System Status + System Status )} {currentUser.hasPermission("super_admin") && } {/* eslint-disable-next-line react/jsx-no-target-blank */} - + Help - + Auth.logout()}> Log out diff --git a/client/app/components/ApplicationArea/ApplicationLayout/VersionInfo.jsx b/client/app/components/ApplicationArea/ApplicationLayout/VersionInfo.jsx index 832780f3b..e5c4aa68e 100644 --- a/client/app/components/ApplicationArea/ApplicationLayout/VersionInfo.jsx +++ b/client/app/components/ApplicationArea/ApplicationLayout/VersionInfo.jsx @@ -1,4 +1,5 @@ import React from "react"; +import Link from "@/components/Link"; import { clientConfig, currentUser } from "@/services/auth"; import frontendVersion from "@/version.json"; @@ -12,10 +13,10 @@ export default function VersionInfo() { {clientConfig.newVersionAvailable && currentUser.hasPermission("super_admin") && (
{/* eslint-disable react/jsx-no-target-blank */} - + Update Available - +
)} diff --git a/client/app/components/BeaconConsent.jsx b/client/app/components/BeaconConsent.jsx index 4db162f32..3ee9b2475 100644 --- a/client/app/components/BeaconConsent.jsx +++ b/client/app/components/BeaconConsent.jsx @@ -3,6 +3,7 @@ import Card from "antd/lib/card"; import Button from "antd/lib/button"; import Typography from "antd/lib/typography"; import { clientConfig } from "@/services/auth"; +import Link from "@/components/Link"; import HelpTrigger from "@/components/HelpTrigger"; import DynamicComponent from "@/components/DynamicComponent"; import OrgSettings from "@/services/organizationSettings"; @@ -65,8 +66,8 @@ function BeaconConsent() {
- You can change this setting anytime from the Organization Settings{" "} - page. + You can change this setting anytime from the{" "} + Organization Settings page.
diff --git a/client/app/components/CreateSourceDialog.jsx b/client/app/components/CreateSourceDialog.jsx index e58f90d0e..2d5ba0646 100644 --- a/client/app/components/CreateSourceDialog.jsx +++ b/client/app/components/CreateSourceDialog.jsx @@ -7,6 +7,7 @@ import Modal from "antd/lib/modal"; import Input from "antd/lib/input"; import Steps from "antd/lib/steps"; import { wrap as wrapDialog, DialogPropType } from "@/components/DialogWrapper"; +import Link from "@/components/Link"; import { PreviewCard } from "@/components/PreviewCard"; import EmptyState from "@/components/items-list/components/EmptyState"; import DynamicForm from "@/components/dynamic-form/DynamicForm"; @@ -118,9 +119,9 @@ class CreateSourceDialog extends React.Component { {selectedType.type === "databricks" && ( By using the Databricks Data Source you agree to the Databricks JDBC/ODBC{" "} - + Driver Download Terms and Conditions - + . )} diff --git a/client/app/components/EditVisualizationButton/QueryResultsLink.jsx b/client/app/components/EditVisualizationButton/QueryResultsLink.jsx index f3ac4bffe..74b6e09a7 100644 --- a/client/app/components/EditVisualizationButton/QueryResultsLink.jsx +++ b/client/app/components/EditVisualizationButton/QueryResultsLink.jsx @@ -1,5 +1,6 @@ import React from "react"; import PropTypes from "prop-types"; +import Link from "@/components/Link"; export default function QueryResultsLink(props) { let href = ""; @@ -17,9 +18,9 @@ export default function QueryResultsLink(props) { } return ( - + {props.children} - + ); } diff --git a/client/app/components/HelpTrigger.jsx b/client/app/components/HelpTrigger.jsx index 64fe747b6..e9528e3d8 100644 --- a/client/app/components/HelpTrigger.jsx +++ b/client/app/components/HelpTrigger.jsx @@ -4,6 +4,7 @@ import PropTypes from "prop-types"; import cx from "classnames"; import Tooltip from "antd/lib/tooltip"; import Drawer from "antd/lib/drawer"; +import Link from "@/components/Link"; import CloseOutlinedIcon from "@ant-design/icons/CloseOutlined"; import BigMessage from "@/components/BigMessage"; import DynamicComponent from "@/components/DynamicComponent"; @@ -149,9 +150,9 @@ export default class HelpTrigger extends React.Component { {this.props.children} ) : ( - + {this.props.children} - + )} {/* eslint-disable-next-line react/jsx-no-target-blank */} - + - + )} @@ -201,9 +202,9 @@ export default class HelpTrigger extends React.Component { Something went wrong.
{/* eslint-disable-next-line react/jsx-no-target-blank */} - + Click here - {" "} + {" "} to open the page in a new window. )} diff --git a/client/app/components/Link.jsx b/client/app/components/Link.jsx new file mode 100644 index 000000000..2cd700976 --- /dev/null +++ b/client/app/components/Link.jsx @@ -0,0 +1,26 @@ +import React from "react"; +import Button from "antd/lib/button"; + +function DefaultLinkComponent(props) { + return ; // eslint-disable-line jsx-a11y/anchor-has-content +} + +function Link(props) { + return ; +} + +Link.Component = DefaultLinkComponent; + +function DefaultButtonLinkComponent(props) { + return