Skip to content

Releases: microsoft/roosterjs

RoosterJs 8.29.3

16 Aug 20:18
64e935f
Compare
Choose a tag to compare

Bug fix

  • Fix for case where endingBlock is null (#1182)

Engineering improvment

  • Start publishing new version from release branch.

RoosterJs 8.29.2

16 Aug 05:20
Compare
Choose a tag to compare

Bug fix

  • Fix bug "Cannot add table when editor empty" (#1179)
  • fix: imageEditPlugin cause content bounce and original image size change (#1172)

RoosterJs 8.29.0

12 Aug 18:30
5f34ac4
Compare
Choose a tag to compare

Bug fix

  • Disable insert link when selection includes multiple paragraphs (#1132)
  • Do not apply format on readonly content (#1122)
  • When insert table, do not apply existing background color (#1169)
  • Fix bug in the calculation of min-width and min-height of image resize (#1165)

Improvement

  • Add an empty line when insert a table right after another table (#1167)
  • Add a new experimental feature to improve the inline formatting when selection is collpased (#1161)

Interface changes

  • New member of interface PendingFormatStatePluginState:
    • pendableFormatSpan A temporary SPAN element to hold pending format change. it will be inserted into content when user type something,
  • New experimental feature member:
    • PendingStyleBasedFormat
  • New value of enum TableBorderFormat
    • Clear
  • New member of interface PendingFormatStatechangedEvent and CompatiblePendingFormatStateChangedEvent
    • formatCallback: A callback to do format change to a temp element. This is used for style-based format such as font and color
  • New member of interface ElementBasedFormatState
    • isMultilineSelection Whether the selected text is multiline

RoosterJs 8.28.1

30 Jul 04:38
df10343
Compare
Choose a tag to compare

Improvement

  • Modified shouldReplace to add editor as optional parameter (#1081)

Bug fix

  • Delete the whole table if the table is empty after deletion (#1106)
  • Horizontal table inserter not disposing (#1107)
  • Avoid merge of two lines when the pasted content only contains two blocks. (#1113)
  • Replace highlighted text not working (#1071)
  • Modify the Check in normalizeRect (#1134)
  • Stop Table Resizer disposal while editing (#1135)
  • InsertNode with option InsertInNewLine is inserting the new node incorrectly when target is a table cell (#1137)
  • Fix numbering list triggers (#1142)

Engineering improvement

  • Add buildmjs to export esmodules under lib-mjs (#1110)
  • Enable strict mode in roosterjs-editor-core/lib/coreApi folder (#1111)
  • Add tests
    • ListFeatures (#1118)
    • TableEdit and TableFormat (#1123)
    • CutPasteListChain plugin (#1126)
  • Run test coverage for both browsers (#1139)
  • Use caret version dependency between packages

Interface changes

  • New parameter of CustomReplacement.shouldReplace:
    • sourceEditor: A reference to the editor to allow more complex replacement rules

RoosterJs 8.27.0

17 Jul 22:13
8d782ef
Compare
Choose a tag to compare

Improvement

  • Modify the editor.addUndoSnapshot to add formatApiName to the request (#1075)
  • Fix align list item when styled (#1076)
  • Add different apiNames for automatic formatting. (#1087, #1092)

Bug fix

  • Fix bug in ensureUniqueId (#1074)
  • Fix Option+Backspace behavior on Mac (#1084)
  • Add null check in AdjustInsertPosition (#1088)
  • Fix empty selection check in TypeInContainerPlugin (#1086)

Engineering improvement

  • Add test case to Context Menu plugin (#1056)
  • Add TableFeature Tests(#1083)

Interface change

  • New parameter of addUndoSnapshot API callback parameter:
    • additonalData: Additinal data for this callback
  • New parameter for toggleBullet, toggleNumbering, toggleListType:
    • apiNameOverride: Override the default API name parameter in ContentChangedEvent

RoosterJs 8.26.1

01 Jul 00:37
75db7ee
Compare
Choose a tag to compare

New features

Improvement

  • Improve demo site #1037
  • Fix dts.js to be compatible for react export #1049
  • Re enable Table Selector is displaying incorrectly above the editors Div #1050
  • Improve PasteOptionPlugin #1054
  • Improve Table Shading Menu #1058

Bug fix

  • Inserting a table after a non content editable entity, makes the table not editable #1038
  • Fix dark mode style for demo site #1041
  • Fix Paste will not replace selected content on Android #925 #1040 #1043
  • Add API name to the ContentChanged Plugin Event that is going to be triggered after using a Format Function #1044
  • Fix #1045 #1046
  • Enable auto list only in the beginning of a sentence #1055
  • Fixed issue with creating link not replacing all selected text - Creating link does not replace the whole selected text #917 #1057
  • Fix #1062 PluginEvent should support CompatiblePluginEventType #1063
  • Remove comment related styles #1068
  • Fix #1067 Need to trigger ContentChangedEvent after resize image #1069

Interface change of roosterjs

  • Separate event types for the existing event to make plugin event support CompatiblePluginEventType:
    • BeforeCutCopyEventData: Data of BeforeCutCopyEvent
    • BeforeCutCopyEvent and CompatibleBeforeCutCopyEvent
    • CompatibleBeforeDisposeEvent
    • BeforePasteEventData: Data of BeforePasteEvent
    • BeforePasteEvent and CompatibleBeforePasteEvent
    • BeforeSetContentEventData: Data of BeforeSetContentEvent
    • BeforeSetContentEvent and CompatibleBeforeSetContentEvent
    • ContentChangedEventData
    • ContentChangedEvent and CompatibleContentChangedEvent
    • EditImageEventData
    • EditImageEvent and CompatibleEditImageEvent
    • CompatibleEditorReadyEvent
    • EntityOperationEventData
    • EntityOperationEvent and CompatibleEntityOperationEvent
    • ExtractContentWithDomEventData
    • ExtractContentWithDomEvent and CompatibleExtractContentWithDomEventData
    • CompatiblePendingFormatStateChangedEvent
    • EnterShadowEditEventData
    • EnterShadowEditEvent and CompatibleEnterShadowEditEvent and CompatibleLeaveShadowEditEvent
    • ZoomChangedEventData
    • ZoomChangedEvent and CompatibleZoomChangedEvent
    • PluginMouseUpEventData
    • PluginContextMenuEventData
    • PluginScrollEventData
    • PluginScrollEvent and CompatiblePluginScrollEvent
    • CompatiblePluginCompositionEvent
    • CompatiblePluginMouseDownEvent
    • CompatiblePluginMouseUpEvent
    • CompatiblePluginContextMenuEvent
    • CompatiblePluginMouseEvent
    • CompatiblePluginKeyDownEvent
    • CompatiblePluginKeyPressEvent
    • CompatiblePluginKeyUpEvent
    • CompatiblePluginKeyboardEvent
    • CompatiblePluginInputEvent
    • CompatiblePluginScrollEvent
    • CompatiblePluginDomEvent

Interface change of roosterjs-react

  • New types for string keys:

    • EmojiStringKeys: Localized string keys for Emoji UI component.
    • TableEditShadeMenuItemStringKey: Key of localized strings of Table Edit Cell Shade menu item.
  • New plugin API:

    • createEmojiPlugin: Create a new instance of Emoji plugin with FluentUI components.
  • New ContextMenuItem parameters:

    • itemRender: Custom render of drop down item
    • itemClassName: CSS class name for drop down menu item
    • commandBarSubMenuProperties: Use this property to pass in Fluent UI ContextMenu property directly. It will overwrite the values of other conflict properties

Full Changelog: v8.25.0...v8.26.1

RoosterJs 8.25.0

16 Jun 17:04
8f43ad4
Compare
Choose a tag to compare

New features

  • Add PasteOptions plugin to roosterjs-react (#1032)
  • Add ContextMenu plugin to roosterjs-react (#1034)

Improvement

  • Refactor and improve auto format and auto bullet featrues (#1025, #1026, #1028, #1029)
  • Add theme support in roosterjs-react components (#1030)
  • Image Edit: Support ModeIndependentColor for border color
  • Add a string-typed version of Object.keys() - getObjectKeys() (#1036)

Bug fix

  • Fix wrap content when element is empty (#1033)

Interface change of roosterjs

  • New parameters of API setListStyleType:
    • orderedStyle: Style for ordered list
    • unorderedStyle: Style for unordered list
  • New parameters of API toggleListType:
    • orderedStyle: Style for ordered list
    • unorderedStyle: Style for unordered list
  • New API in roosterjs-editor-dom package:
    • getObjectKeys: Provide a strong-typed version of Object.keys()
  • New content edit features:
    • autoBulletList: New implementation of auto bullet list
    • autoNumberingList: New implementation of auto numbering list

Interface change of roosterjs-react

  • New types
    • UIUtilities: A set of UI Utilities to help render additional UI element from a plugin
    • ReactEditorPlugin: A sub interface of roosterjs.EditorPlugin to provide additional functionalities for rendering react component from the plugin
    • ContextMenuItem: Represent a context menu item
  • New types for string keys:
    • ListNumberMenuItemStringKey: Key of localized strings of List Number menu items and its dialog.
    • ImageEditMenuItemStringKey: Key of localized strings of Image Alt Text menu item.
    • TableEditMenuItemStringKey: Key of localized strings of Table Edit menu item.
    • PasteOptionButtonKeys: keys for Paste Option buttons
    • PasteOptionStringKeys: Localized string keys for Paste Option buttons and its UI component
  • New APIs
    • createUIUtilities: Create the UI Utilities object for plugins to render additional react components
  • New parameter of RibbonButton.onClick:
    • uiUtilities: A utilities object to help render addition UI elements
  • New context menu related API
    • createContextMenuPlugin: Create a new instance of roosterjs.ContextMenu plugin with context menu implementation based on FluentUI.
    • createContextMenuProvider: Create a new instance of ContextMenuProviderImpl class
    • createListEditMenuProvider: Create a new instance of ContextMenuProvider to support list number editing functionalities in context menu
    • createImageEditMenuProvider: Create a new instance of ContextMenuProvider to support image editing functionalities in context menu
    • createTableEditMenuProvider: Create a new instance of ContextMenuProvider to support table editing functionalities in context menu

RoosterJs 8.24.0

13 Jun 16:31
863c1e4
Compare
Choose a tag to compare

Improvement

  • Show table selector if it is inside of the Scroll Container (#1015)
  • Refactor auto hyphen experimental flight (#1014)
  • Handle pasting '\t' characters into editor (#1017)
  • Fix resize image on Android WebViews (#1019)

Bug fix

  • Fix issue in Normalize Table (#1022)

Interface change

  • New plugin class
    • AutoFormat: Transform "--" into hyphen, if typed between two words.

RoosterJs 8.23.0

31 May 23:16
dccd0e5
Compare
Choose a tag to compare

New feature

  • New metadata API (#967)
  • New text feature: auto hyphen (#1001)
  • New list feature: auto format numbered and bullet list (#1000)

Improvement

  • Add target parameter to createLink API (#966)
  • Add attributes parameter to insertImage API (#968 #972 #973)
  • Leverage metadata API for table format (#977)
  • Remove deprecated colors when paste (#978)
  • Allow return null in UndoSnapshotService.move() (#991)
  • Support hotkey for clearing format (#992)
  • Support additional hotkey for Undo (#997)
  • Support resize image on mobile and custom resize handle style (#988)

Bug fixes

  • Preserve table selection when no need to clear it (#970)
  • Better handle empty new line text node when apply format (#974)
  • Better handle SUB and SUP tags when apply format (#979)
  • Add some log to SelectionBlockScoper to help troubleshooting (#971)
  • Fix a run time script error in TableCellSelection (#984)
  • Add null check during to editor instance in extractClipboardEvent callbacks (#998)
  • Fix the table selector when it is scrolled out (#1005)
  • Add compitable enum support for PluginEventTypes (#1009)

Interface changes

  • New parameter of function getBrowserInfo
    • vendor: The vendor string of a browser
  • New method of VList class
    • setListSTyleType: Change list style of the given range of this list.
  • New method of VListItem class
    • applyListStyle: Apply the list style type
  • New metadata types and API
    • DefinitionType: Types of definitions, used by Definition type
    • DefinitionBase: Base type of all definitions
    • ArrayItemType: A utility type to get item type of array
    • ObjectPropertyDefinition: Child type of object definition
    • StringDefinition, NumberDefinition, BooleanDefinition, ArrayDefinition, ObjectDefinition, , CustomizeDefintion: Known types of definitions
    • Definition: A union of all known types of definitions
    • validate: To validate a given object with a type definition object
    • createNumberDefinition, createBooleanDefinition, createStringDefinition, createStringDefinition, createArrayDefinition, createObjectDefinition: Create definition objects for the specified types
    • getMetadata: Get metadata from a DOM element and validate it
    • setMetadata: Validate a metadata and set to DOM element
    • removeMetadata: Remove existing metadata from a DOM element if exists
  • New parameter of createLink API
    • target: Display target for the link ("_blank"|"_self"|"_parent"|"_top"|"{framename}")
  • New parameter of insertImage API
    • attributes: Image element attributes
  • New parameter of toggleBullet, toggleNumbering API and toggleListType API:
    • listStyle: The style of the bullet list. If not defined, the style will be set to disc.
  • New member of Browser object:
    • isMobileOrTablet: Whether current browser is on mobile or a tablet
  • New experimental features
    • AutoFormatList: Trigger formatting by a especial characters. Ex: (A), 1. i).
    • AutoHyphen: Automatically transform -- into hyphen, if typed between two words.
  • New list style types:
    • NumberingListType: Enum used to control the different types of numbering list
    • BulletListType: Enum used to control the different types of bullet list
  • New parameter of ImageEdit constructor:
    • onShowResizeHandle: An optional callback to allow customize resize handle element of image resizing.
  • Other types to help customize image resize handle
    • OnShowResizeHandle
    • DNDDirectionX
    • DNDDirectionY

RoosterJs 8.22.0

05 May 22:03
9b7524a
Compare
Choose a tag to compare

Improvement

  • Support more accessible image resize handles (#915, #927)
  • Improve paste from Word behavior:
    • Remove unwanted margin below a list (#923)
    • Remove line-height when its value is too small (#937)
  • Graduate experimental feature: AlwaysApplyDefaultFormat (#934)
  • Expose original core API in EditorCore so that overridden core API can easily call original API (#930)
  • New experimental feature: align list items with its list number or bullet point (#948)
  • Apply default format when clear block format (#945)

Bug fix

  • Fix the bug that formatted table can lose background when switch from dark mode to light mode (#933)
  • Change normalize tableSelection using Vtable instead of table (#938)
  • Do not insert TAB space when press TAB in readonly entity (#947)
  • Fix a script error in VTable (#962)
  • Remove duplicated Table ID when select table (#964)
  • Maintain list style type when a style type is already applied (#960)
  • Fix a bug that dark mode color not applied when there is already data color specified (#959)

Engineering improvement

  • Publish a new package roosterjs-editor-types-compatible to export enums rather than const enum so it can work in isolatedModules mode, and go back to publish const enum from existing roosterjs-editor-types package to keep smaller bundle size (#929, #949, #950, #956, #957, #958, #961)
  • Make the source code inline into source map in package roosterjs-color-utils to support better compatibility (#935)

Interface changes

  • New compatible enum types are added. All of them have the same values with original const enum types. For more information, please refre to Work with isolatedModules
  • New ExterimentalFeatures member:
    • AdaptiveHandlesResizer: Provide a circular resize handles that adaptive the number od handles to the size of the image
    • ListItemAlignment: Align list elements elements to left, center and right using setAlignment API