mirror of
https://github.com/grafana/grafana.git
synced 2025-02-16 18:34:52 -06:00
* Interface linting rule * fix: changed model names in store files so that the interface names do not conflict with the model names
57 lines
1.5 KiB
TypeScript
57 lines
1.5 KiB
TypeScript
import React, { Component } from 'react';
|
|
|
|
export interface Props {
|
|
onSelect: any;
|
|
onFocus: any;
|
|
option: any;
|
|
isFocused: any;
|
|
className: any;
|
|
}
|
|
|
|
class DescriptionOption extends Component<Props, any> {
|
|
constructor(props) {
|
|
super(props);
|
|
this.handleMouseDown = this.handleMouseDown.bind(this);
|
|
this.handleMouseEnter = this.handleMouseEnter.bind(this);
|
|
this.handleMouseMove = this.handleMouseMove.bind(this);
|
|
}
|
|
|
|
handleMouseDown(event) {
|
|
event.preventDefault();
|
|
event.stopPropagation();
|
|
this.props.onSelect(this.props.option, event);
|
|
}
|
|
|
|
handleMouseEnter(event) {
|
|
this.props.onFocus(this.props.option, event);
|
|
}
|
|
|
|
handleMouseMove(event) {
|
|
if (this.props.isFocused) {
|
|
return;
|
|
}
|
|
this.props.onFocus(this.props.option, event);
|
|
}
|
|
|
|
render() {
|
|
const { option, children, className } = this.props;
|
|
return (
|
|
<button
|
|
onMouseDown={this.handleMouseDown}
|
|
onMouseEnter={this.handleMouseEnter}
|
|
onMouseMove={this.handleMouseMove}
|
|
title={option.title}
|
|
className={`description-picker-option__button btn btn-link ${className} width-19`}
|
|
>
|
|
<div className="gf-form">{children}</div>
|
|
<div className="gf-form">
|
|
<div className="muted width-17">{option.description}</div>
|
|
{className.indexOf('is-selected') > -1 && <i className="fa fa-check" aria-hidden="true" />}
|
|
</div>
|
|
</button>
|
|
);
|
|
}
|
|
}
|
|
|
|
export default DescriptionOption;
|