@ivi/portal

0.3.1 • Public • Published

ivi Portals

EXPERIMENTAL API

Example

import { createRoot, update, component, useState } from "ivi";
import { htm } from "@ivi/htm";
import { createPortal } from "@ivi/portal";

const [portalContainer, portal] = createPortal();

update(
  createRoot(document.getElementById("overlay")!),
  portalContainer,
);

const App = component((c) => {
  const [visible, setVisible] = useState(c, false);

  const onMouseEnter = () => { setVisible(true); };
  const onMouseLeave = () => { setVisible(false); };

  return () => (
    htm`
    <div class="App">
      <span
        @mouseenter=${onMouseEnter}
        @mouseleave=${onMouseLeave}
      >
        Portal Example
      </span>
      ${visible() && portal(htm`<span>rendered inside of a portal</span>`)}
    </div>
    `
  );
});

update(
  createRoot(document.getElementById("root")!),
  App(),
);

Readme

Keywords

Package Sidebar

Install

npm i @ivi/portal

Weekly Downloads

0

Version

0.3.1

License

MIT

Unpacked Size

9.35 kB

Total Files

8

Last publish

Collaborators

  • localvoid