diff --git a/public/app/core/components/ToggleButtonGroup/ToggleButton.tsx b/public/app/core/components/ToggleButtonGroup/ToggleButton.tsx deleted file mode 100644 index 2fdf324ac44..00000000000 --- a/public/app/core/components/ToggleButtonGroup/ToggleButton.tsx +++ /dev/null @@ -1,33 +0,0 @@ -import React, { PureComponent } from 'react'; - -interface ToggleButtonProps { - onChange?: (value) => void; - selected?: boolean; - value: any; - classNames?: string; -} -interface ToggleButtonState {} - -export default class ToggleButton extends PureComponent { - static defaultProps = { - classNames: '', - }; - - handleChange = () => { - const { onChange, value } = this.props; - if (onChange) { - onChange(value); - } - }; - - render() { - const { children, selected, classNames } = this.props; - const btnClassName = `btn ${classNames} ${selected ? 'active' : ''}`; - - return ( - - ); - } -} diff --git a/public/app/core/components/ToggleButtonGroup/ToggleButtonGroup.tsx b/public/app/core/components/ToggleButtonGroup/ToggleButtonGroup.tsx index b3063004ebd..91b7f1538c9 100644 --- a/public/app/core/components/ToggleButtonGroup/ToggleButtonGroup.tsx +++ b/public/app/core/components/ToggleButtonGroup/ToggleButtonGroup.tsx @@ -1,4 +1,4 @@ -import React, { PureComponent, ReactElement } from 'react'; +import React, { SFC, ReactNode, PureComponent, ReactElement } from 'react'; interface ToggleButtonGroupProps { onChange: (value) => void; @@ -9,7 +9,12 @@ interface ToggleButtonGroupProps { export default class ToggleButtonGroup extends PureComponent { getValues() { const { children } = this.props; - return React.Children.toArray(children).map(c => c['props'].value); + return React.Children.toArray(children).map((c: ReactElement) => c.props.value); + } + + smallChildren() { + const { children } = this.props; + return React.Children.toArray(children).every((c: ReactElement) => c.props.className.includes('small')); } handleToggle(toggleValue) { @@ -24,6 +29,7 @@ export default class ToggleButtonGroup extends PureComponent) => { const { value: buttonValue } = child.props; @@ -37,10 +43,34 @@ export default class ToggleButtonGroup extends PureComponent
- {label && } + {label && } {childClones}
); } } + +interface ToggleButtonProps { + onChange?: (value) => void; + selected?: boolean; + value: any; + className?: string; + children: ReactNode; +} + +export const ToggleButton: SFC = ({ children, selected, className = '', value, onChange }) => { + const handleChange = event => { + event.stopPropagation(); + if (onChange) { + onChange(value); + } + }; + + const btnClassName = `btn ${className} ${selected ? 'active' : ''}`; + return ( + + ); +}; diff --git a/public/app/features/explore/Logs.tsx b/public/app/features/explore/Logs.tsx index 3a584cd5664..f7704cf340a 100644 --- a/public/app/features/explore/Logs.tsx +++ b/public/app/features/explore/Logs.tsx @@ -16,6 +16,7 @@ import { } from 'app/core/logs_model'; import { findHighlightChunksInText } from 'app/core/utils/text'; import { Switch } from 'app/core/components/Switch/Switch'; +import ToggleButtonGroup, { ToggleButton } from 'app/core/components/ToggleButtonGroup/ToggleButtonGroup'; import Graph from './Graph'; import LogLabels from './LogLabels'; @@ -304,30 +305,13 @@ export default class Logs extends PureComponent { - this.onChangeDedup(LogsDedupStrategy.none)} - small - /> - this.onChangeDedup(LogsDedupStrategy.exact)} - small - /> - this.onChangeDedup(LogsDedupStrategy.numbers)} - small - /> - this.onChangeDedup(LogsDedupStrategy.signature)} - small - /> + + {Object.keys(LogsDedupStrategy).map((dedupType, i) => ( + + {dedupType} + + ))} + {hasData && meta && (
diff --git a/public/sass/components/_toggle_button_group.scss b/public/sass/components/_toggle_button_group.scss index 5107c18f1a7..ed701a489a9 100644 --- a/public/sass/components/_toggle_button_group.scss +++ b/public/sass/components/_toggle_button_group.scss @@ -3,25 +3,35 @@ .gf-form-label { background-color: $input-label-bg; + &:first-child { + border-radius: $border-radius 0 0 $border-radius; + margin: 0; + } + &.small { + padding: ($input-padding-y / 2) ($input-padding-x / 2); + font-size: $font-size-xs; + } } .btn { - @include buttonBackground($input-bg, $input-bg); + background-color: $typeahead-selected-bg; + border-radius: 0; + color: $text-color; &.active { - background-color: lighten($input-label-bg, 5%); - color: $link-color; + background-color: $input-bg; &:hover { cursor: default; } } - } - &:first-child { - border-radius: 2px 0 0 2px; - margin: 0; - } - &:last-child { - border-radius: 0 2px 2px 0; - margin-left: 0 !important; + &:first-child { + border-radius: $border-radius 0 0 $border-radius; + margin: 0; + } + + &:last-child { + border-radius: 0 $border-radius $border-radius 0; + margin-left: 0; + } } }