diff --git a/packages/grafana-ui/src/components/DataLinks/DataLinkEditor.tsx b/packages/grafana-ui/src/components/DataLinks/DataLinkEditor.tsx index 74831fdb7d9..043eda4d07d 100644 --- a/packages/grafana-ui/src/components/DataLinks/DataLinkEditor.tsx +++ b/packages/grafana-ui/src/components/DataLinks/DataLinkEditor.tsx @@ -1,6 +1,6 @@ import React, { ChangeEvent, useContext } from 'react'; import { DataLink, VariableSuggestion, GrafanaTheme } from '@grafana/data'; -import { FormField } from '../index'; +import { FormField } from '../FormField/FormField'; import { Switch } from '../Forms/Legacy/Switch/Switch'; import { css } from 'emotion'; import { ThemeContext, stylesFactory } from '../../themes/index'; diff --git a/packages/grafana-ui/src/components/SecretFormField/SecretFormField.story.tsx b/packages/grafana-ui/src/components/SecretFormField/SecretFormField.story.internal.tsx similarity index 100% rename from packages/grafana-ui/src/components/SecretFormField/SecretFormField.story.tsx rename to packages/grafana-ui/src/components/SecretFormField/SecretFormField.story.internal.tsx diff --git a/packages/grafana-ui/src/components/SecretFormField/SecretFormField.tsx b/packages/grafana-ui/src/components/SecretFormField/SecretFormField.tsx index f6cb3307eea..f4ce2752361 100644 --- a/packages/grafana-ui/src/components/SecretFormField/SecretFormField.tsx +++ b/packages/grafana-ui/src/components/SecretFormField/SecretFormField.tsx @@ -4,7 +4,7 @@ import { FormField } from '../FormField/FormField'; import { Button } from '../Button/Button'; import { css, cx } from 'emotion'; -interface Props extends Omit, 'onReset'> { +export interface Props extends Omit, 'onReset'> { // Function to use when reset is clicked. Means you have to reset the input value yourself as this is uncontrolled // component (or do something else if required). onReset: (event: React.SyntheticEvent) => void; diff --git a/packages/grafana-ui/src/components/index.ts b/packages/grafana-ui/src/components/index.ts index ba3c182880c..1ad26994f08 100644 --- a/packages/grafana-ui/src/components/index.ts +++ b/packages/grafana-ui/src/components/index.ts @@ -12,11 +12,6 @@ export { ClipboardButton } from './ClipboardButton/ClipboardButton'; export { Cascader, CascaderOption } from './Cascader/Cascader'; export { ButtonCascader } from './ButtonCascader/ButtonCascader'; -// Forms -export { FormLabel } from './FormLabel/FormLabel'; -export { FormField } from './FormField/FormField'; -export { SecretFormField } from './SecretFormField/SecretFormField'; - export { LoadingPlaceholder } from './LoadingPlaceholder/LoadingPlaceholder'; export { ColorPicker, SeriesColorPicker } from './ColorPicker/ColorPicker'; export { SeriesColorPickerPopover, SeriesColorPickerPopoverWithTheme } from './ColorPicker/SeriesColorPickerPopover'; @@ -153,6 +148,9 @@ export { TextArea } from './TextArea/TextArea'; // Legacy forms +// Export this until we've figured out a good approach to inline form styles. +export { FormLabel as InlineFormLabel } from './FormLabel/FormLabel'; + // Select import { Select, AsyncSelect } from './Forms/Legacy/Select/Select'; import { IndicatorsContainer } from './Forms/Legacy/Select/IndicatorsContainer'; @@ -161,10 +159,14 @@ import { ButtonSelect } from './Forms/Legacy/Select/ButtonSelect'; //Input import { Input, LegacyInputStatus } from './Forms/Legacy/Input/Input'; +import { FormField } from './FormField/FormField'; +import { SecretFormField } from './SecretFormField/SecretFormField'; import { Switch } from './Forms/Legacy/Switch/Switch'; const LegacyForms = { + SecretFormField, + FormField, Select, AsyncSelect, IndicatorsContainer, diff --git a/plugins-bundled/internal/input-datasource/src/InputQueryEditor.tsx b/plugins-bundled/internal/input-datasource/src/InputQueryEditor.tsx index c8dd68fe149..d32efb0ed3d 100644 --- a/plugins-bundled/internal/input-datasource/src/InputQueryEditor.tsx +++ b/plugins-bundled/internal/input-datasource/src/InputQueryEditor.tsx @@ -5,7 +5,7 @@ import React, { PureComponent } from 'react'; import { InputDatasource, describeDataFrame } from './InputDatasource'; import { InputQuery, InputOptions } from './types'; -import { FormLabel, LegacyForms, TableInputCSV, Icon } from '@grafana/ui'; +import { InlineFormLabel, LegacyForms, TableInputCSV, Icon } from '@grafana/ui'; const { Select } = LegacyForms; import { DataFrame, toCSV, SelectableValue, MutableDataFrame, QueryEditorProps } from '@grafana/data'; @@ -69,7 +69,7 @@ export class InputQueryEditor extends PureComponent { return (
- Data + Data dashboard.id === homeDashboardId)} getOptionValue={i => i.id} diff --git a/public/app/features/admin/ldap/LdapPage.tsx b/public/app/features/admin/ldap/LdapPage.tsx index 80ec3bf72c2..4420cd46b8f 100644 --- a/public/app/features/admin/ldap/LdapPage.tsx +++ b/public/app/features/admin/ldap/LdapPage.tsx @@ -2,7 +2,8 @@ import React, { PureComponent } from 'react'; import { hot } from 'react-hot-loader'; import { connect } from 'react-redux'; import { NavModel } from '@grafana/data'; -import { FormField, Alert } from '@grafana/ui'; +import { Alert, LegacyForms } from '@grafana/ui'; +const { FormField } = LegacyForms; import { getNavModel } from 'app/core/selectors/navModel'; import config from 'app/core/config'; import Page from 'app/core/components/Page/Page'; diff --git a/public/app/features/api-keys/ApiKeysPage.tsx b/public/app/features/api-keys/ApiKeysPage.tsx index 16a3b071899..f6f1bbf04c4 100644 --- a/public/app/features/api-keys/ApiKeysPage.tsx +++ b/public/app/features/api-keys/ApiKeysPage.tsx @@ -13,7 +13,14 @@ import ApiKeysAddedModal from './ApiKeysAddedModal'; import config from 'app/core/config'; import appEvents from 'app/core/app_events'; import EmptyListCTA from 'app/core/components/EmptyListCTA/EmptyListCTA'; -import { DeleteButton, EventsWithValidation, FormLabel, LegacyForms, ValidationEvents, IconButton } from '@grafana/ui'; +import { + DeleteButton, + EventsWithValidation, + InlineFormLabel, + LegacyForms, + ValidationEvents, + IconButton, +} from '@grafana/ui'; const { Input, Switch } = LegacyForms; import { dateTime, isDateTime, NavModel } from '@grafana/data'; import { FilterInput } from 'app/core/components/FilterInput/FilterInput'; @@ -213,7 +220,7 @@ export class ApiKeysPage extends PureComponent {
- Time to live + Time to live = ({ label, placeholder, name, value, onBlur, onChange, tooltipInfo }) => { return (
- {label} + {label} { {this.renderOptions()}
- Relative time + Relative time = ({ dataSourceName, isDefault, onDefaultChange,
- Name - + { @@ -147,9 +147,9 @@ export class ExpressionQueryEditor extends PureComponent {
- Downsample Function: + Downsample Function:
diff --git a/public/app/features/profile/UserProfileEditForm.tsx b/public/app/features/profile/UserProfileEditForm.tsx index a73c74db9fb..ce927aa498c 100644 --- a/public/app/features/profile/UserProfileEditForm.tsx +++ b/public/app/features/profile/UserProfileEditForm.tsx @@ -1,5 +1,5 @@ import React, { PureComponent, ChangeEvent, MouseEvent } from 'react'; -import { Button, FormLabel, LegacyForms, Tooltip, Icon } from '@grafana/ui'; +import { Button, InlineFormLabel, LegacyForms, Tooltip, Icon } from '@grafana/ui'; const { Input } = LegacyForms; import { User } from 'app/types'; import config from 'app/core/config'; @@ -59,11 +59,11 @@ export class UserProfileEditForm extends PureComponent {

Edit Profile

- Name + Name
- Email + Email { )}
- Username + Username {

Team Settings

- Name + Name {
- + Email - + {
- @@ -100,7 +100,7 @@ export class DataSourceVariableEditorUnConnected extends PureComponent { } > Instance name filter - + { />
- + Type - +
{
- + Min interval - +
- + Refresh - +
/>
- + Sort - +
authProvider.value === options.jsonData.authType)} @@ -143,12 +143,12 @@ export class ConfigEditor extends PureComponent { {options.jsonData.authType === 'credentials' && (
- Credentials Profile Name - +
{ {options.secureJsonFields.accessKey ? (
- Access Key ID + Access Key ID
@@ -183,7 +183,7 @@ export class ConfigEditor extends PureComponent { ) : (
- Access Key ID + Access Key ID
{ {options.secureJsonFields.secretKey ? (
- Secret Access Key + Secret Access Key
@@ -215,7 +215,7 @@ export class ConfigEditor extends PureComponent { ) : (
- Secret Access Key + Secret Access Key
{ {options.jsonData.authType === 'arn' && (
- + Assume Role ARN - +
{ )}
- Default Region - + { label: string; @@ -9,9 +9,9 @@ export interface Props extends InputHTMLAttributes { export const QueryField: FunctionComponent> = ({ label, tooltip, children }) => ( <> - + {label} - + {children} ); diff --git a/public/app/plugins/datasource/elasticsearch/configuration/DataLink.tsx b/public/app/plugins/datasource/elasticsearch/configuration/DataLink.tsx index fd5da650548..cf1bd455d60 100644 --- a/public/app/plugins/datasource/elasticsearch/configuration/DataLink.tsx +++ b/public/app/plugins/datasource/elasticsearch/configuration/DataLink.tsx @@ -1,7 +1,8 @@ import React from 'react'; import { css } from 'emotion'; import { VariableSuggestion } from '@grafana/data'; -import { Button, FormField, DataLinkInput, stylesFactory } from '@grafana/ui'; +import { Button, LegacyForms, DataLinkInput, stylesFactory } from '@grafana/ui'; +const { FormField } = LegacyForms; import { DataLinkConfig } from '../types'; const getStyles = stylesFactory(() => ({ diff --git a/public/app/plugins/datasource/elasticsearch/configuration/ElasticDetails.tsx b/public/app/plugins/datasource/elasticsearch/configuration/ElasticDetails.tsx index f1db4a82276..2f0bff273aa 100644 --- a/public/app/plugins/datasource/elasticsearch/configuration/ElasticDetails.tsx +++ b/public/app/plugins/datasource/elasticsearch/configuration/ElasticDetails.tsx @@ -1,6 +1,6 @@ import React from 'react'; -import { EventsWithValidation, FormField, regexValidation, LegacyForms } from '@grafana/ui'; -const { Select, Input } = LegacyForms; +import { EventsWithValidation, regexValidation, LegacyForms } from '@grafana/ui'; +const { Select, Input, FormField } = LegacyForms; import { ElasticsearchOptions } from '../types'; import { DataSourceSettings, SelectableValue } from '@grafana/data'; diff --git a/public/app/plugins/datasource/elasticsearch/configuration/LogsConfig.test.tsx b/public/app/plugins/datasource/elasticsearch/configuration/LogsConfig.test.tsx index 5ef0778867c..843107f45bb 100644 --- a/public/app/plugins/datasource/elasticsearch/configuration/LogsConfig.test.tsx +++ b/public/app/plugins/datasource/elasticsearch/configuration/LogsConfig.test.tsx @@ -2,7 +2,8 @@ import React from 'react'; import { mount, shallow } from 'enzyme'; import { LogsConfig } from './LogsConfig'; import { createDefaultConfigOptions } from './mocks'; -import { FormField } from '@grafana/ui'; +import { LegacyForms } from '@grafana/ui'; +const { FormField } = LegacyForms; describe('ElasticDetails', () => { it('should render without error', () => { diff --git a/public/app/plugins/datasource/elasticsearch/configuration/LogsConfig.tsx b/public/app/plugins/datasource/elasticsearch/configuration/LogsConfig.tsx index b1c98825b7f..67d547e7da8 100644 --- a/public/app/plugins/datasource/elasticsearch/configuration/LogsConfig.tsx +++ b/public/app/plugins/datasource/elasticsearch/configuration/LogsConfig.tsx @@ -1,5 +1,6 @@ import React from 'react'; -import { FormField } from '@grafana/ui'; +import { LegacyForms } from '@grafana/ui'; +const { FormField } = LegacyForms; import { ElasticsearchOptions } from '../types'; type Props = { diff --git a/public/app/plugins/datasource/grafana-azure-monitor-datasource/components/AnalyticsConfig.tsx b/public/app/plugins/datasource/grafana-azure-monitor-datasource/components/AnalyticsConfig.tsx index dfb776ae761..0cbc9a26e65 100644 --- a/public/app/plugins/datasource/grafana-azure-monitor-datasource/components/AnalyticsConfig.tsx +++ b/public/app/plugins/datasource/grafana-azure-monitor-datasource/components/AnalyticsConfig.tsx @@ -1,7 +1,7 @@ import React, { PureComponent, ChangeEvent } from 'react'; import { SelectableValue } from '@grafana/data'; import { AzureCredentialsForm } from './AzureCredentialsForm'; -import { FormLabel, LegacyForms, Button } from '@grafana/ui'; +import { InlineFormLabel, LegacyForms, Button } from '@grafana/ui'; const { Select, Switch } = LegacyForms; import { AzureDataSourceSettings } from '../types'; @@ -169,12 +169,12 @@ export class AnalyticsConfig extends PureComponent {
- Default Workspace - +
azureCloud.value === selectedAzureCloud)} @@ -64,7 +64,7 @@ export class AzureCredentialsForm extends PureComponent { )}
- Directory (tenant) ID + Directory (tenant) ID
{
- Application (client) ID + Application (client) ID
{ {clientSecretConfigured ? (
- Client Secret + Client Secret
@@ -105,7 +105,7 @@ export class AzureCredentialsForm extends PureComponent { ) : (
- Client Secret + Client Secret
{ <>
- Default Subscription + Default Subscription
@@ -41,7 +41,7 @@ export class InsightsConfig extends PureComponent { ) : (
- API Key + API Key
{ )}
- Application ID + Application ID
{
- + Version - + type.value === options.jsonData.graphiteType)} diff --git a/public/app/plugins/datasource/influxdb/components/ConfigEditor.tsx b/public/app/plugins/datasource/influxdb/components/ConfigEditor.tsx index b70af4dcc28..f0cd23881cb 100644 --- a/public/app/plugins/datasource/influxdb/components/ConfigEditor.tsx +++ b/public/app/plugins/datasource/influxdb/components/ConfigEditor.tsx @@ -8,8 +8,8 @@ import { onUpdateDatasourceJsonDataOptionSelect, onUpdateDatasourceSecureJsonDataOption, } from '@grafana/data'; -import { DataSourceHttpSettings, FormLabel, SecretFormField, LegacyForms } from '@grafana/ui'; -const { Select, Input } = LegacyForms; +import { DataSourceHttpSettings, InlineFormLabel, LegacyForms } from '@grafana/ui'; +const { Select, Input, SecretFormField } = LegacyForms; import { InfluxOptions, InfluxSecureJsonData } from '../types'; const httpModes = [ @@ -41,7 +41,7 @@ export class ConfigEditor extends PureComponent {
- Database + Database
{
- User + User
{
- HTTP Method - +
- {label} + {label} { <>
OpenTSDB settings
- Version + Version { />
- Lookup Limit + Lookup Limit
- + {label} - + {
- Legend - + {
- @@ -140,7 +140,7 @@ export class PromQueryEditor extends PureComponent { } > Min step - + { /> - + - +
diff --git a/public/app/plugins/datasource/prometheus/configuration/PromSettings.tsx b/public/app/plugins/datasource/prometheus/configuration/PromSettings.tsx index 1256827371d..9849f477bdc 100644 --- a/public/app/plugins/datasource/prometheus/configuration/PromSettings.tsx +++ b/public/app/plugins/datasource/prometheus/configuration/PromSettings.tsx @@ -1,6 +1,6 @@ import React, { SyntheticEvent } from 'react'; -import { EventsWithValidation, FormField, FormLabel, regexValidation, LegacyForms } from '@grafana/ui'; -const { Select, Input } = LegacyForms; +import { EventsWithValidation, InlineFormLabel, regexValidation, LegacyForms } from '@grafana/ui'; +const { Select, Input, FormField } = LegacyForms; import { DataSourceSettings, SelectableValue } from '@grafana/data'; import { PromOptions } from '../types'; @@ -59,12 +59,12 @@ export const PromSettings = (props: Props) => {
- HTTP Method - +
diff --git a/public/app/plugins/panel/piechart/PieChartOptionsBox.tsx b/public/app/plugins/panel/piechart/PieChartOptionsBox.tsx index e1b5774142f..062c88d8ca6 100644 --- a/public/app/plugins/panel/piechart/PieChartOptionsBox.tsx +++ b/public/app/plugins/panel/piechart/PieChartOptionsBox.tsx @@ -2,12 +2,12 @@ import React, { PureComponent } from 'react'; // Components -import { LegacyForms, FormLabel, PanelOptionsGroup } from '@grafana/ui'; -const { Select } = LegacyForms; +import { LegacyForms, InlineFormLabel, PanelOptionsGroup } from '@grafana/ui'; +const { Select, FormField } = LegacyForms; // Types import { PanelEditorProps } from '@grafana/data'; -import { FormField, PieChartType } from '@grafana/ui'; +import { PieChartType } from '@grafana/ui'; import { PieChartOptions } from './types'; const labelWidth = 8; @@ -29,7 +29,7 @@ export class PieChartOptionsBox extends PureComponent
- Type + Type