Skip to content

Commit 8cfb0f5

Browse files
authored
feat: allow scrollbar being invisible (#146)
1 parent 1c70b85 commit 8cfb0f5

File tree

6 files changed

+30
-26
lines changed

6 files changed

+30
-26
lines changed

.github/workflows/main.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@ jobs:
1515
strategy:
1616
matrix:
1717
node_version:
18-
- 14.x
19-
- 16.x
18+
- 18.x
19+
- 20.x
2020
os: [ubuntu-latest, windows-latest, macOS-latest]
2121

2222
steps:

.github/workflows/npm-publish.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ jobs:
1212
strategy:
1313
matrix:
1414
node_version:
15-
- 16.x
15+
- 18.x
1616
steps:
1717
- name: Checkout repository
1818
uses: actions/checkout@v2

packages/react-dag-editor/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
"repository": {
55
"url": "https://github.com/microsoft/react-dag-editor.git"
66
},
7-
"version": "0.4.3",
7+
"version": "0.4.4",
88
"dependencies": {
99
"@fluentui/merge-styles": "^8.2.0",
1010
"eventemitter3": "^4.0.7",

packages/react-dag-editor/src/lib/Features.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ export enum GraphFeatures {
2222
CtrlKeyZoom = "ctrlKeyZoom",
2323
LimitBoundary = "limitBoundary",
2424
EditEdge = "editEdge",
25+
InvisibleScrollbar = "InvisibleScrollbar",
2526
}
2627

2728
export const allFeatures = new Set([

packages/react-dag-editor/src/lib/components/Graph/Graph.tsx

Lines changed: 18 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -122,8 +122,8 @@ export function Graph<
122122
isHorizontalScrollDisabled,
123123
isA11yEnable,
124124
isCtrlKeyZoomEnable,
125-
isLimitBoundary,
126125
isVirtualizationEnabled,
126+
isScrollbarVisible,
127127
} = featureControl;
128128

129129
useSelectBox(dispatch, state.selectBoxPosition);
@@ -361,27 +361,23 @@ export function Graph<
361361
/>
362362
)}
363363
</svg>
364-
{(!isVerticalScrollDisabled ||
365-
!isHorizontalScrollDisabled ||
366-
!isPanDisabled) &&
367-
isLimitBoundary &&
368-
isViewportComplete(state.viewport) && (
369-
<Scrollbar
370-
viewport={state.viewport}
371-
offsetLimit={getOffsetLimit({
372-
data,
373-
graphConfig,
374-
rect: state.viewport.rect,
375-
transformMatrix: viewport.transformMatrix,
376-
canvasBoundaryPadding: state.settings.canvasBoundaryPadding,
377-
groupPadding: data.groups[0]?.padding,
378-
})}
379-
dispatch={dispatch}
380-
horizontal={!isHorizontalScrollDisabled}
381-
vertical={!isVerticalScrollDisabled}
382-
eventChannel={eventChannel}
383-
/>
384-
)}
364+
{isScrollbarVisible && isViewportComplete(state.viewport) && (
365+
<Scrollbar
366+
viewport={state.viewport}
367+
offsetLimit={getOffsetLimit({
368+
data,
369+
graphConfig,
370+
rect: state.viewport.rect,
371+
transformMatrix: viewport.transformMatrix,
372+
canvasBoundaryPadding: state.settings.canvasBoundaryPadding,
373+
groupPadding: data.groups[0]?.padding,
374+
})}
375+
dispatch={dispatch}
376+
horizontal={!isHorizontalScrollDisabled}
377+
vertical={!isVerticalScrollDisabled}
378+
eventChannel={eventChannel}
379+
/>
380+
)}
385381
<GraphContextMenu
386382
state={state}
387383
onClick={onContextMenuClick}

packages/react-dag-editor/src/lib/hooks/useFeatureControl.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,12 @@ export const useFeatureControl = (features: ReadonlySet<GraphFeatures>) => {
3434
!features.has(GraphFeatures.AddNewNodes) ||
3535
!features.has(GraphFeatures.AddNewEdges);
3636
const isUndoEnabled = features.has(GraphFeatures.UndoStack);
37+
const isScrollbarVisible =
38+
(!isVerticalScrollDisabled ||
39+
!isHorizontalScrollDisabled ||
40+
!isPanDisabled) &&
41+
isLimitBoundary &&
42+
!features.has(GraphFeatures.InvisibleScrollbar);
3743

3844
return {
3945
isNodesDraggable,
@@ -58,6 +64,7 @@ export const useFeatureControl = (features: ReadonlySet<GraphFeatures>) => {
5864
isDeleteDisabled,
5965
isPasteDisabled,
6066
isUndoEnabled,
67+
isScrollbarVisible,
6168
};
6269
}, [features]);
6370
};

0 commit comments

Comments
 (0)