| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- import React, { SFC, ReactNode, PureComponent } from 'react';
- import Tooltip from 'app/core/components/Tooltip/Tooltip';
- 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}>{button}</Tooltip>;
- } else {
- return button;
- }
- };
|