modules/ui/tools/simple_button.js (30 lines of code) (raw):
import { select as d3_select } from 'd3-selection';
import { svgIcon } from '../../svg/icon';
import { uiTooltipHtml } from '../tooltipHtml';
import { tooltip } from '../../util/tooltip';
import { utilFunctor } from '../../util/util';
export function uiToolSimpleButton(protoTool) {
var tool = protoTool || {};
var tooltipBehavior = tooltip()
.placement('bottom')
.html(true)
.scrollContainer(d3_select('#bar'));
tool.render = function(selection) {
tooltipBehavior.title(uiTooltipHtml(utilFunctor(tool.tooltipText)(), utilFunctor(tool.tooltipKey)()));
var button = selection
.selectAll('.bar-button')
.data([0]);
var buttonEnter = button
.enter()
.append('button')
.attr('class', 'bar-button ' + (utilFunctor(tool.barButtonClass)() || ''))
.attr('tabindex', -1)
.call(tooltipBehavior)
.on('click', tool.onClick)
.call(svgIcon('#', utilFunctor(tool.iconClass)()));
button = buttonEnter.merge(button);
button.selectAll('.icon use')
.attr('href', '#' + utilFunctor(tool.iconName)());
};
return tool;
}