Skip to content

Commit ec8715b

Browse files
committed
Add stories for attributes option for create*PortalNode
1 parent 49c9dd9 commit ec8715b

File tree

2 files changed

+57
-0
lines changed

2 files changed

+57
-0
lines changed

stories/html.stories.js

+29
Original file line numberDiff line numberDiff line change
@@ -260,6 +260,35 @@ storiesOf('Portals', module)
260260

261261
return <ChangeLayoutWithoutUnmounting />;
262262
})
263+
.add('can pass attributes option to createHtmlPortalNode', () => {
264+
return React.createElement(() => {
265+
const [hasAttrOption, setHasAttrOption] = React.useState(false);
266+
267+
const portalNode = createHtmlPortalNode( hasAttrOption ? {
268+
attributes: { id: "div-id-1", style: "background-color: #aaf; width: 204px;" }
269+
} : null);
270+
271+
return <div>
272+
<button onClick={() => setHasAttrOption(!hasAttrOption)}>
273+
Click to pass attributes option to the intermediary div
274+
</button>
275+
276+
<hr/>
277+
278+
<InPortal node={portalNode}>
279+
<div style={{width: '200px', height: '50px', border: '2px solid purple'}} />
280+
</InPortal>
281+
282+
<OutPortal node={portalNode} />
283+
284+
<br/>
285+
<br/>
286+
<br/>
287+
288+
<text>{!hasAttrOption ? `const portalNode = createHtmlPortalNode();` : `const portalNode = createHtmlPortalNode({ attributes: { id: "div-id-1", style: "background-color: #aaf; width: 204px;" } });`}</text>
289+
</div>
290+
});
291+
})
263292
.add('Example from README', () => {
264293
const MyExpensiveComponent = () => 'expensive!';
265294

stories/svg.stories.js

+28
Original file line numberDiff line numberDiff line change
@@ -92,4 +92,32 @@ storiesOf('SVG Portals', module)
9292
</svg>
9393
</div>
9494
})
95+
})
96+
.add('can pass attributes option to createSvgPortalNode', () => {
97+
return React.createElement(() => {
98+
const [hasAttrOption, setHasAttrOption] = React.useState(false);
99+
100+
const portalNode = createSvgPortalNode(hasAttrOption ? {attributes: { stroke: 'blue' }} : null);
101+
return <div>
102+
<button onClick={() => setHasAttrOption(!hasAttrOption)}>
103+
Click to pass attributes option to the intermediary svg
104+
</button>
105+
106+
<hr/>
107+
108+
<svg>
109+
<InPortal node={portalNode}>
110+
<circle cx="50" cy="50" r="40" fill="lightblue" />
111+
</InPortal>
112+
113+
<svg x={30} y={10}>
114+
<OutPortal node={portalNode} />
115+
</svg>
116+
</svg>
117+
118+
<br/>
119+
120+
<text>{!hasAttrOption ? `const portalNode = createSvgPortalNode();` : `const portalNode = createSvgPortalNode({ attributes: { stroke: "blue" } });`}</text>
121+
</div>
122+
});
95123
});

0 commit comments

Comments
 (0)