mirror of https://github.com/grafana/grafana
parent
47b3901e7d
commit
8430c5a491
@ -1,52 +0,0 @@ |
||||
import React from 'react'; |
||||
import Select from 'react-select'; |
||||
import _ from 'lodash'; |
||||
|
||||
import GroupHeading from 'app/core/components/Picker/GroupHeading'; |
||||
import DescriptionOption from 'app/core/components/Picker/DescriptionOption'; |
||||
import IndicatorsContainer from 'app/core/components/Picker/IndicatorsContainer'; |
||||
import ResetStyles from 'app/core/components/Picker/ResetStyles'; |
||||
import NoOptionsMessage from 'app/core/components/Picker/NoOptionsMessage'; |
||||
|
||||
export interface Props { |
||||
onChange: (value: string) => void; |
||||
groups: any[]; |
||||
searchable: boolean; |
||||
selected: string; |
||||
placeholder?: string; |
||||
className?: string; |
||||
} |
||||
|
||||
export class OptionGroupPicker extends React.Component<Props, any> { |
||||
constructor(props) { |
||||
super(props); |
||||
} |
||||
|
||||
render() { |
||||
const { onChange, groups, selected, placeholder, className, searchable } = this.props; |
||||
const options = _.flatten(groups.map(o => o.options)); |
||||
const selectedOption = options.find(option => option.value === selected); |
||||
|
||||
return ( |
||||
<Select |
||||
placeholder={placeholder} |
||||
classNamePrefix={`gf-form-select-box`} |
||||
className={className} |
||||
options={groups} |
||||
components={{ |
||||
GroupHeading, |
||||
Option: DescriptionOption, |
||||
IndicatorsContainer, |
||||
NoOptionsMessage, |
||||
}} |
||||
styles={ResetStyles} |
||||
isSearchable={searchable} |
||||
onChange={option => onChange(option.value)} |
||||
getOptionValue={i => i.value} |
||||
getOptionLabel={i => i.label} |
||||
value={selectedOption} |
||||
noOptionsMessage={() => 'No metrics found'} |
||||
/> |
||||
); |
||||
} |
||||
} |
||||
@ -1,50 +0,0 @@ |
||||
import React from 'react'; |
||||
import Select from 'react-select'; |
||||
import _ from 'lodash'; |
||||
|
||||
import DescriptionOption from 'app/core/components/Picker/DescriptionOption'; |
||||
import IndicatorsContainer from 'app/core/components/Picker/IndicatorsContainer'; |
||||
import ResetStyles from 'app/core/components/Picker/ResetStyles'; |
||||
import NoOptionsMessage from 'app/core/components/Picker/NoOptionsMessage'; |
||||
|
||||
export interface Props { |
||||
onChange: (value: string) => void; |
||||
options: any[]; |
||||
searchable: boolean; |
||||
selected: string; |
||||
placeholder?: string; |
||||
className?: string; |
||||
groups?: boolean; |
||||
} |
||||
|
||||
export class OptionPicker extends React.Component<Props, any> { |
||||
constructor(props) { |
||||
super(props); |
||||
} |
||||
|
||||
render() { |
||||
const { onChange, options, selected, placeholder, className, searchable } = this.props; |
||||
const selectedOption = options.find(option => option.value === selected); |
||||
|
||||
return ( |
||||
<Select |
||||
placeholder={placeholder} |
||||
classNamePrefix={`gf-form-select-box`} |
||||
className={className} |
||||
options={options} |
||||
components={{ |
||||
Option: DescriptionOption, |
||||
IndicatorsContainer, |
||||
NoOptionsMessage, |
||||
}} |
||||
styles={ResetStyles} |
||||
isSearchable={searchable} |
||||
onChange={option => onChange(option.value)} |
||||
getOptionValue={i => i.value} |
||||
getOptionLabel={i => i.label} |
||||
value={selectedOption} |
||||
noOptionsMessage={() => 'No metrics found'} |
||||
/> |
||||
); |
||||
} |
||||
} |
||||
@ -0,0 +1,53 @@ |
||||
import React from 'react'; |
||||
import _ from 'lodash'; |
||||
import Select from 'app/core/components/Select/Select'; |
||||
|
||||
export interface Props { |
||||
onChange: (value: string) => void; |
||||
options: any[]; |
||||
searchable: boolean; |
||||
selected: string; |
||||
placeholder?: string; |
||||
className?: string; |
||||
groups?: boolean; |
||||
} |
||||
|
||||
export class StackdriverPicker extends React.Component<Props, any> { |
||||
constructor(props) { |
||||
super(props); |
||||
} |
||||
|
||||
extractOptions(options) { |
||||
return options.length > 0 && options.every(o => o.options) ? _.flatten(options.map(o => o.options)) : options; |
||||
} |
||||
|
||||
onChange = item => { |
||||
const extractedOptions = this.extractOptions(this.props.options); |
||||
const option = extractedOptions.find(option => option.value === item.value); |
||||
this.props.onChange(option.value); |
||||
}; |
||||
|
||||
render() { |
||||
const { options, selected, placeholder, className, searchable } = this.props; |
||||
const extractedOptions = this.extractOptions(options); |
||||
const selectedOption = extractedOptions.find(option => option.value === selected); |
||||
|
||||
return ( |
||||
<Select |
||||
className={className} |
||||
isMulti={false} |
||||
isClearable={false} |
||||
backspaceRemovesValue={false} |
||||
onChange={this.onChange} |
||||
options={options} |
||||
autoFocus={false} |
||||
isSearchable={searchable} |
||||
openMenuOnFocus={true} |
||||
maxMenuHeight={500} |
||||
placeholder={placeholder} |
||||
noOptionsMessage={() => 'No options found'} |
||||
value={selectedOption} |
||||
/> |
||||
); |
||||
} |
||||
} |
||||
Loading…
Reference in new issue