FontoXML 7.4.0 (September 26, 2018)

New functionality

  1. This release contains an experiment that introduces the ability to drag and drop to move items around in the structure view. Default implementations are provided for single document editors as well as for DITA maps (in the fontoxml-dita add-on). Applications with customized structure view configuration or other special requirements may need to register one or more custom operations using the new adddraganddropoperation @ fontoxml-structure-view/src/adddraganddropoperation.js API. Please refer to our guide for more details. The experiment can be turned on by setting enable-experiment/drag-and-drop-in-structure-view-sidebar @ fontoxml-structure-view/src/setdefaultconfiguration.js to true.

  2. It is now possible to mark parts of a document as read-only using the new configureAsReadOnly API. Read-only elements and their children are greyed out and may not be modified in any way. If the fontoxml-annotations add-on is used, it is possible to allow comments to be placed in read-only elements by setting the allowAnnotations option to true.

  3. It is now possible to use FontoXML Development Tools to create and upgrade an editor, and convert a XML schema. You only need a licence file, which you can get from us. No passwords or manual schema zipping required. Update (or install) FDT by running npm install --global @fontoxml/fontoxml-development-tools. To see the new commands, install your license file and run fdt editor --help.

  4. The Find & Replace drop now allows searching by whole words only, by checking the corresponding checkbox.

  5. The new allowMergingWithAncestor  CVK option may be used to have Fonto automatically remove elements that are nested in equivalent elements specified by a selector. This can be used, for instance, to remove overlapping bold tags pasted in text that is already bold.

  6. All families now support the isAutoremovableIfEmpty option, which enables the element to be removed automatically once all its content is removed and the cursor is no longer inside. This is set by default for configureAsInlineFormatting.

  7. The new editEditorSidebarTab API allows overriding configuration properties (such as the label, priority or icon) for a preexisting sidebar.

  8. Previously, when using an Fx component which renders a button with drop, toggling the drop was always possible. When using components inside the drop that execute an operation, it's possible that all of these components are disabled. In order to provide control over the state of a drop button in an operation context, we've made the following changes:

    1. FxOperationsSplitButtonWithDropMenu has two new optional props: dropButtonStateOperationName and dropButtonStateOperationData. The operation/data passed to these props are only used to determine the state of the button, the returned state should represent the state from the contents of the drop.

    2. Two new components have been added: FxOperationSplitButtonWithDrop and FxOperationStateButtonWithDrop, which both include the same props as named above.

    3. The onClick prop on ButtonWithDrop is now deprecated and will be removed in the next major release. The API for this component was overloaded since it conditionally rendered a split button based on the onClick prop. The new SplitButtonWithDrop component replaces what previously was the result of a ButtonWithDrop with an onClick prop.

  9. A few changes have been made to VirtualList and VirtualGrid:
    1. The selectedItems prop is now deprecated on both components and will be removed in the next major release. Instead, we now provide a idToScrollIntoView prop to scroll items into view (which the selectedItems prop did previously). Visualising the rendered item as selected should be done from within the renderItem callback.
    2. A new prop named scrollIntoViewDirection has been added to both components, allowing you to set the direction in which items are scrolled into view (when updating the idToScrollIntoView prop).
  10. In order to create a hyperlink to a URL, we've added href and target props to TextLink. When href is set, the component will render an <a> element with the specified href and target attributes.
  11. The new textAlign CVK option can be used to control the alignment of text within block-like families.

  12. We have restored the ability to set an outputClass on structure view items as a hook for custom styling (rendered as the cv-output-class attribute). Applications using this feature should note that the HTML structure of the structure view may change between releases.
  13. The new operation insert-row-on-tab allows inserting a new row to a table when the last cell is reached and tab is pressed. Applications can add this to their tab keybinding alternatives to take advantage of this functionality. See the operation's documentation for details and an example.

  14. The fontoxml-table-flow-xhtml add-on now supports setting alignment to "char" using the xhtml-set-cell-horizontal-alignment-character operation. Note that this type of alignment will not currently be visualized in the editor.

  15. This release introduces new XQuery features, such as XQuery modules and using some parts of XQuery in Operations.
  16. Together with this release, we are releasing version 1.3.0 of the FontoXML Content Quality app (release notes) as well as a new version of the Document History preview (release notes).

Resolved issues

  1. Previous releases of FontoXML contained an error that caused validation to be skipped for any attribute in a non-default namespace. These attributes will now be validated according to the schema. Note that xs:anyAttribute support is currently still limited to allowing attributes in any namespace on an element if anyAttribute is set in the schema type for that element. If this change causes issues for your application, it can be disabled by setting the enable-experiment/validate-attributes-in-unknown-namespaces configuration value to false, which causes Fonto to revert to the old behavior.

  2. An issue has been resolved that caused the toggle-inline-formatting and toggle-inline-frame operations to affect elements in elements configured as one of the out-of-order families, such as configureAsInlineAnchorToStructure.
  3. An issue has been resolved where copying content and pasting it into a new position would sometimes cause inline formatting to be lost.
  4. An issue has been resolved where the element menu widget would be shown behind adjacent frames that are in close proximity to each other.
  5. Scrolling sheet frames into view in embedded mode now correctly positions the top of the sheet frame at the top of the screen instead of scrolling slightly too far in some cases.
  6. DITA URLs that specifically target the root element in a document (using a fragment containing the root element's ID) now correctly resolve to that root element.
  7. The operations drop button in the structure view no longer disappears when clicked again to close the drop.
  8. The Find & Replace interface will no longer sometimes display "0 of X" results in some cases.
  9. Resolved an issue where validation of the xs:anyURI simple type incorrectly rejected values containing spaces.
  10. Resolved an issue introduced in the 7.3.0 release that caused the blue focus border to not update correctly when moving between different sheet frames belonging to the same document.
  11. Resolved an issue where the fontoxml-track-changes add-on would mark the wrong character as added in repeated sequences of the same character.
  12. The CMS browsers provided by fontoxml-cms-browser now correctly disable the submit button when browsing to another folder.
  13. The Line family now correctly responds to the blockBeforeWidth and blockAfterWidth visualization options.
  14. A bug in MS Edge prevented selections from crossing multiple paragraphs. The issue has been reported to Microsoft, and a work-around has been implemented.
  15. Some XML parser errors were not reported correctly if parsing the whole document failed.
  16. Resolved an issue where the set-attributes command did not correctly validate the result, which could lead to "operation failed" errors in some cases.
  17. Resolved an issue where XPath queries involving attribute nodes could return unexpected results. As a convenience, Blueprint#getParentNode now returns the ownerElement for attribute nodes, as these nodes never have a parentNode.
  18. Fixed a regression in 7.3.0 where the setContextNodeIdToTopicrefReferencingCurrentDocument no longer returned the node ID of the map when the cursor is in the map's title.
  19. Fixed a typo that caused the development server's --release-locks-on-state-request option to have no effect.
  20. An oversight caused the selection to never be marked as backwards when evaluating the state of operations. This caused some operations to be disabled in cases when they should not be. This has been corrected.
  21. The Ctrl+Shift+V / Cmd+Shift+V "paste as plain text" keyboard shortcut provided by some browsers now correctly pastes text without formatting.
  22. When copying multiple list items, these will now be correctly pasted as a new list.
  23. Previously, the add header row operation would be disabled when the next row contained one or more row spanning cells. Now, this operation will be enabled and any spanning cell will be split. This behaviour is now consistent with that of the remove header row operation.
  24. Double or triple clicking on non-editable elements such as deletions no longer expands the selection at its original location.
  25. An FDSTextLink that uses an a element with href is now properly disabled when its isDisabled prop is set to true (previously you could still click on it to open the href in a new tab/window).

Other improvements

  1. Clicking on multiple overlapping squiggles (such as comments) now targets the smallest squiggle, making it easier to select the intended one.
  2. Documents that are out of sync with the version in the CMS now display a reload option in the corresponding structure view operations menu.
  3. The fontoxml-publication-preview add-on now takes pop-up blockers into account and immediately displays a spinner while the preview is being generated. It now opens a warning modal if the browser prevented this preview window from opening, allowing the user to retry.
  4. If FontoXML has to insert additional elements to make the result of an operation (such as splitting an element) valid, it now prefers inserting the configured default text container over other options allowed by the schema.
  5. MathML objects are no longer redrawn whenever the surrounding content changes, which both improves performance and reduces flicker in such cases.
  6. A grey representation of the current selection is now shown while other parts of the UI have focus. When focus returns to the editor, the selection re-appears as the usual yellow highlight.
  7. We have reworked some of our internals that drive the way documents are rendered in the browser and how selections are translated between the browser and the XML documents. As a result, it is now possible to use the mouse to place the cursor in a number of places that previously could not be reached.
  8. Document validation has been optimized to use less memory for very large documents. This should result in faster startup times as well as a more responsive editing experience.
  9. Opening the properties sidebar tab no longer has a large impact on typing performance in the highlighted element.
  10. The way the structure view is updated has been optimized to improve typing performance while the corresponding sidebar tab is open.
  11. The way the breadcrumbs are updated has been optimized to improve typing performance.
  12. Table validation has been optimized a little to improve the performance of operations that modify table structures.
  13. Activating operations that consist of a single custom mutation using their keybinding is now more efficient as Fonto no longer computes their results twice. This also applies to several built-in operations such as hard-return.
  14. The sidebar provided by the fontoxml-structure-view add-on is now labelled "Outline", as user testing revealed this term to be better understood by users. Note that applications can use the new editEditorSidebarTab API to change the label.

  15. The spinner used while the XML source sidebar tab is loading is now consistent with the spinners used in other sidebar tabs.
  16. Document previews that take a while to generate now display a loading indicator while rendering.
  17. Text placeholders are no longer selected when backspacing into them, as this frequently caused trouble when attempting to delete the parent element.
  18. Using Blueprint's setData method on nodes that are not CharacterData now results in a readable error, instead of causing operations to fail with a cryptic message later on.
  19. The web reference modal provided by fontoxml-web-references now warns but no longer blocks insertion when given an invalid URL.
  20. Registering custom XPath functions using registerCustomXPathFunction now warns if the prefix used for the function is not registered. Use the NamespaceManager to register the namespace corresponding to any prefix used by your application.
  21. The prefix property which was required in all MathML related operation is now determined by namespace configuration in FontoXML. It may be removed from the editor configuration.
  22. The enable-experiment/refrain-from-merging-differently-configured-nodes experiment has concluded, and the corresponding configuration value has been removed. Whether merging is allowed is now always controlled by allowMergingWith configuration.
  23. The structure view configuration has been simplified for editors where multiple hierarchy nodes may be from the same document; the results of the recursionQuery are automatically filtered to ignore nodes corresponding to hierarchy nodes, preventing duplicate entries.
  24. The appearance and behavior of the createLabelQueryWidget and createIconWidget widgets is now more consistent with the other widgets.
  25. The Card component now only shows hover styles when the onClick prop is specified.
  26. We've reduced the maximum width of the M and L modal sizes so the scale of modal sizes is more evenly divided on regular sized desktop and laptop screens. We've also included a new modal size XS, especially meant for small text-only modals. 
  27. Refreshing the page while on the error page now returns to the editor instead of showing the same error message again.
  28. The fontoxpath library has been updated to version 2.10.0. Please refer to the release notes for more information on what's new.
  29. We have upgraded the messageformat library used for localization to version 2.0.4. Please refer to the release notes of that library for more information on what's new. Note that this version is less forgiving of syntactical errors in localization messages. In particular, dashes are no longer allowed in identifiers such as placeholders or cases in a select operator. Because of this, the attributes editor's button-with-value-from-modal field type is now represented as buttonWithValueFromModal in localization messages. We have also updated the localization tools to detect this case in existing message bundles.