diff --git a/public/app/core/components/PageLoader/PageLoader.tsx b/public/app/core/components/PageLoader/PageLoader.tsx
index 177f18f54ce..e6b133618db 100644
--- a/public/app/core/components/PageLoader/PageLoader.tsx
+++ b/public/app/core/components/PageLoader/PageLoader.tsx
@@ -1,6 +1,6 @@
import React from 'react';
-import { LoadingPlaceholder } from '@grafana/ui';
+import { Box, LoadingPlaceholder } from '@grafana/ui';
interface Props {
pageName?: string;
@@ -9,9 +9,9 @@ interface Props {
const PageLoader = ({ pageName = '' }: Props) => {
const loadingText = `Loading ${pageName}...`;
return (
-
+
-
+
);
};
diff --git a/public/app/features/admin/AdminSettingsTable.tsx b/public/app/features/admin/AdminSettingsTable.tsx
index a026998aa1b..8825b98a45a 100644
--- a/public/app/features/admin/AdminSettingsTable.tsx
+++ b/public/app/features/admin/AdminSettingsTable.tsx
@@ -1,6 +1,7 @@
import React from 'react';
import Skeleton from 'react-loading-skeleton';
+import { Text } from '@grafana/ui';
import { SkeletonComponent, attachSkeleton } from '@grafana/ui/src/unstable';
import { Settings } from './AdminSettings';
@@ -16,7 +17,11 @@ const AdminSettingsTableComponent = ({ settings }: Props) => {
{Object.entries(settings).map(([sectionName, sectionSettings], i) => (
- | {sectionName} |
+
+
+ {sectionName}
+
+ |
|
{Object.entries(sectionSettings).map(([settingName, settingValue], j) => (
diff --git a/public/app/features/dashboard/components/DashboardSettings/DashboardSettings.tsx b/public/app/features/dashboard/components/DashboardSettings/DashboardSettings.tsx
index 766dc4a6613..81367c1affc 100644
--- a/public/app/features/dashboard/components/DashboardSettings/DashboardSettings.tsx
+++ b/public/app/features/dashboard/components/DashboardSettings/DashboardSettings.tsx
@@ -5,7 +5,7 @@ import { useLocation } from 'react-router-dom';
import { locationUtil, NavModel, NavModelItem } from '@grafana/data';
import { selectors } from '@grafana/e2e-selectors';
import { locationService } from '@grafana/runtime';
-import { Button, ToolbarButtonRow } from '@grafana/ui';
+import { Button, Stack, Text, ToolbarButtonRow } from '@grafana/ui';
import { AppChromeUpdate } from 'app/core/components/AppChrome/AppChromeUpdate';
import { Page } from 'app/core/components/Page/Page';
import { t } from 'app/core/internationalization';
@@ -212,10 +212,12 @@ function getSectionNav(
function MakeEditable({ dashboard, sectionNav }: SettingsPageProps) {
return (
- Dashboard not editable
-
+
+ Dashboard not editable
+
+
);
}
diff --git a/public/app/features/plugins/admin/components/Loader.tsx b/public/app/features/plugins/admin/components/Loader.tsx
index 677def2e4aa..60d9df9555d 100644
--- a/public/app/features/plugins/admin/components/Loader.tsx
+++ b/public/app/features/plugins/admin/components/Loader.tsx
@@ -1,6 +1,6 @@
import React from 'react';
-import { LoadingPlaceholder } from '@grafana/ui';
+import { Box, LoadingPlaceholder } from '@grafana/ui';
export interface Props {
text?: string;
@@ -8,8 +8,8 @@ export interface Props {
export const Loader = ({ text = 'Loading...' }: Props) => {
return (
-
+
-
+
);
};
diff --git a/public/sass/_angular.scss b/public/sass/_angular.scss
index b6bbed0ff07..738fa9e9383 100644
--- a/public/sass/_angular.scss
+++ b/public/sass/_angular.scss
@@ -60,3 +60,566 @@ input.ng-dirty.ng-invalid {
input.invalid {
box-shadow: inset 0 0px 5px $red;
}
+
+.gf-code-editor {
+ min-height: 36px;
+ min-width: 280px;
+ flex-grow: 1;
+ margin-right: $space-xs;
+
+ &.ace_editor {
+ @include font-family-monospace();
+ font-size: $font-size-md;
+ min-height: 50px; // Include space for horizontal scrollbar
+
+ @include border-radius($input-border-radius);
+ border: $border-width solid $input-border-color;
+ }
+
+ .ace_content {
+ z-index: 0;
+ }
+}
+
+.ace_editor.ace_autocomplete {
+ @include font-family-monospace();
+ font-size: $font-size-md;
+
+ // Ace editor adds