- Fix typing errors for Quill.register by @hzgotb in slab#4127
- Fix event source when deleting a link with shortcuts by @luin in slab#4200
- Avoid side effects for Enter/Backspace when composing in Safari by @luin in slab#4201
- Ignore pasting images when image format is disallowed by @luin in slab#4202
- Prevent overriding of theme's default toolbar settings mistakenly #4120
- Improve typings for methods that return a Delta #4136
- Fix toolbar icons for h3-h6 #4131
We are thrilled to announce the release of Quill 2.0! Please check out the announcement post.
- Quill is now a valid ESM package for better ecosystem (e.g. bundlers) and tree-shaking support
- Nested Quill support #3590
- Improved IME and spell corrector support #3807
- Semantic cleanups for TEXT_CHANGE event #3778
- History: Record selection in history module #3823
- Auto detect scrolling container #3840
- Clipboard: Improve support for pasting from Google Docs and Microsoft Word
Quill 2.0 includes many performance optimizations, the most important of which is the improved rendering speed for large content.
- Improve inserting performance #3815
- Avoid fetching selections when possible #3538
- No need to setContents when container is empty #3539
- Migrated to TypeScript
- Provided official TypeScript declarations
- Migrated to Vitest for unit testing
- Migrated to Playwright for E2E testing
- Migrated website to Gatsby
- Clipboard Add support for Quill v1 list attributes
- Fix overload declarations for
quill.formatText()
and other methods - Expose Bounds type for getBounds()
- Expose Range type
- Allow ref for insertBefore to be null
- Include source maps for Parchment
- Clipboard Support pasting links copied from iOS share sheets
- Fix config parsing where undefined values were kept
- Expose types for Quill options
- Remove empty .css.js files generated by bundlers
- Fix
Quill#getSemanticHTML()
for list items - Remove unnecessary Firefox workaround
- Clipboard Fix redundant newlines when pasting from external sources
- Add
formats
option for specifying allowed formats
- Fix toolbar button state not updated in some cases
- Narrower
BubbleTheme.tooltip
type - Fix
Selection#getBounds()
when starting range at end of text node - Improve compatibility with esbuild
- Remove unnecessary lodash usages.
- Clipboard Convert newlines between inline elements to a space.
- Clipboard Avoid generating unsupported formats on paste.
- Clipboard Improve support for pasting from Google Docs and Microsoft Word.
- Clipboard Ignore whitespace between pasted empty paragraphs.
- Syntax Support highlight.js v10 and v11.
- Fix IME not working correctly in Safari.
- Clipboard Support paste as plain text.
- Fix
Quill.getText()
not respectinglength
parameter. - History Fix redo shortcut not working on Linux and Windows.
- Fix syntax label from "Javascript" to "JavaScript".
- Fix typing errors for emitter.
- Inline SVG images for easier bundler setup.
- Improve typing for Registry.
In the upcoming 2.0 release, Quill has been significantly modernized. Leveraging the latest browser-supported APIs, Quill now delivers a more efficient and reliable editing experience.
- Nested Quill support #3590
- Improved IME and spell corrector support #3807
- Semantic cleanups for TEXT_CHANGE event #3778
- History: Record selection in history module #3823
- Auto detect scrolling container #3840
Quill 2.0 includes many performance optimizations, the most important of which is the improved rendering speed for large content.
- Improve inserting performance #3815
- Avoid fetching selections when possible #3538
- No need to setContents when container is empty #3539
- Migrated to TypeScript
- Provided official TypeScript declarations
- Migrated to Vitest for unit testing
- Migrated to Playwright for E2E testing
- Migrated website to Gatsby
Security related bug fixes.
Thank you @danfuzz, @danielw93, @jonathanlloyd, and @k-sai-kiranmayee for your contributions to this release.
Thanks to @berylw and @erinsinger93 for contributions to this release!
- Fix indent preservation of a checked checklist item #1818
- added as a shortcut to trigger bullet list formatting #1819
- Fix pasting text-align styles #1873
- Fix cursor position after dangerouslyPasteHTML #1886
- Fix value of history stack in text-change handler #1906
- Workaround for Webkit locking up when navigating around images using hotkeys #1910
Thank you @araruna, @bryanrsmith, @haugstrup, @icylace, @leimig, @LFDM, @nikparo, @rafpaf and @vk2sky for your contributions to this release.
Thanks to @danfuzz and @SoftVision-CarmenFat for contributions to this release!
- Fix
getFormat
with no parameters while editor is not focused #1548 - Remove automatic highlighting across embeds #1691
- Support checking checklist on mobile #1693
- Fix list creation keyboard shortcuts #1723
- Show KaTex rendering errors #1738
Thank you @altschuler, @arrocke, @guillaumepotier, @sferoze and @volser for your contributions to this release.
- Pasting into code block should always paste as code #1624
- Fix removing embed selection when arrow keys change selection #1633
- Fix selection restoration after image insertion #1649
- Fix selection-change firing after dragging off screen #1654
- Fix placeholder text spacing #1677
Thanks to @abramz, @amitm02, @eamodio, @HWliao, @mmitis, @nelsonpecora, @nipunjain87, and @ValueBerry for contributions to this release!
Thank you @Natim and @stephenLYao for your contributions to this release.
Add matchVisual
configuration to Clipboard.
- Use DOM API to determine selected
<select>
option #1576 - Add
:focus
styles to toolbar #1540 - Allow users to undo automatic keyboard completions #1538
- Use github-pages gem to make development environment consistent #1536 #1544
- Fix composing Chinese with preformatting #1514
- Fix example clipboard module in docs #1502
- Fix list layout in RTL mode #1498
- Clarify documentation for scrollingContainer #1496
- Add
tel
to default link whitelist #1436 - Fix cursor interaction with custom contenteditable=false embeds #1172 #1181
- Fix rendered cursor in Chrome when interacting with scrollbar #1114
Thanks to @alexkrolick, @amitm02, @Christilut, @danielschwartz, @emanuelbsilva, @ersommer, @fiurrr, @jackmu95, @jmzhang, @mdpye, @ralrom, @sferoze, @simon-at-fugu, and @yogadzx for contributions to this release!
- Disable Grammarly by default #574
- Fix RTL list spacing #1485
- Add support for mobile Youtube links #1489
Thank you @amitm02, @benbro @nickbaum, @stalniy and @ygrishajev for your contributions to this release.
- Fix cursor shifting to be exclusive of user cursor #1367
- Fix iOS hover state on toolbar #1388
- Fix
getText()
for Bangla #1427 - Fix Korean character composition in Safari #1437
- Fix pasting HTML handling special class names #1445
- Fix paste or initializing with font-weight #1456
- Fix updating active picker logic #1468
Thanks to @aliciawood, @benbro, @denis-aes, @despreju, @GlenKPeterson, @haugstrup, @jziggas, @RobAley, @sheley1998, @silverprize, and @yairy for contributions to this release!
- Fix pasting nested list #906
- Fix delete key interaction at end of list #1277
- Fix pasting whitespace prefix #1244
- Fix file dialog open speed #1265
- Fix backspace with at beginning of list interaction with meta keys #1307
- Fix pasting nested styles #1333
- Fix backspacing into an empty line should keep own formats #1339
- Fix IE11 autolinking interaction #1390
- Fix persistent focus interaction with tabbing away #1404
Thanks to @bigggge, @CoenWarmer, @cutteroid, @jay-cox, @kiewic, @kloots, @MichaelTontchev, @montlebalm, @RichardNeill, and @vasconita for your contributions to this release.
- Fix scrolling when appending new lines #1276 #1361
- Fix binding to explicit shortcut key #1365
- Merge clone update #1359
Thank you @artaommahe, @c-w, @EladBet, @emenoh, and @montlebalm for contributions to this release!
- Fix backspace/delete on Windows/Ubuntu #1334
Thanks to @dinusuresh for your contributions to this release.
- Fix link removal on Snow theme #1259
- Fix CMD+backspace on empty editor #1319
- Fix disabled checklist behavior #1312
Thank you @danielschwartz, @JedWatson, @montlebalm, and @simi for contributions to this release!
Add concept of experimental APIs: they are APIs meant to try out support for use cases we would like to address, but gives flexibility to find the right API interface. As such they are not covered by Semantic Versioning. Several are added to start things off: find
, getIndex
, getLeaf
, getLine
, getLines
.
- Merge disabling list keyboard shortcut when list format is disabled #1257
Thanks to @haugstrup for your contributions to this release.
- Preserve user selection on API changes #1152
- Fix backspacing into emojis #1230
- Fix ability to type after emptying line in IE/Firefox #1254
- Fix whitelisting block formats #1256
Thank you @benbro, @haugstrup, @peterweck and @sbevels for contributions to this release!
- Support pasting italics from Google Docs #1185
- Fix setting dropdown picker back to default #1191
- Fix code-block formatting on empty first line in Firefox #1195
- Prevent formatting via keyboard shortcuts when not whitelisted #1197
- Fix select-all copy and overwrite paste in Firefox #1202
Thank you @adfaure, @berndschimmer, @CoenWarmer, @montlebalm, and @TraceyYau for contributions to this release!
- Support pasting italics from Google Docs #1185
- Fix setting dropdown picker back to default #1191
- Fix code-block formatting on empty first line in Firefox #1195
- Prevent formatting via keyboard shortcuts when not whitelisted #1197
- Fix select-all copy and overwrite paste in Firefox #1202
Thank you @adfaure, @berndschimmer, @CoenWarmer, @montlebalm, and @TraceyYau for contributions to this release!
- Fix dropdown values reverting to default #901
- Add config to prevent scroll jumping on paste #1082
- Prevent scrolling on API source calls #1152
- Fix tsconfig build error #1165
- Fix delete and formatting interaction in Firefox #1171
- Fix cursor jump on formatting in middle of text #1176
Thanks to @cutteroid, @houxg, @jasongisstl, @nikparo, @sbevels, and sferoze for your contributions to this release.
Checklists #759 support has been added to the API. UI and relevant interactions are still forthcoming.
Thank you @jgmediadesign and @julienbmobile for contributions to this release!
- Remove unnecessary type attribute in documentation #1087
- Fix chrome 52+ input file label open slow #1090
- Only query the last op's insertion string if it's actually an insert #1095
Thank you @jleen, @kaelig, and @YouHan26 for your contributions to this release.
Thanks to @eamodio and @metsavir for contributions to this release!
- Fix setContents on already formatted text #1065
- Fix regression #1067
- Improve documentation #1069 #1070
Thank you benbro, derickruiz, eamodio, hallaathrad, and philly385 for your contributions to this release.
- TEXT_CHANGE event now use cursor position to inform change location #746
- Fix inconsistent cursor reporting between browsers #1007
- Fix tooltip overflow in docs #1060
- Fix naming #1063
- Fix Medium example #1064
Thanks to @artaommahe, @benbro, @fuffalist, @sachinrekhi, @sergop321, and @tlg for contributions to this release!
Special thanks to @DadaMonad for contributions on fast-diff that enabled the #746 fix.
Quill has always allowed API calls, even when the editor is in readOnly mode. All API calls also took a source
parameter to indicate the origin of the change. For example, a click handler in the toolbar would call formatText
with source
set to "user"
. When the editor is in readOnly mode, it would make sense for user initiated actions to be ignored. For example the user cannot focus or type into the editor. However because API calls are allowed, the user could still modify the editor contents #909. The natural fix is to ignore user initiated actions, even if it came through an API call, when the editor is in readOnly mode.
However, the documentation never stated API calls with source
set to "user"
would be ignored sometimes, so this would be a breaking change under semver. Some could argue this is a bug fix and would only warrant a patch version bump, but this seems disingenuous for this particular case. The fact that almost no one took advantage of the source
beyond default values is irrelevant under the eyes of semver.
So a strict
configuration option has been added. It is true by default so the above behavior is unchanged, and #909 is unfixed. Changing this to false
, will use new behavior of ignoring user initiated changes on a disabled editor, even if through an API call.
- Fix undo when preformatted text inserted before plain text #1019
- Add focus indicator on toolbar buttons #1020
- Do not steal focus on API calls #1029
- Disable paste when Quill is disabled #1038
- Fix blank detection #1043
- Enable yarn #1041
- Documentation fixes #1026, #1027, #1032
Thank you @benbro, @cutteroid, @evansolomon, @felipeochoa, jackmu95, @joedynamite, @lance13c, @leebenson, @maartenvanvliet, @sarbbottam, @viljark, @w00fz for their contributions to this release.
Documentation clarifications and bug fixes.
- Fix attaching toolbar to
<select>
without themes #997 - Link
code
icon tocode-block
#998 - Fix undo stack when at size limit #1001
- Fix bug where
formatLine
did not ignore inline formats 8a7190
Thanks to @dropfen, @evansolomon, @hallaathrad, @janyksteenbeek, @jackmu95, @marktron, @mcat-ee, @unhammer, and @zeke for contributions to this release!
- Fix bubble theme defaults #963
- Fix browsers modifying inline nesting order #971
- Do not fire selection-change event on paste #974
- Support alt attribute in images #975
- Deprecate
pasteHTML
for removal in Quill 2.0 #981
Thank you jackmu95, kristeehan, ruffle1986, sergop321, sferoze, and sijad for contributions to this release.
- Fix #928
Thank you @scottmessinger for the bug report.
Thanks to @eamodio and @neandrake for their contributions to this release.
Quill 1.0 is released! Read the official announcement.
Fix one important bug fdd920
A few bug fixes, one with with possibly significant implications. See the issue #889 and commit fix for more details.
- Fix indenting beyond first level with toolbar #882
- Fix toolbar font/size display on Safari #884
- Fix pasting from Gmail from on different browser #886
- Fix undo/redo consistency #889
- Fix null error when selecting all on Firefox #891
- Fix merging keyboard options twice #897
Thank you @benbro, @cgilboy, @cutteroid, and @routman for contributions to this release!
A few bug fixes, including one significant one
- Fix icon picker rendering in MS Edge #877
- Add back minified build to release #881
- Fix optimized change calculation with preformatted text #883
Thanks to benbro, cutteroid, and CapTec for their contributions to this release.
A few bug fixes and performance improvements.
- Source maps now available from CDN for minified build
- Fix scroll interaction between two Quill editors #855
- Fix scroll on paste #856
- Fix native iOS tooltip formatting #862
- Remove comments from pasting from Word #872
- Fix indent at all supported indent levels #873
- Fix indent interaction with text direction #874
Thank you @benbro, @fernandogmar, @sachinrekhi, @sferoze, and @stalniy for contributions to this release!
Take a look at Quill 1.0 Release Candidate for more details.
- Going forward the minimal stylesheet build will be named quill.core.css, instead of quill.css
A huge thank you to all contributors to through the beta! Special thanks goes to @benbro and @sachinrekhi who together submitted submitted almost 50 Issues and Pull Requests!
- @abejdaniels
- @anovi
- @benbro
- @bram2w
- @brynjagr
- @CapTec
- @Cinamonas
- @clemmy
- @crisbeto
- @cutteroid
- @DadaMonad
- @davelozier
- @emanuelbsilva
- @ersommer
- @fernandogmar
- @george-norris-salesforce
- @jackmu95
- @jasonmng
- @jbrowning
- @jonnolen
- @KameSama
- @kei-ito
- @kylebragger
- @LucVanPelt
- @lukechapman
- @micimize
- @mmorearty
- @mshamaiev-intel471
- @quentez
- @sachinrekhi
- @sagacitysite
- @saw
- @stalniy
- @tOgg1
- @u9520107
- @WriterStat
Fixed some regressive bugs from previous release.
- Fix activating more than one format before typing #841
- Run default matchers before before user defined ones #843
- Fix merging theme configurations #844, #845
Thanks benbro, jackmu95, and george-norris-salesforce for the bug reports.
Lots of bug fixes and performance improvements.
- Keyboard handler format in initial configuration has changed.
addBinding
is overloaded to be backwards compatible.
- Preserve last bullet on paste #696
- Fix getBounds calculation for lists #765
- Escape quotes in font value #769
- Fix spacing calculation on paste #797
- Fix Snow tooltip label #798
- Fix link tooltip showing up on long click #799
- Fix entering code block in IE and Firefox #803
- Fix opening image dialog on Firefox #805
- Fix focus loss on updateContents #809
- Reset toolbar of blur #810
- Fix cursor position calculation on delete #811
- Fix highlighting across different alignment values #815
- Allow default active button #816
- Fix deleting last character of formatted text on Firefox #824
- Fix Youtube regex #826
- Fix missing imports when Quill not global #836
Thanks to benbro, clemmy, crisbeto, cutteroid, jackmu95, kylebragger, sachinrekhi, stalniy, and tOgg1 for their contributions to this release.
Potentially the final beta before a release candidate, if no major issues are discovered.
- No longer expose
ui/link-tooltip
throughimport
as implementation is now Snow specific - Significant refactoring of
ui/tooltip
- Syntax module now autodetects language, instead of defaulting to Javascript
- Formula and video insertion UI added to Snow and Bubble themes
- Fix toolbar active state after backspacing to previous line #730
- User selection is now preserved various API calls #731
- Fix long click on link-tooltip #747
- Fix ordered list and text-align right interaction #784
- Fix toggling code block off #789
- Scroll position is now automatically preserved between editor blur and focus
Thank you @benbro, @KameSama, and @sachinrekhi for contributions to this release!
Weekly beta preview release. The editor is almost ready for release candidacy but a couple cycles will be spent on the Snow and Bubble interfaces.
Image insertion is being reworked in the provided Snow and Bubble themes. The old image-tooltip has been removed in favor of a simpler and native interaction. By default clicking the image icon on the toolbar will open the OS file picker to convert and that into a base64 image. This will allow for a more natural hook to upload to a remote server instead. Some changes to the link tooltip is also being made to accommodate formula and video insertion, currently only available through the API.
- Image tooltip UI has been removed, see above
- Code blocks now use a single
<pre>
tag, instead of one per line #723
- Fix multiline syntax highlighting #723
- Keep pickers open on api text-change #734
- Emit correct source for text-change #760
- Emit correct parameters in selection-change #762
- Fix error redoing line insertion #767
- Better emitted Deltas for text-change #768
- Better Array.prototype.find polyfill for IE11 #776
- Fix Parchment errors in replacing text #779 #783
- Fix align button active state #780
- Fix format text on falsy value #782
- Use native cut #785
- Fix inializing document where last line is formatted #786
Thanks to benbro, bram2w, clemmy, DadaMonad, ersommer, michaeljosephrosenthal, mmorearty, mshamaiev-intel471, and sachinrekhi for their contributions to this release.
Weekly beta preview release.
- Pickers can now be used and is styled in Bubble theme
- Fix editing within formula #702
- Fix adding new line when deleting across lists #741
- Fix placeholder when default block tag is changed #743
- Keep Bubble tooltip open on format #744
- Fix format loss when copying from Quill #748 #750
- Break long lines in Firefox #751
- Fix cursor position being off after formatting and typing quickly #752
- Remove image resizing handles on Firefox #753
- Fix removing blockquote on initialization #754
- Fix adding blank lines on initialization #756
Thank you abejdaniels, benbro, davelozier, fernandogmar, KameSama, and WriterStat for contributions to this release.
Weekly beta preview release.
- Add blur() #726
- Fix null error #728
- Fix building with Node v6 #732
- Ensure button type for supplied buttons #733
- Fix line break pasting on Firefox #735
- Fix 'user' source on API calls #739
Thanks to benbro, lukechapman, sachinrekhi, and saw for their contributions to this release.
Weekly beta preview release.
- Headers no longer generates id attribute #700
- Add Control+Y hotkey on Windows #705
- BlockEmbed Blots are now length 1 and represented in a Delta the same as an inline embed
- value() used to return object and newline, newline is now removed
- formats used to be attributed on the newline character, it is now attributed on the object
- Enter on empty and indented list removes indent #707
- Allow base64 images to be inserted via APIs #721
- Fix typing after clearing inline format #703
- Correctly position Bubble tooltip when selecting multiple lines #706
- Fix typing after link format #708
- Fix loss of selection on using link tooltip #709
- Fix
setSelection(null)
#722
Thank you @benbro, @brynjagr, and @sachinrekhi for contributions to this release.
Weekly beta preview release.
- Keyboard was incorrectly using
metaKey
to refer to the control key on Windows. It now correctly refers to the Window key andshortKey
has been added to refer the common platform specific modifier for hotkeys (metaKey for Mac, ctrlKey for Windows/Linux) - Formula is now a module, since it uses KaTeX
- Picker now uses text from original
<option>
if available - Tabbing inside code blocks inserts tab to each line
- Enter preserves inline formats #666
- Fix resetting format button with no selection #667
- Fix paste interpretation from Word #668
- Focus scrolls to correct cursor position #669
- Fix deleting image on otherwise empty document #670
- Fix bubble toolbar formatting #679
- Fix pasting ql-indent lines #681
- Fix getting into state with double underline tag #695
- Fix source type on delete #697
- Fix indent becoming NaN #698
Thanks to @benbro, @Cinamonas, @emanuelbsilva, @jasonmng, @jonnolen, @LucVanPelt, @sachinrekhi, @sagacitysite, @WriterStat for their contributions to this release.
Weekly beta preview release. Major emphasis on keyboard API and customization.
- Rename code highlighter module to syntax
- Clipboard matchers specified in configuration appends to instead of replaces default matchers
- Change video embed to use
<iframe>
instead of<video>
enabling Youtube/Vimeo links
- Add contextual keyboard listeners
- Allow indent format to take +1/-1 in addition to target indent level
- Shortcuts for creating ordered or bulleted lists
- Autofill mailto for email links #278
- Enter does not continue header format #540
- Allow native handling of backspace #473 #548 #565
- removeFormat() removes last line block formats #649
- Fix text direction icon directon #654
- Fix text insertion into root scroll #655
- Fix focusing on placeholder text in FF #656
- Hide placeholder on formatted line #657
- Fix selection handling on focus and blur #664
Thanks to @anovi, @benbro, @jbrowning, @kei-ito, @quentez, @u9520107 for their contributions to this release!
Weekly beta preview release.
- Toolbar only attaches to
<button>
and<select>
elements - Toolbar uses button
value
attribute, instead ofdata-value
- Toolbar handlers overwrite default handlers instead of possibly cascading
- Deprecate keyboard
removeBinding
andremoveAllBindings
- Expose default keyboard bindings in configuration
- Add context listener to keyboard bindings
- Error when cursor places next to video embed #644
- Selection removed when clicking on a menu button in the toolbar #645
- Editor looses focus in FF after typing two bold characters #646
- Get rid of resize boxes in code in IE11 0ad636
- Text direction icon should flip the arrow when pressed #651
- Not possible to combine direction:rtl with text-align:left #652
Thanks to @benbro for the bug reports for this release!
Please see the Upgrading to 1.0 guide.