diff --git a/public/app/core/components/Select/DataSourcePicker.tsx b/public/app/core/components/Select/DataSourcePicker.tsx index c0d6a21e5c1..1a9081038c0 100644 --- a/public/app/core/components/Select/DataSourcePicker.tsx +++ b/public/app/core/components/Select/DataSourcePicker.tsx @@ -50,6 +50,7 @@ export class DataSourcePicker extends PureComponent { return (
- ); - } -} diff --git a/public/app/core/components/Select/UnitPicker.tsx b/public/app/core/components/Select/UnitPicker.tsx new file mode 100644 index 00000000000..da9d4526d2b --- /dev/null +++ b/public/app/core/components/Select/UnitPicker.tsx @@ -0,0 +1,51 @@ +import React, { PureComponent } from 'react'; +import Select from './Select'; +import kbn from 'app/core/utils/kbn'; + +interface Props { + onChange: (item: any) => {} | void; + defaultValue?: string; + width?: number; +} + +export default class UnitPicker extends PureComponent { + static defaultProps = { + width: 12, + }; + + render() { + const { defaultValue, onChange, width } = this.props; + + const unitGroups = kbn.getUnitFormats(); + + // Need to transform the data structure to work well with Select + const groupOptions = unitGroups.map(group => { + const options = group.submenu.map(unit => { + return { + label: unit.text, + value: unit.value, + }; + }); + + return { + label: group.text, + options, + }; + }); + + const value = groupOptions.map(group => { + return group.options.find(option => option.value === defaultValue); + }); + + return ( +