@curi/svelte
v2.0.0-beta.5
GitHub Repo
NPM PackageAbout
This package enables you to use Curi alongside Svelte.
For more information on using Curi with Svelte, please check out the Svelte guide.
Installation
npm install @curi/svelteAPI
Router
The Router component is used to make router related data available to components throughout the application.
<Router {router}>
<Content />
</Router>
<script>
import Router from "@curi/svelte/components/Router.svelte";
export let router;
</script>Props
router
A Curi router.
Link
The Link component is used to create an anchor for navigating to another route.
<menu>
<Link name='Home'>Home</Link>
<Link name='User' params={{ userID: 5 }}>
Profile
</Link>
</menu>
<script>
import Link from '@curi/svelte/components/Link.svelte';
</script>Props
name
The name of the route to link to.
<Link name="Home">Home</Link>
<!-- <a href="/">Home</a> -->params
An object of route params for the linked route.
<Link name="User" params={{ userID: 5 }}>
Profile
</Link>
<!-- <a href="/user/5">Profile</a> -->hash
The hash for the location to link to.
<Link name="Home" hash="test">Home</Link>
<!-- <a href="/#test">Home</a> -->query
The query for the location to link to.
<Link name="Home" query="one=1">Home</Link>
<!-- <a href="/?one=1">Home</a> -->state
Some (ephemeral) state associated with the location.AsyncLink
The AsyncLink component is used to create an anchor for navigating to another route. This is similar to the the Link, but also takes a wrapper component for
<menu>
<AsyncLink wrapper={NavSpinner} name='User' params={{ userID: 5 }}>
Profile
</AsyncLink>
</menu>
<script>
import AsyncLink from '@curi/svelte/components/AsyncLink.svelte';
</script>Props
wrapper
A wrapper component to be rendered around the anchor. The wrapper will receive a navigating prop that defaults to false, is set to true when a user clicks the anchor to begin a navigation, and resets to false when the navigation completes.
<AsyncLink wrapper={NavSpinner} name="Home">Home</AsyncLink>For a demonstration, please check out the asynchronous navigation example.
name
The name of the route to link to.
<AsyncLink name="Home" wrapper={NavSpinner}>Home</AsyncLink>
<!-- <a href="/">Home</a> -->params
An object of route params for the linked route.
<AsyncLink
name="User"
params={{ userID: 5 }}
wrapper={NavSpinner}
>
Profile
</AsyncLink>
<!-- <a href="/user/5">Profile</a> -->hash
The hash for the location to link to.
<AsyncLink
name="Home"
hash="test"
wrapper={NavSpinner}
>Home</AsyncLink>
<!-- <a href="/#test">Home</a> -->query
The query for the location to link to.
<AsyncLink
name="Home"
query="one=1"
wrapper={NavSpinner}
>Home</AsyncLink>
<!-- <a href="/?one=1">Home</a> -->state
Some (ephemeral) state associated with the location.Navigating
The Navigating component is used to cancel an active asynchronous navigation.
A component is passed to Navigating. When there is an active asynchronous navigation, the component will be given a cancel function. When there is not an active asynchronous navigation, cancel will be undefined.
<Navigating component={Cancel} />
<script>
import Navigating from "@curi/svelte/components/Navigating.svelte";
import Cancel from "./Cancel";
</script>Props
component
A component that receives a cancel function when there is an active asynchronous navigation.
{#if typeof cancel === "function"}
<button on:click="cancelHandler(event, cancel)">
Cancel Navigation
</button>
{/if}
<script>
export default {
methods: {
cancelHandler(event, cancel) {
event.preventDefault();
cancel();
}
}
};
</script>getRouter
The getRouter function is used to read the router from Svelte's context.
<h1>{pathname}</h1>
<script>
import { getRouter } from "@curi/svelte";
let router = getRouter();
let homeRoute = router.route("Home");
</script>getResponse
The getResponse function is used to read the response store from Svelte's context. The value will update whenever there is a new response.
<h1>{$response.name}</h1>
<script>
import { getResponse } from "@curi/svelte";
let response = getResponse();
</script>getNavigation
The getNavigation function is used to read the navigation store from Svelte's context. The value will update whenever there is a new navigation.
<h1>{$navigation.action}</h1>
<script>
import { getNavigation } from "@curi/svelte";
let navigation = getNavigation();
</script>