import { ChangeEvent } from 'react'; import { Checkbox, InlineField, InlineSwitch, Input, SecretInput, Select } from '@grafana/ui'; import { DataSourcePluginOptionsEditorProps, SelectableValue, toOption } from '@grafana/data'; import { MyDataSourceOptions, MySecureJsonData } from '../types'; interface Props extends DataSourcePluginOptionsEditorProps {} export function ConfigEditor(props: Props) { const { onOptionsChange, options } = props; const { jsonData, secureJsonFields, secureJsonData } = options; const onJsonDataChange = (key: string, value: string | number | boolean) => { onOptionsChange({ ...options, jsonData: { ...jsonData, [key]: value, }, }); }; // Secure field (only sent to the backend) const onSecureJsonDataChange = (key: string, value: string | number) => { onOptionsChange({ ...options, secureJsonData: { [key]: value, }, }); }; const onResetAPIKey = () => { onOptionsChange({ ...options, secureJsonFields: { ...options.secureJsonFields, apiKey: false, }, secureJsonData: { ...options.secureJsonData, apiKey: '', }, }); }; return ( <> ) => onJsonDataChange('path', e.target.value)} value={jsonData.path} placeholder="Enter the path, e.g. /api/v1" width={40} /> ) => onSecureJsonDataChange('path', e.target.value)} /> ) => onJsonDataChange('switchEnabled', e.target.checked)} /> ) => onJsonDataChange('checkboxEnabled', e.target.checked)} />