mirror of
https://github.com/FoggedLens/iD.git
synced 2026-05-14 21:28:11 +02:00
Listen to both change and blur for role switcher, compare old v new
(closes #5449)
This commit is contained in:
@@ -59,12 +59,16 @@ export function uiRawMemberEditor(context) {
|
||||
|
||||
|
||||
function changeRole(d) {
|
||||
var role = d3_select(this).property('value');
|
||||
var member = { id: d.id, type: d.type, role: role };
|
||||
context.perform(
|
||||
actionChangeMember(d.relation.id, member, d.index),
|
||||
t('operations.change_role.annotation')
|
||||
);
|
||||
var oldRole = d.role;
|
||||
var newRole = d3_select(this).property('value');
|
||||
|
||||
if (oldRole !== newRole) {
|
||||
var member = { id: d.id, type: d.type, role: newRole };
|
||||
context.perform(
|
||||
actionChangeMember(d.relation.id, member, d.index),
|
||||
t('operations.change_role.annotation')
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -217,6 +221,7 @@ export function uiRawMemberEditor(context) {
|
||||
.attr('placeholder', t('inspector.role'))
|
||||
.call(utilNoAuto)
|
||||
.property('value', function(d) { return d.role; })
|
||||
.on('blur', changeRole)
|
||||
.on('change', changeRole);
|
||||
|
||||
wrapEnter
|
||||
@@ -224,8 +229,8 @@ export function uiRawMemberEditor(context) {
|
||||
.attr('tabindex', -1)
|
||||
.attr('title', t('icons.remove'))
|
||||
.attr('class', 'remove form-field-button member-delete')
|
||||
.on('click', deleteMember)
|
||||
.call(svgIcon('#iD-operation-delete'));
|
||||
.call(svgIcon('#iD-operation-delete'))
|
||||
.on('click', deleteMember);
|
||||
|
||||
if (taginfo) {
|
||||
wrapEnter.each(bindTypeahead);
|
||||
|
||||
@@ -44,13 +44,16 @@ export function uiRawMembershipEditor(context) {
|
||||
|
||||
|
||||
function changeRole(d) {
|
||||
var role = d3_select(this).property('value');
|
||||
if (d === 0) return; // called on newrow (shoudn't happen)
|
||||
var oldRole = d.member.role;
|
||||
var newRole = d3_select(this).property('value');
|
||||
|
||||
context.perform(
|
||||
actionChangeMember(d.relation.id, _extend({}, d.member, { role: role }), d.index),
|
||||
t('operations.change_role.annotation')
|
||||
);
|
||||
if (oldRole !== newRole) {
|
||||
context.perform(
|
||||
actionChangeMember(d.relation.id, _extend({}, d.member, { role: newRole }), d.index),
|
||||
t('operations.change_role.annotation')
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -225,28 +228,21 @@ export function uiRawMembershipEditor(context) {
|
||||
.attr('maxlength', 255)
|
||||
.attr('placeholder', t('inspector.role'))
|
||||
.call(utilNoAuto)
|
||||
.property('value', function(d) { return d.member.role; });
|
||||
.property('value', function(d) { return d.member.role; })
|
||||
.on('blur', changeRole)
|
||||
.on('change', changeRole);
|
||||
|
||||
wrapEnter
|
||||
.append('button')
|
||||
.attr('tabindex', -1)
|
||||
.attr('class', 'remove form-field-button member-delete')
|
||||
.call(svgIcon('#iD-operation-delete'));
|
||||
.call(svgIcon('#iD-operation-delete'))
|
||||
.on('click', deleteMembership);
|
||||
|
||||
if (taginfo) {
|
||||
wrapEnter.each(bindTypeahead);
|
||||
}
|
||||
|
||||
// Update
|
||||
items = items
|
||||
.merge(itemsEnter);
|
||||
|
||||
items.selectAll('input.member-role')
|
||||
.on('change', changeRole);
|
||||
|
||||
items.selectAll('button.member-delete')
|
||||
.on('click', deleteMembership);
|
||||
|
||||
|
||||
var newMembership = list.selectAll('.member-row-new')
|
||||
.data(_showBlank ? [0] : []);
|
||||
@@ -297,7 +293,10 @@ export function uiRawMembershipEditor(context) {
|
||||
|
||||
newMembership.selectAll('.member-entity-input')
|
||||
.call(nearbyCombo
|
||||
.on('accept', onAccept)
|
||||
.on('accept', function (d) {
|
||||
var role = list.selectAll('.member-row-new .member-role').property('value');
|
||||
addMembership(d, role);
|
||||
})
|
||||
.on('cancel', function() { delete this.value; })
|
||||
);
|
||||
|
||||
@@ -321,12 +320,6 @@ export function uiRawMembershipEditor(context) {
|
||||
});
|
||||
|
||||
|
||||
function onAccept(d) {
|
||||
var role = list.selectAll('.member-row-new .member-role').property('value');
|
||||
addMembership(d, role);
|
||||
}
|
||||
|
||||
|
||||
function bindTypeahead(d) {
|
||||
var row = d3_select(this);
|
||||
var role = row.selectAll('input.member-role');
|
||||
|
||||
Reference in New Issue
Block a user