Skip to content

Commit b689410

Browse files
authored
prioritise borderVariant over selected prop (#149)
1 parent 8c72cb5 commit b689410

File tree

4 files changed

+23
-4
lines changed

4 files changed

+23
-4
lines changed

src/components/node/node-border.test.tsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,9 @@ describe('node-border', () => {
1616
it('Should have animated preview border', () => {
1717
renderComponent({ variant: 'preview' });
1818
const result = screen.getByText('child');
19-
expect(getComputedStyle(result).animation).not.toBeEmpty();
19+
const animationValue = getComputedStyle(result).animation;
20+
expect(animationValue).toBeTruthy();
21+
expect(animationValue).not.toBe('none');
2022
});
2123

2224
it('Should have subtle border', () => {

src/components/node/node-border.tsx

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,14 +46,16 @@ export const NodeBorder = ({ children, variant }: PropsWithChildren<Props>) => {
4646
if (variant === 'preview') {
4747
return (
4848
<Border>
49-
<AnimatedBorder>{children}</AnimatedBorder>
49+
<AnimatedBorder data-testid="node-border">{children}</AnimatedBorder>
5050
</Border>
5151
);
5252
}
5353

5454
return (
5555
<Border>
56-
<BasicBorder outlineBorderColor={getBasicBorderColor()}>{children}</BasicBorder>
56+
<BasicBorder data-testid="node-border" outlineBorderColor={getBasicBorderColor()}>
57+
{children}
58+
</BasicBorder>
5759
</Border>
5860
);
5961
};

src/components/node/node.test.tsx

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { screen } from '@testing-library/react';
22
import { NodeProps, useViewport } from '@xyflow/react';
33
import { userEvent } from '@testing-library/user-event';
4+
import { palette } from '@leafygreen-ui/palette';
45

56
import { render } from '@/mocks/testing-utils';
67
import { InternalNode } from '@/types/internal';
@@ -104,4 +105,11 @@ describe('node', () => {
104105
await userEvent.click(button);
105106
expect(onAddFieldToNodeClickMock).toHaveBeenCalled();
106107
});
108+
109+
it('Should prioritise borderVariant over selected prop when setting the border', () => {
110+
render(
111+
<Node {...DEFAULT_PROPS} selected type="collection" data={{ ...DEFAULT_PROPS.data, borderVariant: 'subtle' }} />,
112+
);
113+
expect(getComputedStyle(screen.getByTestId('node-border')).outline).toEqual(`2px solid ${palette.gray.base}`);
114+
});
107115
});

src/components/node/node.tsx

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,13 @@ export const Node = ({
138138
return theme.node.mongoDBAccent;
139139
};
140140

141+
const getBorderVariant = () => {
142+
if (borderVariant) {
143+
return borderVariant;
144+
}
145+
return selected ? 'selected' : undefined;
146+
};
147+
141148
const getHeaderBackground = () => {
142149
if (disabled && !isHovering) {
143150
return theme.node.disabledHeader;
@@ -176,7 +183,7 @@ export const Node = ({
176183

177184
return (
178185
<div title={title} onMouseEnter={onMouseEnter} onMouseLeave={onMouseLeave}>
179-
<NodeBorder variant={selected ? 'selected' : borderVariant}>
186+
<NodeBorder variant={getBorderVariant()}>
180187
<NodeHandle
181188
id="source"
182189
position={Position.Right}

0 commit comments

Comments
 (0)