Remove confirm delete for features and datalayers (#2603)

Now that we have granular undo, I'd say we can simplify the delete
process.
This commit is contained in:
Yohan Boniface 2025-04-07 18:24:25 +02:00 committed by GitHub
commit f1f18ed518
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
7 changed files with 12 additions and 39 deletions

View file

@ -61,7 +61,7 @@ export default class Browser {
DomEvent.on(zoom_to, 'click', viewFeature)
DomEvent.on(title, 'click', viewFeature)
DomEvent.on(edit, 'click', feature.edit, feature)
DomEvent.on(del, 'click', feature.confirmDelete, feature)
DomEvent.on(del, 'click', feature.del, feature)
// HOTFIX. Remove when this is released:
// https://github.com/Leaflet/Leaflet/pull/9052
DomEvent.disableClickPropagation(row)

View file

@ -278,7 +278,8 @@ class Feature {
<i class="icon icon-24 icon-delete"></i>${translate('Delete')}
</button>`)
button.addEventListener('click', () => {
this.confirmDelete().then(() => this._umap.editPanel.close())
this.del()
this._umap.editPanel.close()
})
container.appendChild(button)
}
@ -363,17 +364,6 @@ class Feature {
return popup.loadContent()
}
async confirmDelete() {
const confirmed = await this._umap.dialog.confirm(
translate('Are you sure you want to delete the feature?')
)
if (confirmed) {
this.del()
return true
}
return false
}
del(sync) {
this.isDirty = true
this._umap._leafletMap.closePopup()
@ -518,7 +508,7 @@ class Feature {
icon: 'icon-edit',
},
{
action: () => this.confirmDelete(),
action: () => this.del(),
title: translate('Delete this feature'),
icon: 'icon-delete',
},
@ -673,7 +663,7 @@ class Feature {
},
{
label: translate('Delete this feature'),
action: () => this.confirmDelete(),
action: () => this.del(),
},
{
label: translate('Clone this feature'),

View file

@ -1237,23 +1237,14 @@ export class DataLayer {
translate('Delete layer')
)
if (this.isReadOnly()) {
DomUtil.addClass(container, 'readonly')
container.classList.add('readonly')
} else {
DomEvent.on(edit, 'click', this.edit, this)
DomEvent.on(table, 'click', this.tableEdit, this)
DomEvent.on(
remove,
'click',
function () {
if (!this.isVisible()) return
this._umap.dialog
.confirm(translate('Are you sure you want to delete this layer?'))
.then(() => {
this.del()
})
},
this
)
edit.addEventListener('click', () => this.edit())
table.addEventListener('click', () => this.tableEdit())
remove.addEventListener('click', () => {
if (!this.isVisible()) return
this.del()
})
}
DomEvent.on(toggle, 'click', () => this.toggle())
DomEvent.on(zoomTo, 'click', this.zoomTo, this)

View file

@ -348,7 +348,6 @@ def test_should_redraw_list_on_feature_delete(live_server, openmap, page, bootst
buttons = page.locator(".umap-browser .datalayer li .icon-delete")
expect(buttons).to_have_count(3)
buttons.first.click()
page.locator("dialog").get_by_role("button", name="OK").click()
expect(buttons).to_have_count(2)
page.locator(".edit-undo").click()
expect(buttons).to_have_count(3)

View file

@ -61,7 +61,6 @@ def test_cancel_deleting_datalayer_should_restore(
expect(markers).to_have_count(1)
page.get_by_role("button", name="Manage layers").click()
page.locator(".panel.right").get_by_title("Delete layer").click()
page.get_by_role("button", name="OK").click()
expect(markers).to_have_count(0)
expect(page.get_by_text("test datalayer")).to_be_hidden()
page.locator(".edit-undo").click()
@ -203,7 +202,6 @@ def test_deleting_datalayer_should_remove_from_browser_and_layers_list(
expect(panel.get_by_text("test datalayer")).to_be_visible()
expect(edit_panel.get_by_text("test datalayer")).to_be_visible()
page.locator(".panel.right").get_by_title("Delete layer").click()
page.get_by_role("button", name="OK").click()
expect(panel.get_by_text("test datalayer")).to_be_hidden()
expect(edit_panel.get_by_text("test datalayer")).to_be_hidden()
@ -217,7 +215,6 @@ def test_deleting_datalayer_should_remove_from_caption(
page.get_by_role("button", name="Manage layers").click()
expect(panel.get_by_text("test datalayer")).to_be_visible()
page.locator(".panel.right").get_by_title("Delete layer").click()
page.get_by_role("button", name="OK").click()
expect(panel.get_by_text("test datalayer")).to_be_hidden()

View file

@ -241,7 +241,6 @@ def test_can_delete_datalayer(live_server, map, login, datalayer):
expect(markers).to_have_count(1)
page.get_by_role("button", name="Manage layers").click()
page.locator(".panel.right").get_by_title("Delete layer").click()
page.get_by_role("button", name="OK").click()
with page.expect_response(re.compile(r".*/datalayer/delete/.*")):
page.get_by_role("button", name="Save").click()
expect(markers).to_have_count(0)

View file

@ -86,7 +86,6 @@ def test_websocket_connection_can_sync_markers(new_page, asgi_live_server, tilel
# Delete a marker from peer A and check it's been deleted on peer B
a_first_marker.click(button="right")
peerA.get_by_role("button", name="Delete this feature").click()
peerA.locator("dialog").get_by_role("button", name="OK").click()
expect(a_marker_pane).to_have_count(1)
expect(b_marker_pane).to_have_count(1)
@ -166,7 +165,6 @@ def test_websocket_connection_can_sync_polygons(context, asgi_live_server, tilel
# Delete a polygon from peer A and check it's been deleted on peer B
a_polygon.click(button="right")
peerA.get_by_role("button", name="Delete this feature").click()
peerA.locator("dialog").get_by_role("button", name="OK").click()
expect(a_polygons).to_have_count(0)
expect(b_polygons).to_have_count(0)
@ -485,7 +483,6 @@ def test_should_sync_datalayers_delete(new_page, asgi_live_server, tilelayer):
# Delete "datalayer 2" in peerA
peerA.locator(".datalayer").get_by_role("button", name="Delete layer").first.click()
peerA.get_by_role("button", name="OK").click()
expect(peerA.locator(".panel").get_by_text("datalayer 2")).to_be_hidden()
expect(peerB.locator(".panel").get_by_text("datalayer 2")).to_be_hidden()