+ Morbi in sem quis dui placerat ornare. Pellentesque odio nisi,
+ euismod in, pharetra a, ultricies in, diam. Sed arcu. Cras
+ consequat.
+
+
+ Praesent dapibus, neque id cursus faucibus, tortor neque egestas
+ augue, eu vulputate magna eros eu erat. Aliquam erat volutpat. Nam
+ dui mi, tincidunt quis, accumsan porttitor, facilisis luctus,
+ metus.
+
+
+ Phasellus ultrices nulla quis nibh. Quisque a lectus. Donec
+ consectetuer ligula vulputate sem tristique cursus. Nam nulla
+ quam, gravida non, commodo a, sodales sit amet, nisi.
+
+
+ Pellentesque fermentum dolor. Aliquam quam lectus, facilisis
+ auctor, ultrices ut, elementum vulputate, nunc.
+
+
+
+
+
+ );
+}
+
+interface IPortal {
+ /** Custom DOM node to render the portal in */
+ node?: HTMLDivElement;
+ /** Set a custom id for the portal node */
+ id?: string;
+ children?: React.ReactNode;
+}
+
+const Portal: React.FC = ({ children }) => {
+ const [defaultNode, setDefaultNode] = useState();
+ const portalId = "portal0";
+
+ useEffect(() => {
+ const portalDiv =
+ typeof window === "undefined" ? undefined : document.createElement("div");
+
+ if (portalDiv) portalDiv.id = portalId;
+
+ setDefaultNode(portalDiv);
+ }, [portalId]);
+
+ useIsomorphicLayoutEffect(() => {
+ if (!defaultNode) return;
+
+ document.body.appendChild(defaultNode);
+ return () => {
+ /** Query the element to remove, in case it was modified externally. */
+ const portal = document.getElementById(portalId);
+ if (portal) {
+ document.body.removeChild(portal);
+ }
+ };
+ }, [defaultNode, portalId]);
+
+ if (!defaultNode) {
+ return null;
+ }
+
+ return createPortal(children, defaultNode);
+};
+
+function InPortal({ id, children }: any) {
+ const [hasMounted, setHasMounted] = React.useState(false);
+ React.useEffect(() => {
+ setHasMounted(true);
+ }, []);
+ if (!hasMounted) {
+ return null;
+ }
+ return createPortal(children, document.querySelector(`#${id}`)!);
+}
+export const MountingAndUnmountingDrawer: Story = ({
+ behavior1,
+}) => {
+ const [isOpen, setOpen] = useState(false);
+
+ return (
+