diff --git a/packages/grafana-ui/src/components/FormField/FormField.tsx b/packages/grafana-ui/src/components/FormField/FormField.tsx index a8adeee35d1..f35f60ef2ba 100644 --- a/packages/grafana-ui/src/components/FormField/FormField.tsx +++ b/packages/grafana-ui/src/components/FormField/FormField.tsx @@ -17,12 +17,6 @@ const defaultProps = { /** * Default form field including label used in Grafana UI. Default input element is simple . You can also pass * custom inputEl if required in which case inputWidth and inputProps are ignored. - * @param label - * @param labelWidth - * @param inputWidth - * @param inputEl - * @param inputProps - * @constructor */ export const FormField: FunctionComponent = ({ label, labelWidth, inputWidth, inputEl, ...inputProps }) => { return ( diff --git a/packages/grafana-ui/src/components/SecretFormFied/SecretFormField.tsx b/packages/grafana-ui/src/components/SecretFormFied/SecretFormField.tsx index 04bb38578dd..234b36c2a43 100644 --- a/packages/grafana-ui/src/components/SecretFormFied/SecretFormField.tsx +++ b/packages/grafana-ui/src/components/SecretFormFied/SecretFormField.tsx @@ -3,25 +3,42 @@ import React, { InputHTMLAttributes, FunctionComponent } from 'react'; import { FormField } from '..'; interface Props extends InputHTMLAttributes { + // 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: () => void; isConfigured: boolean; label?: string; labelWidth?: number; inputWidth?: number; + // Placeholder of the input field when in non configured state. + placeholder?: string; } +const defaultProps = { + inputWidth: 12, + placeholder: 'Password', + label: 'Password', +}; + +/** + * Form field that has 2 states configured and not configured. If configured it will not show its contents and adds + * a reset button that will clear the input and makes it accessible. In non configured state it behaves like normal + * form field. This is used for passwords or anything that is encrypted on the server and is later returned encrypted + * to the user (like datasource passwords). + */ export const SecretFormField: FunctionComponent = ({ label, labelWidth, inputWidth, onReset, isConfigured, + placeholder, ...inputProps }: Props) => { return ( = ({ ) @@ -50,7 +67,5 @@ export const SecretFormField: FunctionComponent = ({ ); }; -SecretFormField.defaultProps = { - inputWidth: 12, -}; +SecretFormField.defaultProps = defaultProps; SecretFormField.displayName = 'SecretFormField';