fix(panels): Allow for setting the initial and minimum expanded widths of each side panel. (#5207)
This commit is contained in:
parent
1f33b291b9
commit
545411137c
@ -1,6 +1,6 @@
|
|||||||
import { useState, useCallback, useLayoutEffect, useRef } from 'react';
|
import { useState, useCallback, useLayoutEffect, useRef } from 'react';
|
||||||
import { getPanelElement, getPanelGroupElement } from 'react-resizable-panels';
|
import { getPanelElement, getPanelGroupElement } from 'react-resizable-panels';
|
||||||
import { panelGroupDefinition } from './constants/panels';
|
import { getPanelGroupDefinition } from './constants/panels';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set the minimum and maximum css style width attributes for the given element.
|
* Set the minimum and maximum css style width attributes for the given element.
|
||||||
@ -30,8 +30,21 @@ const useResizablePanels = (
|
|||||||
rightPanelClosed,
|
rightPanelClosed,
|
||||||
setRightPanelClosed,
|
setRightPanelClosed,
|
||||||
hasLeftPanels,
|
hasLeftPanels,
|
||||||
hasRightPanels
|
hasRightPanels,
|
||||||
|
leftPanelInitialExpandedWidth,
|
||||||
|
rightPanelInitialExpandedWidth,
|
||||||
|
leftPanelMinimumExpandedWidth,
|
||||||
|
rightPanelMinimumExpandedWidth
|
||||||
) => {
|
) => {
|
||||||
|
const [panelGroupDefinition] = useState(
|
||||||
|
getPanelGroupDefinition({
|
||||||
|
leftPanelInitialExpandedWidth,
|
||||||
|
rightPanelInitialExpandedWidth,
|
||||||
|
leftPanelMinimumExpandedWidth,
|
||||||
|
rightPanelMinimumExpandedWidth,
|
||||||
|
})
|
||||||
|
);
|
||||||
|
|
||||||
const [leftPanelExpandedWidth, setLeftPanelExpandedWidth] = useState(
|
const [leftPanelExpandedWidth, setLeftPanelExpandedWidth] = useState(
|
||||||
panelGroupDefinition.left.initialExpandedWidth
|
panelGroupDefinition.left.initialExpandedWidth
|
||||||
);
|
);
|
||||||
|
|||||||
@ -3,36 +3,40 @@ const collapsedInsideBorderSize = 4;
|
|||||||
const collapsedOutsideBorderSize = 4;
|
const collapsedOutsideBorderSize = 4;
|
||||||
const collapsedWidth = 25;
|
const collapsedWidth = 25;
|
||||||
|
|
||||||
const rightPanelInitialExpandedWidth = 280;
|
const getPanelGroupDefinition = ({
|
||||||
const leftPanelInitialExpandedWidth = 282;
|
leftPanelInitialExpandedWidth = 282,
|
||||||
|
rightPanelInitialExpandedWidth = 280,
|
||||||
const panelGroupDefinition = {
|
leftPanelMinimumExpandedWidth = 145,
|
||||||
groupId: 'viewerLayoutResizablePanelGroup',
|
rightPanelMinimumExpandedWidth = 280,
|
||||||
shared: {
|
}) => {
|
||||||
expandedInsideBorderSize,
|
return {
|
||||||
collapsedInsideBorderSize,
|
groupId: 'viewerLayoutResizablePanelGroup',
|
||||||
collapsedOutsideBorderSize,
|
shared: {
|
||||||
collapsedWidth,
|
expandedInsideBorderSize,
|
||||||
},
|
collapsedInsideBorderSize,
|
||||||
left: {
|
collapsedOutsideBorderSize,
|
||||||
// id
|
collapsedWidth,
|
||||||
panelId: 'viewerLayoutResizableLeftPanel',
|
},
|
||||||
// expanded width
|
left: {
|
||||||
initialExpandedWidth: leftPanelInitialExpandedWidth,
|
// id
|
||||||
// expanded width + expanded inside border
|
panelId: 'viewerLayoutResizableLeftPanel',
|
||||||
minimumExpandedOffsetWidth: 145 + expandedInsideBorderSize,
|
// expanded width
|
||||||
// initial expanded width
|
initialExpandedWidth: leftPanelInitialExpandedWidth,
|
||||||
initialExpandedOffsetWidth: leftPanelInitialExpandedWidth + expandedInsideBorderSize,
|
// expanded width + expanded inside border
|
||||||
// collapsed width + collapsed inside border + collapsed outside border
|
minimumExpandedOffsetWidth: leftPanelMinimumExpandedWidth + expandedInsideBorderSize,
|
||||||
collapsedOffsetWidth: collapsedWidth + collapsedInsideBorderSize + collapsedOutsideBorderSize,
|
// initial expanded width
|
||||||
},
|
initialExpandedOffsetWidth: leftPanelInitialExpandedWidth + expandedInsideBorderSize,
|
||||||
right: {
|
// collapsed width + collapsed inside border + collapsed outside border
|
||||||
panelId: 'viewerLayoutResizableRightPanel',
|
collapsedOffsetWidth: collapsedWidth + collapsedInsideBorderSize + collapsedOutsideBorderSize,
|
||||||
initialExpandedWidth: rightPanelInitialExpandedWidth,
|
},
|
||||||
minimumExpandedOffsetWidth: rightPanelInitialExpandedWidth + expandedInsideBorderSize,
|
right: {
|
||||||
initialExpandedOffsetWidth: rightPanelInitialExpandedWidth + expandedInsideBorderSize,
|
panelId: 'viewerLayoutResizableRightPanel',
|
||||||
collapsedOffsetWidth: collapsedWidth + collapsedInsideBorderSize + collapsedOutsideBorderSize,
|
initialExpandedWidth: rightPanelInitialExpandedWidth,
|
||||||
},
|
minimumExpandedOffsetWidth: rightPanelMinimumExpandedWidth + expandedInsideBorderSize,
|
||||||
|
initialExpandedOffsetWidth: rightPanelInitialExpandedWidth + expandedInsideBorderSize,
|
||||||
|
collapsedOffsetWidth: collapsedWidth + collapsedInsideBorderSize + collapsedOutsideBorderSize,
|
||||||
|
},
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
export { panelGroupDefinition };
|
export { getPanelGroupDefinition };
|
||||||
|
|||||||
@ -24,6 +24,10 @@ function ViewerLayout({
|
|||||||
rightPanelClosed = false,
|
rightPanelClosed = false,
|
||||||
leftPanelResizable = false,
|
leftPanelResizable = false,
|
||||||
rightPanelResizable = false,
|
rightPanelResizable = false,
|
||||||
|
leftPanelInitialExpandedWidth,
|
||||||
|
rightPanelInitialExpandedWidth,
|
||||||
|
leftPanelMinimumExpandedWidth,
|
||||||
|
rightPanelMinimumExpandedWidth,
|
||||||
}: withAppTypes): React.FunctionComponent {
|
}: withAppTypes): React.FunctionComponent {
|
||||||
const [appConfig] = useAppConfig();
|
const [appConfig] = useAppConfig();
|
||||||
|
|
||||||
@ -54,7 +58,11 @@ function ViewerLayout({
|
|||||||
rightPanelClosed,
|
rightPanelClosed,
|
||||||
setRightPanelClosed,
|
setRightPanelClosed,
|
||||||
hasLeftPanels,
|
hasLeftPanels,
|
||||||
hasRightPanels
|
hasRightPanels,
|
||||||
|
leftPanelInitialExpandedWidth,
|
||||||
|
rightPanelInitialExpandedWidth,
|
||||||
|
leftPanelMinimumExpandedWidth,
|
||||||
|
rightPanelMinimumExpandedWidth
|
||||||
);
|
);
|
||||||
|
|
||||||
const handleMouseEnter = () => {
|
const handleMouseEnter = () => {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user