modules/ui/preset_favorite_button.js (37 lines of code) (raw):
import {
event as d3_event,
select as d3_select
} from 'd3-selection';
import { t } from '../util/locale';
import { svgIcon } from '../svg/icon';
export function uiPresetFavoriteButton(preset, geom, context, klass) {
var presetFavorite = {};
var _button = d3_select(null);
presetFavorite.button = function(selection) {
var canFavorite = geom !== 'relation' && preset.searchable !== false;
_button = selection.selectAll('.preset-favorite-button')
.data(canFavorite ? [0] : []);
_button.exit().remove();
_button = _button.enter()
.insert('button', '.tag-reference-button')
.attr('class', 'preset-favorite-button ' + klass)
.attr('title', t('icons.favorite'))
.attr('tabindex', -1)
.call(svgIcon('#iD-icon-favorite'))
.merge(_button);
_button
.on('click', function () {
d3_event.stopPropagation();
d3_event.preventDefault();
context.presets().toggleFavorite(preset);
update();
});
update();
};
function update() {
_button
.classed('active', context.presets().favoriteMatching(preset));
}
context.presets().on('favoritePreset.button-' + preset.id.replace(/[^a-zA-Z\d:]/g, '-'), update);
return presetFavorite;
}