- Add
Workspacecomponent, for layouts of tabsets that users can rearrange by dragging tabs: between tabsets, within a tabset's list of tabs, or onto the edge of a tabset to split it. Tabsets can also be resized and maximized. The layout is described by a serializable model, and tab content is not remounted when a tab is moved. - #780- Tabsets can be customized with the
renderTab,renderTabsetToolbar, andrenderEmptyTabsetprops (and theTabCloseButtoncomponent), and styled with theclassNamesandstylesprops. - Workspaces are uncontrolled (like
Group); theuseWorkspaceRefanduseWorkspaceCallbackRefhooks return its imperative API. - Content within a workspace can use the
useParentWorkspace,useParentTabset,useParentTabsetState,useParentTab, anduseParentTabStatehooks. - The content of tabs that aren't selected can stay mounted (default), be unmounted, or be rendered within a hidden React
<Activity>(hiddenTabBehavior), and selected tabs' content can opt into server rendering (serverRenderTabContent). - Supports mouse, touch, and keyboard interaction.
- Tabsets can be customized with the
- Fix separators (and grid gridlines) moving farther or less far than the pointer when an ancestor has CSS
zoomor a scale transform (e.g. twice as far withinzoom: 2). Pointer movements are now converted from screen pixels to layout pixels before resizing. - #780 - Fix separators staying in their "hover" state when the pointer moves onto an iframe within a
Grouprendered into another window (e.g. a popup). The iframe check no longer usesinstanceof HTMLIFrameElement, which is false for iframes from another window. - #778 - Fix the separator resize preview (
resizePreviewMode="separator") missing the separator's styles when its element was created by another window's document (e.g. by a popup's opener). - #781