Fonto Editor 7.13.0 (December 17, 2020)

For the upgrade instructions, head over to Upgrade from 7.12 to 7.13.

A number of APIs will be removed in the 7.14 release. They are listed on the Upgrade from 7.13 to 7.14 page.

New functionality

  1. Tables can now be configured to be collapsible. Doing so can greatly improve the performance of the editor in documents with many or very large tables. Refer to this guide on how to configure this feature.

  2. We simplified how the editor deals with the remote state of documents (e.g., whether the document is dirty, whether the lock is available, etc.) and how that is reflected in various places in the UI. These changes are intended to provide a more consistent user experience and fix a few holes in the previous implementation. Refer to the documentation to see how you should expect the editor to behave in relation to the various responses the CMS can provide. Custom sheet frame headers can also benefit from these simplifications. Refer to the upgrade instructions to see how you can upgrade them.

  3. We've made several improvements to the Outline sidebar:

    1. The Outline now displays configured status badges. Use the new registerNodeStatus API to configure them.

    2. The Outline will now remember which items were collapsed and expanded even after you close the sidebar. We've added a new menu to collapse and expand all items, or only up to a certain level.

    3. The Outline now displays an overlay on each item's icon to indicate the current remote state of each document.

    4. Fonto now offers filtering the outline tab on labels and the newly introduced status badges.

    5. We've improved the responsiveness of dragging and dropping items in the Outline sidebar.

  4. If the CMS returns a 400 status code on the PUT /document (save) endpoint, the editor will no longer automatically retry to save unless the content is modified. This status code is intended to indicate an issue with the document's content or its metadata that needs to be resolved before it can be saved, and retrying with the same data would not fix that. The save-all-documents-and-wait operation now aborts if any document encounters this response.

  5. A CMS can now return updated document state information on document save and lock endpoints. Implementing these responses is highly recommended. Including this information creates a more consistent user experience, especially around errors. See the API documentation for more details.

  6. The new fonto:is-node-read-only XPath function can be used to check for read-only content.

  7. The new columnWidgetMenuOperations and rowWidgetMenuOperations for configureAsTableElements and its table-specific versions can be used to override the menus that appear when selecting the highlight widgets next to a table's rows and columns.

  8. The toggle-table-overflow-expanded operation now supports a forceState argument to switch to a specific state.

  9. The SingleSelect component can now be stretched horizontally by setting its isFullWidth prop to true.

  10. The RadioButtonGroup now supports showing its options side-by-side.

  11. It is now possible to configure styling for cells based on XHTML tables with the cellStylingTranslationQuery.

  12. A few new API's are added to create a toolbar for styling a table. With the CellsHighlightButton you can highlight ranges of cells to alter the styling. This can also be done by using the row and column widgets. With the setBordersByCellNodeIdToHighlightedCells transform you can apply styling to these highlighted cells. If you want to apply styling to borders, you can add buttons that use the set-border-mode-for-highlighted-cells operation. This allows the user to switch border modes for the highlighted cells. Then the setBordersByCellNodeIdToHighlightedCells transform can be used to apply styling to these borders.

  13. We've added a few methods on the standardCmsClient to build the context object used in CMS requests, to make it easier to communicate with custom CMS endpoints.

  14. We added a new XPath profiling API. This tool helps you to leverage the optimizations made to the editor faster! Read more in our blog post.

  15. We now include a font for monospaced content instead of falling back to the system supplied font. This resolves a couple of issues with the styling of monospaced content blocks.

Resolved issues

  1. We've fixed several edge cases in the way the addReducer API traverses the hierarchy of documents. The order and hierarchy used for numbering now more closely represents the view presented in the Outline sidebar. Automatic numbering implemented using this API should now behave more consistently in combination with JIT loading. We also fixed unexpected numbering when mixing items from both the DOM and DocumentsHierarchy as children in the Outline sidebar.

  2. The createDitaUrlFromLoadedTarget transform now rejects nodes without an id attribute, instead of generating broken DITA URLs.

  3. We found that external data changes during index computations could corrupt the state of the editor. We now prevent this by throwing a more readable error if this is attempted. If your application uses the ExternalDataManager and you run into this error after upgrading, please see this page for potential solutions.

  4. We fixed a bug that could trigger an auto-save in when attempting to type over a selected word in a read-only document.

  5. We fixed an error introduced in 7.12.2 that could occur when unloading a document containing inclusions.

  6. We fixed a number of issues where saving could get stuck in an error state in certain conditions.

  7. We fixed a bug that prevented dragging and dropping unloaded documents in the Outline sidebar.

  8. We resolved an issue where modifications in Fonto Editor's UI made by browser extensions could be interpreted as user input. We still recommend avoiding the use of any browser extensions that modify the page together with the editor as these could negatively affect its stability.

  9. We fixed a bug where empty rows in tables were not always handled correctly. Empty rows are allowed in tables only when the table specification support them at the bottom of the table and they are filled with spanning cells.

  10. We fixed a few issues around adding and removing header rows in tables where cells span from the header into the body, and in regards to adding new rows directly after the header in XHTML tables.

  11. We fixed a bug that caused contextual operations configured for a table figure to not show up in the context menu opened from a table in that table figure.

  12. We fixed a bug where clicking on elements that trigger an operation would sometimes prevent also selecting a squiggle overlapping that element.

  13. We resolved an issue where using the mimeTypesToAccept option in the CMS browser did not always prevent files with different MIME types from being uploaded.

  14. Copying and pasting tables from Google Sheets is now possible.

  15. We fixed some issues to better preserve indention in lists and inline formatting when copying and pasting content from Word 365.

  16. We fixed an issue where the accept-all-changes operation would still be enabled when there are no changes to accept.

  17. We resolved an issue where the cursor could end up in an unexpected position when applying inline formatting to a full table.

  18. We resolved an issue where moving the cursor up or down would in some configurations skip positions between inline images.

  19. We fixed an issue where the browser could still show a cursor in an unexpected location in some cases where there is no focused document.

  20. We fixed an issue where documents could scroll unexpectedly if an opened popover changed its height.

  21. We fixed an issue in the column sizing popover where dragging the resize handles to certain positions could cause an unexpected scroll bar to appear.

  22. The overflow slider for the Masthead now uses the correct colors for the gradients when the Masthead has type="dark".

  23. Fixed a bug that caused FormRow's labelColorName prop to be ignored if labelPosition was set to "before".

  24. We've removed the unnecessary extra separator shown at the table context menu's "More" sub-menu.

  25. We've fixed the highlight shown when hovering icon widgets to always extend behind the entire icon.

  26. We've fixed the color of the little triangle pointing from the table highlight menus to the corresponding column or row.

  27. When previewing a document in the project browser modal, in cases where that document has a widget on one of its elements in the blockOutsideBefore area, the content is no longer extends beyond the bounding box of the preview.

  28. The spellchecker will no longer try to spellcheck read-only content.

  29. We've fixed a bug that would block users from being able to change table attributes.

  30. We've fixed a bug where find & replace would run the search again if a new document is opened.

  31. We fixed an issue where certain merged cells in a table header would crash the increase header row count operation.

  32. We fixed a bug where buttons in the heading of fontoxml-annotations cards look broken when working on smaller screens.

  33. We fixed a bug where find and replace would sometimes stop replacing results or would highlight the wrong text when replacing.

  34. We've fixed a bug where the search input in Find & Replace would reset the cursor to the end of the input when clicking in the middle of the input.

  35. We fixed a bug where dragging the scrollbar in Chrome would get stuck after a little while.

  36. We fixed a run-time error after clicking the clear button of a CalendarInput FDS component if that input was using its formatDateLabel prop to return a single string instead of an object with dateParts and order.

  37. Fixed a problem where converting a list that changes both an element name and attribute(s) would sometimes not be executed.

  38. Fixed a bug where the project browser would throw an error when clicking on an unloaded document.

  39. Resolved an issue where the editor could in some cases introduce unexpected new elements in cases where content was already schema-valid but considered invalid for other reasons, such as not representing a valid table or matching configureAsInvalid rules. The editor will now only attempt to insert missing elements that are required by the schema in appropriate operations. To avoid any unexpected behavior, we recommend always inserting required elements explicitly when possible, by including them in the stencil, XQuery updating expression or custom mutation.

  40. Fixed an issue where configuring document nodes as read-only while still allowing annotations caused an error.

  41. We fixed some issues where automatic numbering for nodes would lead to unexpected results.

  42. Fixed an issue where using arrow up/down in a table that is loaded twice would place the cursor in the other instance of the document.

  43. The state message when selecting broken documents in the project browser now correctly states that that document is broken.

Other improvements

  1. We've added a notification to inform authors when the spell checker is not working correctly.

  2. We've added notifications when users lose their internet connectivity, as well as when the CMS is returning unexpected errors.

  3. We've added some more spacing around non-inline MathML containers so groups of these look a little better.

  4. Inserting a new row in a table when the cursor is already in that table will now keep the cursor in the same column on the new row.

  5. We've made sure that table widgets are now hidden in read-only cases.

  6. Similarly, we've removed the "Edit reference" functionality from the link preview dialog for links in read-only documents.

  7. We've updated the operations for moving topicrefs in the fontoxml-dita add-on to ignore siblings that are not topicref elements or specializations thereof.

  8. We've improved the copy around the Replace All feature to be more readable when replacing the search results with nothing (i.e., removing them).

  9. We've made some changes to the CalendarInput FDS component so the UX is more in line with other FDS inputs.

  10. Popovers in Fonto Editor will now close if you press keys when not in an input in the popover.

  11. Operation errors in the developer console of the browser are now more readable.

  12. We reduced the amount of exceptions thrown in Fonto Editor's internals, which could interfere when debugging the editor with the "pause on uncaught exceptions" option turned on in the browser's development tools.

  13. We have made label query widgets evaluate lazily. They should be used over custom widgets whenever possible for improved performance.

  14. The paste modal now also includes the paste as plain text action.

  15. We've made several internal improvements in various areas in regards to performance.

  16. This release updates FontoXPath from 3.13.3 to 3.14.2. We implemented the FLWOR order by clause, implemented a performance profiler and made overall improvements. Please refer to its releases page for more information.