v1.8.0 is a culmination of 1.5 years of development, a huge release focused on bug fixes, major reliability and accessibility improvements, cleaning up legacy code, and numerous improvements to documentation, development workflow and release process. A culmination of hundreds of contributions, and a preparation for bigger changes to come. π
I'm making this release just as an air raid alert is sounding outside, in Kyiv, warning about an imminent Russian air strike. This release is dedicated to Ukrainian fight for freedom and democracy against the Russian invasion πΊπ¦ (see how you can support Ukraine here).
From now on, releases will become much more frequent. Thanks to our amazing community for all your help and patience. β€οΈπ Special thanks to @johnd0e who revived Leaflet development after long stagnation and made the biggest contributions, @Falke-Design for doing the bulk of the work organizing development and preparing the release, @Malvoz for his numerous accessibility contributions, and @jonkoops for help with workflow automations. β€οΈ
β οΈ Breaking Changes
- Improve reliability of
contextmenu
event simulation on mobile Safari by introducing a newTapHold
handler, replacing legacyTap
(#7026 by @johnd0e) - Reorganize
DivOverlay
/Popup
/Tooltip
APIs (#7540 by @johnd0e)- Move
Popup
related options fromDivOverlay
toPopup
(#7778 by @Falke-Design) - Change
Tooltip
class fromleaflet-clickable
toleaflet-interactive
(#7719 by @Falke-Design) Map.closeTooltip
now requires a layer as argument (#7533 by @johnd0e)
- Move
- Improve error / argument handling for event listeners (#7518 by @johnd0e)
- Improve reliability of touch events simulation on non-touch devices (
DomEvent.Pointer
) (#7059, #7084, #7415 by @johnd0e) - Improve reliability of
dblclick
event simulation on touch devices (DomEvent.DoubleTap
) (#7027 by @johnd0e) - Improve reliability of
disableClickPropagation
(#7439 by @johnd0e) - Improve
Map
hasLayer()
andLayerGroup
hasLayer()
to require a layer as argument (#6999 by @johnd0e) - Fix
Class.include
to not overwriteoptions
(#7756 by @johnd0e) - Fix
Class.extend
to not modify source props object (#6766 by @johnd0e) - Improve
Browser.touch
touch devices detection (#7029 by @johnd0e) - Get rid of legacy Android hacks (#7022 by @johnd0e)
- Allow fonts to respect users' browser settings by making the
font-size
relative to the map container. (You can change the font size onleaflet-container
to adjust it if needed.) (#7800 by @Chandu-4444)
βοΈ API changes
- Make
DivOverlay
/Tooltip
interactive
(#7531, #7532 by @johnd0e) - Add
openOn
,close
,toggle
functions toDivOverlay
(#6639 by @johnd0e) - Introduce
DomEvent.off(el)
to remove all listeners (#7125 by @johnd0e) - Allow preventing round-off errors by passing
false
toUtil.formatNum
/toGeoJSON
(#7100 by @johnd0e) - Add
autoPanOnFocus
toMarker
(#8042 by @IvanSanchez) - Add
referrerPolicy
toTileLayer
(#7945 by @natevw) - Add
playsInline
toVideoOverlay
(#7928 by @Falke-Design) - Add
getCenter
toImageOverlay
(#7848 by @Falke-Design) - Fire a
tileabort
event when aTileLayer
load is cancelled (#6786 by @dstndstn) - Add
crossOrigin
toIcon
(#7298 by @syedmuhammadabid)
β¨ Improvements
- Improve memory footprint by removing
will-change
CSS property on tile images (#7872 by @janjaap) - Improve reliability of icons path detection heuristics (#7092 by @johnd0e)
- Improve performance of adding tiled sources by avoiding excessive updates in
GridLayer.onAdd
(#7570 by @johnd0e) - Improve handling of edge cases in
panInside
(#7469 by @daverayment) - Minify marker icon SVG (#7600 by @rala72)
- Allow template keys with spaces in
TileLayer
URL (#7216 by @lubojr) - Improve behavior of
Tooltip
bound toImageOverlay
(#7306 by @IvanSanchez) - Remove the gap between Popup tip and content dialog (#7920 by @Malvoz)
- Fire
mousemove
through Canvas to map if it has no layers (#7809 by @johnd0e) - Add print styles to prevent printers from removing background-images in controls (#7851 by @Malvoz)
- Move attribution code from
Layer
toControl.Attribution
(#7764 by @johnd0e) - Refactor
vmlCreate()
so that it does not expose closure toTypeError
(#7279 by @darcyparker) - Improve reliability of
Control.Layers
by not relying on Browserandroid
andtouch
properties (#7057 by @johnd0e) - Improve reliability of
Tooltip
by not relying on Browsertouch
checks (#7535 by @johnd0e) - Make
Browser
mutable for easier automated testing (#7335 by @bozdoz) - Replace
div
withspan
inControl.Layers
container to fix an HTML validation error (#7914 by @tmiaa) - Add a Ukrainian flag to default attribution πΊπ¦ (by @mourner in #8109)
π Accessibility
- Increase default font sizes and decrease attribution transparency for improved legibility (#8057, by @mourner)
- Improve accessibility of popup close button (#7908, by @Malvoz)
- Auto pan to markers on focus by default for improved keyboard operability (#8042 by @IvanSanchez)
- Add accessibility section to plugins guide (#7277 by @Malvoz)
- Update
Marker
to default torole="button"
&alt="marker"
for an improved screen reader experience (#7895 by @tmiaa) - Set
role="button"
for appropriate semantics on the<a>
layers control (#7850 by @Malvoz) - Generally enable outlines for keyboard users by not stripping
outline
on focus for keyboard events (#7259 by @jafin) - Enable outlines on
leaflet-container
for keyboard users (#7996 by @Malvoz) - Multiple enhancements to popup's close button (#7794 by @Falke-Design)
- Use relative
font-size
units for resizable text (#7800 by @Chandu-4444) - Apply
:hover
styles to:focus
as well (#7274 by @Malvoz) - Hide the decorative attribution separator from screen readers (#7969 by @Malvoz)
- Make the disabled state of zoom controls available to screen readers (#7280 by @akshataj96)
- Hide the +/- characters in zoom controls from screen readers to prevent erroneous announcements (#7795 by @Falke-Design)
π Bug fixes
- Fix vector drift when dragging and immediately zooming (by @manubb @johnd0e @mourner in #8103)
- Reduce the occurrence of glitches on rapid zoom (by @mourner in #8102)
- Fix
Marker
jumping position while zooming in certain cases (#7967 by @Falke-Design) - Fix opening / closing
Tooltip
while dragging the map (#7862 by @Falke-Design) - Break the reference to the options of the
Class
prototype (#7459 by @Falke-Design) - Improve
Tooltip
optionspermanent
&sticky
to work together (#7563 by @Falke-Design) - Check if map container is still connected with Leaflet in
locate
event listener (#7813 by @Falke-Design) - Fix
Tooltip
bindTooltip
to unbind existent tooltip (#7633 by @Falke-Design) - Correct
if
condition, to add zoom limits for Layer (#7609 by @vcoppe) GridLayer
redraw tiles after changingmaxNativeZoom
(#6443 by @cherniavskii)- Fix
Popup
keepInView
if the map needs to panned over a long distance (#7792 by @Falke-Design) - Tolerate wrong event names in
add/removePointerListener
(#7808 by @johnd0e) - Reset width & padding to prevent cascading CSS from breaking tile rendering (#6843 by @Spudley)
- Fix
mousedown
event calling after draggingCanvas
map (#7781 by @johnd0e) - Decrease
console.warn
pollution (#7748 by @johnd0e) - Fix
contextmenu
event default-preventing when there are >1 target candidates (#7544 by @johnd0e) - Prevent click on
Popup
-tip from firing on map. (#7541 by @johnd0e) - Fix error by calling
Path.setStyle
before adding the layer to the map (#6941 by @NielsHolt) - Reset
BoxZoom
after cancel with ESC (#7597 by @Falke-Design) - Fix
noConflict
(#7855 by @Falke-Design) - Fix popup appearance when content is empty (#8136, by @ansh-ag)
- Fix
latLngToCoords
andlatLngsToCoords
not accepting array form of lat/lngs (#7436, by @Relkfaw)
π Docs
- Add a new Leaflet accessibility tutorial (#8081, by @Malvoz)
- Upgrade Code of Conduct to Contributor Covenant v2 and improve its visibility (#7984 by @mourner)
- Lint examples (#7827 by @mourner)
- Update usability in Docs (#7982, #7703, #7950, #7906, #7907, #7696, #7816, #7345, #7815, #7948, #7901 by @Falke-Design, @avioli, @Malvoz, @fulldecent, @saerdnaer, @MxDui)
- Typos / Fixes in Docs, Samples, ... (#7263, #7284, #7339, #7349, #7381, #7371, #7485, #7380, #7578, #7758, #7602, #7857, #7860, #7336, #7819 by @timgates42, @IvanSanchez, @ipovos, @elfalem, @BakuCity, @simon04, @user073, @Dev-Steven, @vanillajonathan, @aquelle-cp, @matkoniecz, @Falke-Design)
- Clarify
zoomend
event (#7460 by @xeruf) - Add
false
toprefix
ofControl.Attribution
(#7814 by @Falke-Design) LayerGroup
inherit fromInteractive Layer
(#7763 by @johnd0e)- Improve
Map.panInside
documentation (#7397 by @daverayment) - Update
Renderer
documentation to clarifytolerance
option is forCanvas
only (#7515 by @Hippl-Eric) - Add documentation for Event-Listener
propagate
argument (#7103 by @riffaud) - Fix an issue with top padding on non-API pages (#8083, by @wyankush)
π§ Workflow
- Split
plugins.md
into many files for easier maintenance (#7805 by @Falke-Design) - Add Bundlemon to watch bundle size (#7934, #7983, #7905 by @jonkoops)
- Add
npm run serve
to serve docs on localhost (#7973 by @Falke-Design) - Rename
master
branch tomain
(#7921 by @jonkoops) - Upload files to AWS even if the file-size is the same (#7853 by @jonkoops)
- Remove
leaflet-include.js
fromdebug
samples (#7776 by @Falke-Design) - Lint adjustments (#7676, #7743, #7757 by @jonkoops, @mourner)
- Simplify release process (#7711, #7854, #7727, #8039 by @mourner)
- Simplify docs update process on release (#7730 by @mourner)
- Update dependencies and add Dependabot config (#7455, #7653, #7677, #7725 by @jonkoops)
- Split main workflow into multiple parallel jobs (#7710 by @jonkoops)
- Run CI on Github actions (#7691, #7654, #7702 by @jonkoops)
- Continue running tests even if one fails (#7723 by @jonkoops)
- Add blocker Critical issue or PR that must be resolved before the next release check to release process (#8019 by @Malvoz)
- Remove all references of Bower (#7831 by @jonkoops)
- Add GitHub Actions dependency tracking with Dependabot (by @nathannaveen in #8104)
π§ͺ Tests
- Improve unit tests organization (#7852, by @Falke-Design)
- Run tests on
Internet Explorer 11
(#7741 by @jonkoops) - Run tests on
FirefoxNoTouch
(#7736, #7742 by @johnd0e) - Drop
PhantomJS
from test suite (#7660, #7724 by @jonkoops) - Simplify
.near
and.nearLatLng
usage (#7820 by @johnd0e) - Enforce forbid-only rule in the continuous integration (#7448 by @johnd0e)
- Increase
captureTimeout
andbrowserSocketTimeout
(#7856 by @Falke-Design) - Added / update tests (#7790, #7147, #7721, #7461, #7126, #7451, #7450, #7447, #7438 by @Falke-Design, @johnd0e, @phloose)
- Added missing Test-Spec-Files to index.html (#7845 by @Falke-Design)
- Cover
DomEvent
with unit tests (by @stephenspol in #8088) - Cover
DomUtil
with unit tests (#7547, by @LGNorris)
π© Plugins
- Add / update demo URLs for all plugins, fix broken links (#8003, huge work by @valerio-bozzolan).
- Add / update plugins (#7986, #7956, #7942, #7888, #7896, #7885, #7875, #7874, #7833, #7834, #7832, #7812, #7786, #7802, #6534, #6547, #7367, #7392, #7412, #7631, #7437, #7408, #6500, #7957, #7484, #7236, #7053, #7050, #7312, #7623, #7534, #7626, #7553, #7423, #7619, #7065, #7663, #7690, #7180, #7714, #7665, #7179, #6641, #7647, #7635, #7473, #7471, #7363, #7323, #7295, #7292, #7291, #7257, #7276, #7470, #7700, #7617), #8097, #8096, #8049