| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- import React, { SFC, ReactNode, PureComponent } from 'react';
- import { Tooltip } from '@grafana/ui';
- interface ToggleButtonGroupProps {
- label?: string;
- children: JSX.Element[];
- transparent?: boolean;
- }
- export default class ToggleButtonGroup extends PureComponent<ToggleButtonGroupProps> {
- render() {
- const { children, label, transparent } = this.props;
- return (
- <div className="gf-form">
- {label && <label className={`gf-form-label ${transparent ? 'gf-form-label--transparent' : ''}`}>{label}</label>}
- <div className={`toggle-button-group ${transparent ? 'toggle-button-group--transparent' : ''}`}>{children}</div>
- </div>
- );
- }
- }
- interface ToggleButtonProps {
- onChange?: (value) => void;
- selected?: boolean;
- value: any;
- className?: string;
- children: ReactNode;
- tooltip?: string;
- }
- export const ToggleButton: SFC<ToggleButtonProps> = ({
- children,
- selected,
- className = '',
- value = null,
- tooltip,
- onChange,
- }) => {
- const handleChange = event => {
- event.stopPropagation();
- if (onChange) {
- onChange(value);
- }
- };
- const btnClassName = `btn ${className} ${selected ? 'active' : ''}`;
- const button = (
- <button className={btnClassName} onClick={handleChange}>
- <span>{children}</span>
- </button>
- );
- if (tooltip) {
- return (
- <Tooltip content={tooltip} placement="bottom">
- {button}
- </Tooltip>
- );
- } else {
- return button;
- }
- };
|