mirror of https://github.com/grafana/grafana
parent
7863d2d882
commit
9f1f5805ec
@ -0,0 +1,46 @@ |
|||||||
|
import React, { PureComponent } from 'react'; |
||||||
|
import _ from 'lodash'; |
||||||
|
|
||||||
|
export interface Props { |
||||||
|
label: string; |
||||||
|
checked: boolean; |
||||||
|
labelClass?: string; |
||||||
|
switchClass?: string; |
||||||
|
onChange: (event) => any; |
||||||
|
} |
||||||
|
|
||||||
|
export interface State { |
||||||
|
id: any; |
||||||
|
} |
||||||
|
|
||||||
|
export class Switch extends PureComponent<Props, State> { |
||||||
|
state = { |
||||||
|
id: _.uniqueId(), |
||||||
|
}; |
||||||
|
|
||||||
|
internalOnChange = event => { |
||||||
|
event.stopPropagation(); |
||||||
|
this.props.onChange(event); |
||||||
|
}; |
||||||
|
|
||||||
|
render() { |
||||||
|
const { labelClass, switchClass, label, checked } = this.props; |
||||||
|
const labelId = `check-${this.state.id}`; |
||||||
|
const labelClassName = `gf-form-label ${labelClass} pointer`; |
||||||
|
const switchClassName = `gf-form-switch ${switchClass}`; |
||||||
|
|
||||||
|
return ( |
||||||
|
<div className="gf-form"> |
||||||
|
{label && ( |
||||||
|
<label htmlFor={labelId} className={labelClassName}> |
||||||
|
{label} |
||||||
|
</label> |
||||||
|
)} |
||||||
|
<div className={switchClassName}> |
||||||
|
<input id={labelId} type="checkbox" checked={checked} onChange={this.internalOnChange} /> |
||||||
|
<label htmlFor={labelId} /> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
); |
||||||
|
} |
||||||
|
} |
||||||
Loading…
Reference in new issue