Files
react-native-devtools-frontend/front_end/ui/SegmentedButton.js
T
Blink Reformat 4c46d0969f The Great Blink mv for source files, part 2.
Move and rename files.

NOAUTOREVERT=true
NOPRESUBMIT=true
NOTREECHECKS=true
Bug: 768828
TBR=darin@chromium.org
NOTRY=true

Change-Id: I66d3b155808bc5bdbf237b80208e1e552bcf7f28
Reviewed-on: https://chromium-review.googlesource.com/1001153
Reviewed-by: Blink Reformat <blink-reformat@chromium.org>
Commit-Queue: Blink Reformat <blink-reformat@chromium.org>
Cr-Original-Commit-Position: refs/heads/master@{#549061}
Cr-Mirrored-From: https://chromium.googlesource.com/chromium/src
Cr-Mirrored-Commit: 0aee4434a4dba42a42abaea9bfbc0cd196a63bc1
2018-04-07 15:32:37 +00:00

48 lines
1.2 KiB
JavaScript

// Copyright 2018 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
UI.SegmentedButton = class extends UI.HBox {
constructor() {
super(true);
/** @type {!Map<string, !Element>} */
this._buttons = new Map();
/** @type {?string} */
this._selected = null;
this.registerRequiredCSS('ui/segmentedButton.css');
this.contentElement.classList.add('segmented-button');
}
/**
* @param {string} label
* @param {string} value
* @param {string=} tooltip
*/
addSegment(label, value, tooltip) {
const button = this.contentElement.createChild('button', 'segmented-button-segment');
button.textContent = label;
button.title = tooltip;
this._buttons.set(value, button);
button.addEventListener('click', () => this.select(value));
}
/**
* @param {string} value
*/
select(value) {
if (this._selected === value)
return;
this._selected = value;
for (const key of this._buttons.keys())
this._buttons.get(key).classList.toggle('segmented-button-segment-selected', key === this._selected);
}
/**
* @return {?string}
*/
selected() {
return this._selected;
}
};