Skip to content

Commit a2967fd

Browse files
committed
chore(data-modeling): stricter check for diagram item selection
1 parent cf8a623 commit a2967fd

File tree

1 file changed

+13
-9
lines changed

1 file changed

+13
-9
lines changed

packages/compass-data-modeling/src/components/diagram-editor.tsx

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -194,7 +194,7 @@ const DiagramEditor: React.FunctionComponent<{
194194
onCollectionSelect: (namespace: string) => void;
195195
onRelationshipSelect: (rId: string) => void;
196196
onDiagramBackgroundClicked: () => void;
197-
selectedItem?: string | null;
197+
selectedItems: { type: 'relationship' | 'collection'; id: string } | null;
198198
}> = ({
199199
diagramLabel,
200200
step,
@@ -206,7 +206,7 @@ const DiagramEditor: React.FunctionComponent<{
206206
onCollectionSelect,
207207
onRelationshipSelect,
208208
onDiagramBackgroundClicked,
209-
selectedItem,
209+
selectedItems,
210210
}) => {
211211
const { log, mongoLogId } = useLogger('COMPASS-DATA-MODELING-DIAGRAM-EDITOR');
212212
const isDarkMode = useDarkMode();
@@ -234,10 +234,13 @@ const DiagramEditor: React.FunctionComponent<{
234234
target: target.ns ?? '',
235235
markerStart: source.cardinality === 1 ? 'one' : 'many',
236236
markerEnd: target.cardinality === 1 ? 'one' : 'many',
237-
selected: selectedItem === relationship.id,
237+
selected:
238+
!!selectedItems &&
239+
selectedItems.type === 'relationship' &&
240+
selectedItems.id === relationship.id,
238241
};
239242
});
240-
}, [model?.relationships, selectedItem]);
243+
}, [model?.relationships, selectedItems]);
241244

242245
const nodes = useMemo<NodeProps[]>(() => {
243246
return (model?.collections ?? []).map(
@@ -250,10 +253,13 @@ const DiagramEditor: React.FunctionComponent<{
250253
},
251254
title: toNS(coll.ns).collection,
252255
fields: getFieldsFromSchema(coll.jsonSchema),
253-
selected: selectedItem === coll.ns,
256+
selected:
257+
!!selectedItems &&
258+
selectedItems.type === 'collection' &&
259+
selectedItems.id === coll.ns,
254260
})
255261
);
256-
}, [model?.collections, selectedItem]);
262+
}, [model?.collections, selectedItems]);
257263

258264
const applyInitialLayout = useCallback(async () => {
259265
try {
@@ -391,9 +397,7 @@ export default connect(
391397
: null,
392398
editErrors: diagram?.editErrors,
393399
diagramLabel: diagram?.name || 'Schema Preview',
394-
selectedItem: state.diagram?.selectedItems
395-
? state.diagram.selectedItems.id
396-
: null,
400+
selectedItems: state.diagram?.selectedItems ?? null,
397401
};
398402
},
399403
{

0 commit comments

Comments
 (0)