diff --git a/umap/static/umap/base.css b/umap/static/umap/base.css index 5c64232d..8283cb54 100644 --- a/umap/static/umap/base.css +++ b/umap/static/umap/base.css @@ -274,11 +274,13 @@ input[type="file"] + .error { margin-top: 0; } .fieldset { - border: 1px solid #222; margin-bottom: 5px; border-top-left-radius: 4px; border-top-right-radius: 4px; } +.dark .fieldset { + border: 1px solid #222; +} .fieldset .fields { visibility: hidden; opacity: 0; @@ -296,7 +298,7 @@ input[type="file"] + .error { text-align: left; display: block; cursor: pointer; - background-color: #eee; + background-color: var(--color-lightGray); height: 30px; line-height: 30px; margin: 0; @@ -976,6 +978,7 @@ input:invalid { bottom: initial; width: 390px; border-radius: 5px; + border: 1px solid var(--color-lightGray); } } @media all and (orientation:portrait) { diff --git a/umap/static/umap/img/24-white.svg b/umap/static/umap/img/24-white.svg index ac571991..b1792024 100644 --- a/umap/static/umap/img/24-white.svg +++ b/umap/static/umap/img/24-white.svg @@ -57,8 +57,8 @@ - - + + diff --git a/umap/static/umap/img/source/24-white.svg b/umap/static/umap/img/source/24-white.svg index 149eb62e..80d9b3e6 100644 --- a/umap/static/umap/img/source/24-white.svg +++ b/umap/static/umap/img/source/24-white.svg @@ -2,7 +2,7 @@ - + @@ -78,8 +78,8 @@ - - + + diff --git a/umap/static/umap/js/umap.controls.js b/umap/static/umap/js/umap.controls.js index c2d5d905..5eafc43c 100644 --- a/umap/static/umap/js/umap.controls.js +++ b/umap/static/umap/js/umap.controls.js @@ -29,11 +29,23 @@ U.ImportAction = U.BaseAction.extend({ }, }) +U.EditCaptionAction = U.BaseAction.extend({ + options: { + helpMenu: true, + className: 'umap-control-caption dark', + tooltip: L._('Edit map name and caption'), + }, + + addHooks: function () { + this.map.editCaption() + }, +}) + U.EditPropertiesAction = U.BaseAction.extend({ options: { helpMenu: true, className: 'update-map-settings dark', - tooltip: L._('Edit map properties'), + tooltip: L._('Map advanced properties'), }, addHooks: function () { @@ -268,12 +280,8 @@ U.ContinueLineAction = U.BaseVertexAction.extend({ }) // Leaflet.Toolbar doesn't allow twice same toolbar class… -U.SettingsToolbar = L.Toolbar.Control.extend({ - addTo: function (map) { - if (map.options.editMode !== 'advanced') return - L.Toolbar.Control.prototype.addTo.call(this, map) - }, -}) +U.ImportToolbar = L.Toolbar.Control.extend({}) +U.SettingsToolbar = L.Toolbar.Control.extend({}) U.DrawToolbar = L.Toolbar.Control.extend({ initialize: function (options) { L.Toolbar.Control.prototype.initialize.call(this, options) @@ -512,13 +520,12 @@ U.DataLayersControl = L.Control.Button.extend({ U.CaptionControl = L.Control.Button.extend({ options: { position: 'topright', - className: 'umap-control-caption', + className: 'umap-control-caption hide-on-edit', title: L._('About'), }, onClick: function () { - if (this.map.editEnabled) this.map.editCaption() - else this.map.displayCaption() + this.map.displayCaption() }, }) @@ -532,14 +539,25 @@ U.DataLayer.include({ renderToolbox: function (container) { L.DomUtil.element( 'i', - { className: 'umap-icon-16 drag-handle show-on-edit', title: L._('Drag to reorder') }, + { + className: 'umap-icon-16 drag-handle show-on-edit', + title: L._('Drag to reorder'), + }, container ) const toggle = L.DomUtil.create('i', 'umap-icon-16 layer-toggle', container), zoomTo = L.DomUtil.create('i', 'umap-icon-16 layer-zoom_to', container), edit = L.DomUtil.create('i', 'umap-icon-16 layer-edit show-on-edit', container), - table = L.DomUtil.create('i', 'umap-icon-16 layer-table-edit show-on-edit', container), - remove = L.DomUtil.create('i', 'umap-icon-16 layer-delete show-on-edit', container) + table = L.DomUtil.create( + 'i', + 'umap-icon-16 layer-table-edit show-on-edit', + container + ), + remove = L.DomUtil.create( + 'i', + 'umap-icon-16 layer-delete show-on-edit', + container + ) zoomTo.title = L._('Zoom to layer extent') toggle.title = L._('Show/hide layer') edit.title = L._('Edit') diff --git a/umap/static/umap/js/umap.js b/umap/static/umap/js/umap.js index 16691541..b1738135 100644 --- a/umap/static/umap/js/umap.js +++ b/umap/static/umap/js/umap.js @@ -329,16 +329,19 @@ U.Map = L.Map.extend({ if (this.hasEditMode() && !this.options.noControl) { new U.EditControl(this).addTo(this) - new U.DrawToolbar({ map: this }).addTo(this) - const editActions = [ - U.ImportAction, + U.EditCaptionAction, U.EditPropertiesAction, U.ChangeTileLayerAction, U.UpdateExtentAction, U.UpdatePermsAction, ] - new U.SettingsToolbar({ actions: editActions }).addTo(this) + if (this.options.editMode === 'advanced') { + new U.SettingsToolbar({ actions: editActions }).addTo(this) + new U.ImportToolbar({ actions: [U.ImportAction] }).addTo(this) + } + + new U.DrawToolbar({ map: this }).addTo(this) } this._controls.zoom = new L.Control.Zoom({ zoomInTitle: L._('Zoom in'), @@ -1537,7 +1540,7 @@ U.Map = L.Map.extend({ if (this.options.editMode !== 'advanced') return const container = L.DomUtil.create('div', 'umap-edit-container') const title = L.DomUtil.create('h3', '', container) - title.textContent = L._('Edit map properties') + title.textContent = L._('Map advanced properties') this._editControls(container) this._editShapeProperties(container) this._editDefaultProperties(container) diff --git a/umap/static/umap/map.css b/umap/static/umap/map.css index 648b684c..672392ce 100644 --- a/umap/static/umap/map.css +++ b/umap/static/umap/map.css @@ -287,8 +287,8 @@ ul.photon-autocomplete { .leaflet-control-toolbar > li > .leaflet-toolbar-icon, .umap-toolbar a, .umap-toolbar a:hover { - height: 40px; - width: 40px; + height: 36px; + width: 36px; display: none; margin-top: 0; vertical-align: top; @@ -922,21 +922,20 @@ ul.photon-autocomplete { .umap-edit-enabled .show-on-edit.block { display: block!important; } +.umap-edit-enabled .hide-on-edit { + display: none!important; +} /* ********************************* */ /* Browser panel */ /* ********************************* */ -.umap-control-caption [type="button"], .umap-control-browse [type="button"] { - background-image: url('./img/24.svg'); - width: 40px; - height: 40px; - background-position: -34px -70px; - background-size: 180px; + background-position: -36px -72px; } +a.umap-control-caption, .umap-control-caption [type="button"] { - background-position: -70px -70px; + background-position: -72px -72px; } .umap-edit-enabled .umap-control-caption [type="button"], .umap-edit-enabled .umap-control-browse [type="button"] { @@ -981,7 +980,7 @@ i.drag-handle { border: 1px solid #d3d3d3; } .umap-browser.dark .datalayer ul { - border: 1px solid #2c3233; + border: 1px solid #232729; } .umap-browser h5, .umap-facet-search h5 { margin-bottom: 0; @@ -993,7 +992,7 @@ i.drag-handle { color: #666; } .umap-browser.dark h5 { - background-color: #2c3233; + background-color: #232729; color: white; } .umap-browser h5 span { @@ -1025,6 +1024,9 @@ i.drag-handle { text-align: center; margin-left: 5px; } +.umap-browser.dark .datalayer i.feature-color { + box-shadow: 0 0 2px 0 #999 inset; +} .umap-browser .datalayer .feature-color img { width: 24px; } diff --git a/umap/tests/integration/test_anonymous_owned_map.py b/umap/tests/integration/test_anonymous_owned_map.py index 119547eb..70b90972 100644 --- a/umap/tests/integration/test_anonymous_owned_map.py +++ b/umap/tests/integration/test_anonymous_owned_map.py @@ -34,7 +34,7 @@ def test_map_load_with_owner(anonymap, live_server, owner_session): expect(save).to_be_visible() add_marker = owner_session.get_by_title("Draw a marker") expect(add_marker).to_be_visible() - edit_settings = owner_session.get_by_title("Edit map properties") + edit_settings = owner_session.get_by_title("Map advanced properties") expect(edit_settings).to_be_visible() edit_permissions = owner_session.get_by_title("Update permissions and editors") expect(edit_permissions).to_be_visible() @@ -65,7 +65,7 @@ def test_map_load_with_anonymous_but_editable_layer( expect(save).to_be_visible() add_marker = page.get_by_title("Draw a marker") expect(add_marker).to_be_visible() - edit_settings = page.get_by_title("Edit map properties") + edit_settings = page.get_by_title("Map advanced properties") expect(edit_settings).to_be_hidden() edit_permissions = page.get_by_title("Update permissions and editors") expect(edit_permissions).to_be_hidden() diff --git a/umap/tests/integration/test_owned_map.py b/umap/tests/integration/test_owned_map.py index 31ea9087..e30b3ba6 100644 --- a/umap/tests/integration/test_owned_map.py +++ b/umap/tests/integration/test_owned_map.py @@ -22,7 +22,7 @@ def test_map_update_with_owner(map, live_server, login): expect(save).to_be_visible() add_marker = page.get_by_title("Draw a marker") expect(add_marker).to_be_visible() - edit_settings = page.get_by_title("Edit map properties") + edit_settings = page.get_by_title("Map advanced properties") expect(edit_settings).to_be_visible() edit_permissions = page.get_by_title("Update permissions and editors") expect(edit_permissions).to_be_visible() @@ -49,7 +49,7 @@ def test_map_update_with_anonymous_but_editable_datalayer( enable.click() add_marker = page.get_by_title("Draw a marker") expect(add_marker).to_be_visible() - edit_settings = page.get_by_title("Edit map properties") + edit_settings = page.get_by_title("Map advanced properties") expect(edit_settings).to_be_hidden() edit_permissions = page.get_by_title("Update permissions and editors") expect(edit_permissions).to_be_hidden() @@ -97,7 +97,7 @@ def test_map_update_with_editor(map, live_server, login, user): expect(save).to_be_visible() add_marker = page.get_by_title("Draw a marker") expect(add_marker).to_be_visible() - edit_settings = page.get_by_title("Edit map properties") + edit_settings = page.get_by_title("Map advanced properties") expect(edit_settings).to_be_visible() edit_permissions = page.get_by_title("Update permissions and editors") expect(edit_permissions).to_be_visible() @@ -126,7 +126,7 @@ def test_permissions_form_with_editor(map, datalayer, live_server, login, user): def test_owner_has_delete_map_button(map, live_server, login): page = login(map.owner) page.goto(f"{live_server.url}{map.get_absolute_url()}?edit") - settings = page.get_by_title("Edit map properties") + settings = page.get_by_title("Map advanced properties") expect(settings).to_be_visible() settings.click() advanced = page.get_by_text("Advanced actions") @@ -154,7 +154,7 @@ def test_editor_do_not_have_delete_map_button(map, live_server, login, user): map.save() page = login(user) page.goto(f"{live_server.url}{map.get_absolute_url()}?edit") - settings = page.get_by_title("Edit map properties") + settings = page.get_by_title("Map advanced properties") expect(settings).to_be_visible() settings.click() advanced = page.get_by_text("Advanced actions") diff --git a/umap/tests/integration/test_picto.py b/umap/tests/integration/test_picto.py index 192f28e4..808a9d04 100644 --- a/umap/tests/integration/test_picto.py +++ b/umap/tests/integration/test_picto.py @@ -44,7 +44,7 @@ def test_can_change_picto_at_map_level(openmap, live_server, page, pictos): expect(marker).to_have_count(1) # Should have default img expect(marker).to_have_attribute("src", "/static/umap/img/marker.svg") - edit_settings = page.get_by_title("Edit map properties") + edit_settings = page.get_by_title("Map advanced properties") expect(edit_settings).to_be_visible() edit_settings.click() shape_settings = page.get_by_text("Default shape properties") @@ -152,7 +152,7 @@ def test_can_use_remote_url_as_picto(openmap, live_server, page, pictos): expect(marker).to_have_count(1) # Should have default img expect(marker).to_have_attribute("src", "/static/umap/img/marker.svg") - edit_settings = page.get_by_title("Edit map properties") + edit_settings = page.get_by_title("Map advanced properties") expect(edit_settings).to_be_visible() edit_settings.click() shape_settings = page.get_by_text("Default shape properties") @@ -191,7 +191,7 @@ def test_can_use_char_as_picto(openmap, live_server, page, pictos): marker = page.locator(".umap-div-icon span") # Should have default img, so not a span expect(marker).to_have_count(0) - edit_settings = page.get_by_title("Edit map properties") + edit_settings = page.get_by_title("Map advanced properties") expect(edit_settings).to_be_visible() edit_settings.click() shape_settings = page.get_by_text("Default shape properties")