Notable changes to Draft.js will be documented in this file.
Changes to src
are live in production on facebook.com at the time of release.
- Add support for
ariaDescribedBy
prop, for better a11y. (Suraj Karnati in a6af3e15) - Add support for
ariaLabelledBy
prop, for better a11y. (@jackyho112 in #1519)
- Cause editor to break out of code block when user enters two blank lines. (Hanzhi Zhang in 548fd5d1)
- Preserve list indentation when copying and pasting from one Draft.js editor into another. (@GordyD in #1605)
- Fix
cannot read property 'update' of undefined
error that was thrown when typing same character into selection that starts with that character. (@existentialism in #1512) - Fix
encodeRawBlocks
to handle non-contiguous entities. Entities should always be contigious, and cover one sequential range of characters. However, in cases where entityState is corrupted to include non-contiguous entities,encodeRawBlocks
would improperly process the entities in that case. (Frank Thompson in 0059dd46) - Updated CSS for DraftEditorPlaceholder to support multiline placeholder (Gaurav Vaish in c38b0285
- Fix issue where typing at the end of a link caused the link to continue. (Ian Jones in d16833b3)
- Fix regression of bug where clicking a link caused the focus to move but the selection state was not cleared, leading to a 'node not found' error. (@flarnie in 55316176)
- Loosen Flow type definition for DraftBlockType to allow user-defined custom block types. (@mitermayer in #1480)
- Expose
onRightArrow
andonLeftArrow
props to allow handling keyboard events when right or left arrow is pressed. (@eessex in #1384) - Expose Draft.css as default CSS export in package.json for use by CSS preprocessors. (@darobin in #566)
- Fix bug where editors inside draggable parent were broken for Safari. (@mattkrick in #1326)
- Stop pulling in Enzyme as production dependency. D'oh. (@flarnie in #1415)
- Fix
TypeError: Cannot read property 'nodeType' of undefined
error whereanchorNode
wasundefined
. (@tleunen in #1407) - Fix error thrown when callback tries to
focus
on editor after it has been unmounted. (@mattkrick in #1409) - Fix bug where selecting a single character then typing it doesn't replace it. (@karanjthakkar in #719)
- Clear the block type when backspacing at the start of the first block with rich text utils. (@jvaill in #748)
- Fixed bug where using a custom block type without overriding the default block map threw an error. (@southerncross in #1302)
- Update dependency on
fbjs
to get fix for bug wherefocus()
caused unexpected scroll (@flarnie in #1401)
- Added support for
aria-controls
in draft.js (@jessebeach in 7f0cab28)
- Change
aria-owns
toaria-controls
in draft.js. (@jessebeach in 7f0cab28)- Deprecates support of
ariaOwns
andariaOwneeID
props.
- Deprecates support of
- Deprecate use of
ariaHasPopup
prop in draft.js.ariaExpanded
should be used instead if an input is showing a dropdown with options.(@jessebeach in 744e9b4e) - Pasting an
img
no longer inserts thesrc
by default; now inserts image emoji if no decorator is used. (@aadsm in 0b22d713 and @flarnie in 1378)
- Fix issue where selection state was not cleared on blur and refocus of the editor. (@sophiebits in 19b9b1c5)
- Fix issue where pasting code into code block defaulted to plain text, and styles were dropped from pasted blocks in general. (@bumbu in e8d10112)
- Fix issue where Flow was not running with some 'import' statements (@flarnie & @yuku-t in #1263)
- Fix bug where Draft threw when two keys were pressed at same time in React 16 async mode (@sophiebits in 1c6a49b8)
- Fix recent Chrome bug where tab causes error (@sophiebits in 5863399a)
- Fix "Refs must have owner" error when multiple copies of React are used (@mks11 in #925)
- Fix issue where AT could treat 'return' as submit in Draft (@jessebeach in #1295)
- Don't allow
aria-expanded
to be true unless the aria role is combobox (@jessebeach in 3494d45d) - Fix pesky "This Selection object doesn't have any Ranges" bug (@sophiebits in 96688e10 and 036e3a84)
- Fix bug where pasting
img
with large data URL source could crash editor (@aadsm in 0b22d713)
- Support UMD in dist output format (#1090)
- Expose textDirectionality prop
- Expose props disabling auto-correct, auto-complete, auto-capitalize
- Add
editorKey
prop for SSR - Pass
block
tocustomStyleFn
callback - Added
moveAtomicBlock
toAtomicBlockUtils
- Fix some cases of "Failed to execute 'setStart' on 'Range" bug (#1162)
- Fix Chrome text deletion bug (#1155)
- Pass fresh editorState to edit handlers (#1112 and #1113)
- Fix for text insertion bugs in Android 5.1
- Correctly delete immutable and segmented entity content when at the edge of a
selection
- Fix bug where all text except first letter was dropped in IE11
- Fix bug where starting new line incorrectly toggled inline style
- Fix 'getRangeClientRects' to work around webkit selection bounding rect bug
- Add improved API for entity manipulation to contentState
- Add deprecation warnings to old Entity module API
- Add image support to convertFromHTML
- Add option of 'aliasedElements' in block render map
- This version supports both the old and new Entity API; we are deprecating the Entity module in favor of using contentState. See the migration guide.
- Fix bug where block data was not removed when deleting atomic block
- Fix bug preventing pasting from clipboard
- Fix dead key deletion and deletion in 2-Set Korean
- Fix ContentState.createFromBlockArray to allow taking an empty array
- Improve typing in Korean on Windows
customStyleFn
for more control over inline style ranges
- Update Flow version
- Fix flow error in DraftEditorDragHandler
- Return 'handled' or 'not-handled' from cancellable handlers callback
- Boolean return value is deprecated
- Expand and update documentation
- Fix selection of atomic block when it is the last block
- Preserve the depth of custom block types when converting to raw
- Stop mutating component children when creating blocks with wrapper elements
- Include
object-assign
in npm dependencies - Include
babel-core
in npm dependencies of tex example
customStyleFn
for more control over inline style ranges- Uses
internalClipboard
for Safari - Metadata for
ContentBlock
objects convertFromHTMLToContentBlocks
:- Support for
mailto
protocol for links - Support "unset" inline styles
- Support for
- Run ESLint on examples
- Removed redundant ESLint module in TeX example
- Update Travis CI config for readability, Node v4 requirements, and pruning/updating npm dependencies
- Use
immutable
~3.7.4 to avoid Flow errors in updated versions - Modify
getSelectionOffsetKeyForNode
to search for nested offset-annotated nodes - Upgrade eslint to 3.0.1, use fbjs config
- Update to Flow 0.28
- Jest
- Update to 12.1.1
- Replaced
jest.fn().mockReturnValue(x)
withjest.fn(() => x)
- Remove extra spaces from the text decoration style
- No longer using
nullthrows
forblockRenderMap
convertFromHTMLToContentBlocks
:- Improved variable names in
joinChunks
- Additional whitelisted entities such as
className
,rel
,target
,title
- Improved variable names in
- Fix bug where placeholder text was not being erased in Chrome
- Fix bug where double click link in Firefox broke selection
- Kill iOS tooltips
- removed unnecessary
undefined
checks onDraftEditorLeaf
convertFromHTMLToContentBlocks
:- Preserve pasted block type on paste
- Strip XML carriage returns and zero-width spaces
getBlockMapSupportedTags()
will always return a valid array of tags
- Documentation fixes
blockRenderMap
: A map that allows configuration for the DOM elements and wrapper components to render, keyed by block type- Includes configurability of element-to-block-type paste processing
- Update to Jest 11.0.2
- Change deletion behavior around
atomic
blocks to avoid DOM selection errors - Properly apply entities across multiple blocks in
- Improve placeholder behavior for a11y
- Properly remove and modify entity ranges during spellcheck changes
- Match Chrome
<textarea>
behavior during cmd+backspace command at visual line-start
ContentState.getFirstBlock()
convenience method
- return key handling now goes through command flow to enable easier
custom
'split-block'
handling. convertFromRaw
now returns aContentState
object instead of anArray<ContentBlock>
- option+spacebar no longer incorrectly scrolls browser in Chrome OSX
- Cursor behavior when adding soft newlines
AtomicBlockUtils
, a utility module to simplify addingatomic
blocks to anEditorState
- The
media
block type is nowatomic
, to better represent that this type is not just intended for photos and videos
- Avoid clearing inline style override when setting block type or depth
editable
field for custom block component configuration- Default key binding support for Ctrl+M (
split-block
)
- Always wrap custom block components, based on block type
- Includes
data-editor
,data-offset-key
,data-block
in block props
- Includes
- Replace
onPasteRawText
prop withhandlePastedText
- Properly extract custom inline styles for
convertToRaw
- Fix internal paste behavior to better handle copied custom blocks
- Export
getVisibleSelectionRect
- Export
convertFromHTML
- Export
DraftEditorBlock
- Build before publish to get the warning suppression in place correctly
- React 15 RC as peer/dev dependency, provide
suppressContentEditableWarning
- Move
white-space: pre-wrap
into inline style to resolve insertion issues handleDrop
prop method forEditor
to allow manual drop managementdecoratedText
prop for decorator componentsgetVisibleSelectionRect
, to provide Rect for DOM selection- Export
KeyBindingUtil
andgetDefaultKeyBinding
- Triple-clicks followed by block type changes now only affect first block
DraftEditorLeaf
now re-renders correctly when its styles change- Backspace behavior within empty code blocks
- Initial public release