All notable changes to this project are documented in this file. This project adheres to Semantic Versioning.
This release is functionally identical to the last one,
v0.17.2
.
The project has reached a high-enough level of stability to be used in production, and breaking changes will now be reflected via major version changes.
- Update to
draftjs-filters@1.0.0
. This does not include any functional changes, but will cause a duplicated dependency for projects having bothdraftail
anddraftjs-filters
as deps if they don’t also updatedraftjs-filters
. - Add Draft.js copy-paste handling overrides from
draftjs-conductor
. This makes Draftail always preserve the full content as-is when copy-pasting between editors. Fix #147 (thibaudcolas/draftjs-conductor#2).
- Unsupported actions causing an atomic block to be without entity now soft-fail with an un-editable atomic block instead of hard-fail wagtail/wagtail#4370.
- Add workaround for RichUtils image delete blind spot reported in wagtail/wagtail#4370 (#144).
- Add basic API for arbitrary controls in the toolbar.
- Expose
ToolbarButton
component in the API. - Add ability to set
ariaDescribedBy
prop of Draft.js.
- Replace block entities by a paragraph when using
onRemoveEntity
. - Replace
ListNesting
implementation with the one fromdraftjs-conductor
.
- Fix copy-paste filter running more often than necessary.
- Use darker placeholder text color to pass WCAG2.0 AAA level contrast ratio. Overridable via
$draftail-placeholder-text
. - Fix HR block spacing at the top of the editor.
- Remove
DraftUtils.isSelectedBlockType()
. - Remove
DraftUtils.hasCurrentInlineStyle()
.
- Remove toolbar z-index when the editor is not focused, to reduce chances of interferring with other components.
- Adjust toolbar button alignment for text-only buttons.
- Replace
className
prop for blocks by dynamically adding a class based on block type. - Update to
draftjs-filters@0.7.0
to preserve list items in Word. - Update
draft-js
peerDependency version to 0.10.5.
- Fix Markdown shortcuts for blocks removing styles and entities at the end of the block text.
- Remove React 15 from peerDependencies.
- Replace nested-list-items Sass helper with new auto-generated CSS in JS.
- Update to
draftjs-filters@0.6.1
to fix entities not being cloned on paste.
- Remove support for
maxListNesting
greater than 10.
- Make line break and horizontal line controls configurable, by passing an object with
icon
,label
,description
props. - Add ability to set
textAlignment
,textDirectionality
,autoCapitalize
,autoComplete
,autoCorrect
props of Draft.js.
- Rename
DraftUtils.addLineBreakRemovingSelection
toDraftUtils.addLineBreak
. - Replace
showUndoRedoControls
with separate propsshowUndoControl
andshowRedoControl
for which control UI can be overriden. - Make all keyboard shortcut labels language agnostic.
- Fix
DraftUtils.addLineBreak
adding line breaks in the wrong place when selection is collapsed.
- Add default block spacing to make it easier to distinguish empty blocks.
- Make rich text styles specific to Draftail.
- Update to
draftjs-filters@0.5.0
to improve filtering on undefined attributes. - Update editor read-only styles to integrate better with any background color.
- Prevent toolbar tooltip from having a transition delay on close.
- Prevent toolbar tooltip from staying open when hovered.
- Add
Draftail-unstyled
class to unstyled block, makes it easy to style unstyled blocks. - Add
$draftail-editor-background
variable to override editor bg. - Add
draftail-richtext-styles
mixin to style rich text content within the editor. - Add imperative
focus()
API to the editor, like that of Draft.js. - Add
onClose
prop to sources, to close the source without focusing the editor again.
- Make all icons
vertical-align: middle;
by default. - Update to
draftjs-filters@0.4.0
to allow filtering on undefined attributes.
- Fix icons / labels alignment in the toolbar.
- Add new Sass constants to make the editor more themable:
$draftail-editor-padding, $draftail-editor-text, $draftail-editor-font-family, $draftail-editor-font-size, $draftail-editor-line-height, $draftail-toolbar-radius, $draftail-editor-border, $draftail-toolbar-tooltip-radius, $draftail-toolbar-tooltip-duration, $draftail-toolbar-tooltip-delay
. - Delay toolbar tooltip opening on hover by 0.5s, animated over 0.1s.
- Make Markdown-style markers work on non-empty blocks (#53).
- Switch to rollup for package compilation.
- Move
DraftailEditor
from default export of draftail to named export (import { DraftailEditor } from 'draftail';
). - Wrap
propTypes
in env check so they only appear in dev build. - Rename / namespace all overridable Sass constants.
- Rename
nested-list-item($depth)
todraftail-nested-list-item($depth)
. - Stop defining
$draftail-tooltip-radius
based on$draftail-editor-radius
. - Simplify
DraftUtils.getSelectedBlock()
implementation. - Rename
options
prop toentityType
for entity sources. - Rename
onUpdate
prop toonComplete
for entity sources. - Rename
entityConfig
prop toentityType
for entity blocks. - Replace normalize API with
draftjs-filters
(#123). - Update toolbar tooltips to show markdown markers for all blocks.
- Prevent toolbar button labels from being selected.
- Fix newline block insertion & reset creating 2 entries in undo stack (#105).
- Remove all unused variables from Sass constants.
- Remove
immutable
frompeerDependencies
. - Remove
draftjs-utils
fromdependencies
. - Remove
DraftUtils.createEntity()
. - Remove
DraftUtils.getAllBlocks()
. - Remove
DraftUtils.getEntityRange()
. - Remove
onClose
prop for entity sources.
- Add new
DraftUtils.getEntitySelection(editorState, entityKey)
method, returning the selection corresponding to a given entity. Note: only works if the entity is in the currently selected block. - Add
DraftUtils.updateBlockEntity
method, with workaround for Draft.s 0.10 entity data update bug. - Add shortcuts for blockquote and code block to toolbar tooltips.
- Use alternative keyboard shortcuts for more formats.
- Add default labels & descriptions for built-in formats (#122).
- Process, whitelist, blacklist, migrate available blocks, styles and entities when pasting rich text (#50 & #103 thanks to @inostia, see #123 for next steps).
- Add support for custom text decorators (#121).
- Add predefined classes for block depth levels above 4, of the format
public-DraftStyleDefault-depth${depth}
. - Add
nested-list-item($depth)
Sass mixin to generate styles for arbitrary list item nesting. - Introduce new
Draftail-
class namespace for all styles (#63). - Expose Sass stylesheets to Draftail users, for extension.
- Exclude toolbar buttons from default focus navigation flow.
- Disable ligatures in the editor, to simplify cursor behaviour.
- Stop bundling the Draft.js styles. They now have to be manually included. The previous approach was prone to version mismatches.
- Configure text antialiasing for Firefox.
- Change
Icon
implementation to use SVG by default. Supports symbol references, SVG path(s), and arbitrary React components (#119). - Disable pointer events on all icons by default.
- Remove toolbar hover styles.
- Make more of the editor styling overridable.
- Move
Tooltip
outside of Draftail package. - Refactor tooltip for inline entities to be defined directly in decorators. They should now define their own tooltip (or other control), rather than rely on
data-tooltip
. - Move
Portal
component outside of Draftail. - Add
block
prop to entityTypes, and moveIMAGE
andEMBED
blocks outside of Draftail (#121). - Provide methods for
entityTypes
'block
to edit, remove entity.
- Remove Save and Cancel buttons from image block, thanks to @allcaps (#102)
- Remove
DraftUtils.getSelectedEntitySelection
. It can be replaced byDraftUtils.getEntitySelection(editorState, DraftUtils.getSelectionEntity(editorState))
. - Remove built-in support for
MODEL
entities. - Remove built-in support for
EMBED
entities. - Remove built-in support for
DOCUMENT
entities. - Remove support for
entityTypes
'imageFormats
. - Remove support for custom
entityTypes
strategy
.
- Update handleNewLine to defer breakout in code-block. Fix #104.
- Fix toolbar entity edit and remove not working on selection pre first char. Fix #109.
- Fix block type transformations moving selection to the wrong block.
- Fix editor scrolling in the wrong position when breaking a big block (facebookarchive/draft-js#304 (comment)).
- Add support for custom inline styles, thanks to @vincentaudebert (#97).
- Add basic styles for common inline styles.
- Add new
description
prop for all formats to describe the format's use with more text than thelabel
. - Add tooltips for toolbar buttons to display the full control
description
as well as its keyboard shortcut. - Add separate button groups in the toolbar.
- Add basic undo/redo controls in the toolbar (#100), displaying the related keyboard shortcuts.
- Introduce icons for hr:
―
and br:↵
. - Add keyboard shortcuts for superscript & subscript.
- Add more Markdown-like markers for heading levels (
##
), code block (triple backtick), blockquote (>
), hr (---
) (#53). - Add
spellCheck
prop, passed to Draft.jsEditor
. Sets whether spellcheck is turned on for your editor. - Add support for React 16.
- Update keyboard shortcuts format to follow that of Google Docs.
- Refine toolbar styles. Fix toolbar to the top of the page when sticky.
- Make the editor look closer to a textarea (#96).
- Update strikethrough shortcut from Google Docs.
- Update Draft.js dependency to 0.10.4, and
draftjs-utils
to 0.8.8. - Stop preserving Markdown-like block marker when undoing block type change.
- Stop restricting block type changes based on Markdown-style markers to unstyled blocks only.
- Fix tooltip position when scrolling (#99).
- Fix beforeInput text replacement happening on non-collapsed selections.
- Prevent text inserted after entities from continuing the entity. Fix #86 (#106).
This release does not have many breaking changes, but the editor's toolbar styles have changed a lot and this may cause breakage.
First, update Draftail and its Draft.js peer dependency: npm install --save draft-js@^0.10.4 draftail@0.9.0
.
Then, you will want to update controls to leverage the new description
prop. It will be displayed in the new toolbar tooltips. Here is a brief example:
blockTypes={[
{
type: BLOCK_TYPE.HEADER_THREE,
label: 'H3',
// Use a description to further convey what the control does.
+ description: 'Heading 3',
},
{
type: BLOCK_TYPE.UNORDERED_LIST_ITEM,
// The icon is enough – but use the new prop to help screen reader users.
- label: 'UL',
+ description: 'Bulleted list',
icon: 'icon-list-ul',
},
]}
- Add
name
attribute to button elements to simplify targeting in browser automation tests. - Publish the package as an ES2015 module.
- Upgrade draftjs-utils to latest (draftjs-utils).
- Use references to window object instead of global.
- Update dependencies to remove Immutable.js duplication
- Expose reusable Portal component as part of the API.
- Only stick toolbar when editor is active.
- Make editor slightly bigger.
- Fix
editor
class name concatenation.
- Fix CSS import present in published library.
- Make the editor toolbar sticky (requires a polyfill, documented in README).
- Add support for
placeholder
attribute.
- Improve "active block" rendering and disabled state.
- Fix missing vertical spacing between button rows.
- Fix missing pointer cursor on tooltip button.
- Remove
Element.closest
polyfill from main lib.
- Add default
strategy
for entity types based ontype
.
- Change empty
RawDraftContentState
in conversion API to be null. - Change entity type nomenclature to use
source
anddecorator
in place ofcontrol
andcomponent
.
- Implement list depth normalisation on copy/paste.
- Add title attributes on buttons to display keyboard shortcuts. Fix #37.
- Override default code-block element. Fix #41.
- Update project to use draft-js@0.10 API
- Move draftjs-utils
peerDependency
to be a dependency. - Move immutable
peerDependency
to be a dependency. - Copy/paste of rich text is now configurable via the
stripPastedStyles
option. - Copy/paste of rich text is now disabled by default. This will be enabled by default once it is better supported.
- Fix image block not unlocking editor on cancel.
- Make
hr
availability configurable withenableHorizontalRule
. #25. - Add
br
support, availability configurable withenableLineBreak
. - Prevent soft line breaks from keyboard shortcut if disabled.
- Add editor CSS to published package. #17
- Add common keyboard shortcuts (inspired by Google Docs, see documentation for the full list).
- Add support for "autolist" behavior (lines starting with
-
,*
,1.
are automatically converted to list items).
- Max nested list level is now 1.
- Max nested list level is now configurable via a prop.
- Save interval is now configurable via a prop.
- Change
hr
representation to use atomic block and entity instead of custom block type. #1 mediaControls
,dialogControls
andmodelPickerOptions
are now a singleentityTypes
array. #26sources
anddecorators
are now declared directly in theentityTypes
array items.INLINE_STYLES
property is nowinlineStyles
.BLOCK_TYPES
property is nowblockTypes
.- Inline styles and block types now use the
type
attribute instead ofstyle
. imageFormats
are now assigned directly on theIMAGE
entity type. #33- All options are now direct props of
DraftailEditor
instead of attributes of theoptions
prop. #21
- Fix erratic behavior of list nesting changes with tab and shift+tab shortcuts. #34
- Fix keyboard shortcuts giving access to unallowed formatting. #32
- Fix tooltip not opening when clicking decorator icon. #5
- draftail no longer depends on jQuery.
- draftail no longer depends on the Wagtail font icon.
- Allow customisation of block style function & block render map.
- Pressing return on an empty list item should un-indent it until it is not nested, and then remove it.
- Pressing return at the end of a block should create an empty unstyled block.
- Buttons do not trigger a form submit
This release contains breaking changes.
- Keyboard shortcuts documentation
- Expose onSave hook instead of auto field saving (springload#23)
- Reworking most of the editor codebase to make it more maintainable.
- Configurable block types and inline styles.
First usable release!
Template from http://keepachangelog.com/
- Something was added to the API / a new feature was introduced.