馃殌 New Features
- Support proper graph manipulation on touchscreen devices:
- Allow to move and resize elements on touchscreen;
- Allow to manipulate link vertices on touchscreen (only in Firefox for now due to bug);
- Allow to select multiple elements with
Selection with touch when CanvasApi.pointerMode is selection;
- Allow to establish new links with
SelectionActionEstablishLink on touchscreen;
- Allow to move link source or target with
LinkActionMoveEndpoint on touchscreen;
- Make
ZoomOptions.requireCtrl default to false to zoom without holding Ctrl i.e. like on a map.
- Enable
showPointerModeToggle on ZoomControl by default (can be disabled by passing false).
- [馃挜Breaking] Extend and make optional built-in property editing form support:
- Extract property editor inputs into separate entry point
@reactodia/workspace/forms to be able to use external forms implementation without always bundling the built-in one;
- Provide
InputText, InputList and InputSelect basic form inputs;
- Provide
InputFile form input with MemoryFileUploader implementation for FileUploadProvider interface;
VisualAuthoring now requires propertyEditor prop with changed contract, which have to return an editor component in all cases.
DefaultPropertyEditor in combination with imported inputs provides default (built-in) property editing experience, but custom editors can be implemented with EntityEditor and RelationEditor "provider" components.
- Allow to customize how resource anchors and asset URLs (e.g. images or downloadable files) are resolved via
DataLocaleProvider.{prepareAnchor, resolveAssetUrl}:
- Resolve anchors and image thumbnail URLs in
StandardEntity, ClassicEntity and SelectionActionAnchor;
- Add
useResolvedAssetUrl() helper hook to simplify resolving asset URLs from components;
- Support conditionally rendering
WorkspaceLayout* child components by passing null instead of a child to remove it:
- Allow to hide left and right panels in
ClassicWorkspace by passing null to the corresponding props;
- Allow to provide
className and style to WorkspaceLayout* components.
- Add
Translation.textOptional() to support common translation string defaults with ability to provide separate string for each case:
- Use
search_defaults.input.placeholder for a search input field;
- Use
visual_authoring.dialog.apply.{label, text} for an "Apply" button in VisualAuthoring dialogs.
- Allow to customize default dialog sizes for built-in dialogs and persist user-changed sizes with
dialogSettingsProvider prop on Workspace:
- Default provider persists user-changed dialog sizes in-memory based on
dialogType.
馃拝 Polish
- Expose
useAsync() utility hook to simplify data loading from via a single Promise-returning task.
- Expose
useProvidedEntities() utility hook to have a simple way to load non-canvas entities with cache from a DataProvider.
- Provide
onlySelected property to link templates the same way as for element templates.
- Allow to configure whether
ClassTree and SearchSectionElementTypes tree items should be draggable.
- Allow to configure
SparqlDataProvider.lookup() via lookupQuery and filterInnerPrelude settings.
馃敡 Maintenance
- Preparations to extract generic scrollable paper component
Paper from diagram-specific state and logic:
- Replace
reactodia-paper-area CSS class by reactodia-canvas-area and reactodia-paper.
- Deprecate
CanvasMetrics.area in favor of CanvasMetrics.pane.
- Remove
AbortScope utility class (can be trivially replaced by the built-in AbortSignal.any() function).
Link to the CHANGELOG v0.34.0