1.0.4 • Published 2 years ago

@kapeta/sdk-web-microfrontend-frame v1.0.4

Weekly downloads
-
License
MIT
Repository
github
Last release
2 years ago

Library for handling microfrontend using Iframes

Specifically for handling navigation between microfrontends using Iframes.

This will handle syncing the url from a parent frame to a child frame and vice versa.

The core functionality is implemented in vanilla javascript - with a single React wrapper at the moment.

Usage

The react wrapper uses react-router-dom to handle the routing.

Parent

Use the FrameRouter component to wrap the routes that you want to be rendered in the iframe. The frame router is essentially a BrowserRouter from react-router-dom@v6

import { FrameRouter, FragmentFrame } from '@kapeta/sdk-web-microfrontend-frame';
import { Routes, Route } from 'react-router-dom';

export const App = () => {
  return (
    <FrameRouter>
        <Routes>
          <Route path="/users">
              {/* 
              topPath: Must match the path in the parent that navigates to the FragmentFrame
              basePath: The path to the microfrontend proxy on the parent 
              */}
            <FragmentFrame basePath={'/fragments/users'} topPath={'/users'} />
          </Route>
          <Route path="/todo/*">
            <FragmentFrame basePath={'/fragments/todo'} topPath={'/todo'} />
          </Route>
        </Routes>
    </FrameRouter>
  );
};

Child

The child also uses FrameRouter. Let's assume this example is "users".

import { FrameRouter } from '@kapeta/sdk-web-microfrontend-frame';
import { Routes, Route, Link } from 'react-router-dom';

export const App = () => {
  return (
    <FrameRouter>
        <Routes>
          <Route path="/">
              User home page. This will be loaded when the parent visits "/users"
          </Route>
          <Route path="/settings">
              User settings. This will be loaded when the parent visits "/users/settings"
              <Link to="/">This will send the parent back to "/users"</Link>
          </Route>
        </Routes>
    </FrameRouter>
  );
};
1.0.4

2 years ago

1.0.3

2 years ago

1.0.2

2 years ago

1.0.1

2 years ago

1.0.0

2 years ago