Skip to content

mistermiracl/middleware-views

 
 

Repository files navigation

Views Middleware for Pinecone Router

GitHub tag (latest by date) npm bundle size Downloads from Jsdelivr NPM npm Changelog

A views middleware for Pinecone Router.

About

Allows you to set the path for an HTML file and it'll be fetched and displayed in the specified element (#app by default).

Installation

CDN

Include the following <script> tag in the <head> of your document, before Pinecone Router:

<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/views.min.js"></script>

or:

import 'https://cdn.jsdelivr.net/npm/[email protected]/dist/views.min.js'

NPM

npm install pinecone-router-middleware-views
// load this middleware
import 'pinecone-router-middleware-views'
// load pinecone router
import PineconeRouter from 'pinecone-router';
// then load alpine.js
import Alpine from 'alpinejs';
// add the router as a plugin
Alpine.plugin(PineconeRouter)
// start alpine
Alpine.start()

Important: This must be added before loading Pinecone Router.

Usage

Demo

Add x-view to the routes with the value being the path to file.

That's it!

example:

<div x-data>
	<template x-route="/" x-view="/home.html"></template>
	<template x-route="/hello/:name" x-view="/hello.html"></template>
	<template x-route="notfound" x-view="/404.html"></template>
</div>

<div id="app" x-data>
	<!--this will be replaced by the content of the views.-->
</div>

hello.html:

<div>hello, <span x-text="$router.params.name"></span></div>

Notes:

  • You can use both views and handlers in the same route, handlers always run first.
  • Set the viewSelector option in settings to change where views will show
  • window.PineconeRouter.settings.viewsSelector = '#app'
  • View are simply html files, can be text files too.
  • When you redirect from a handler the view wont be displayed.
  • Views are cached in memory

Events:

This middleware dispatch these events:

name recipient when is it dispatched
pinecone-start window when the page start loading
pinecone-end window when the page loading ends
fetch-error #app when the fetch fail

The first two can be used to show a loading bar or indicator

Loading bar Example:

Using nProgress:

<script src="https://unpkg.com/[email protected]/nprogress.js"></script>
<link rel="stylesheet" href="https://unpkg.com/[email protected]/nprogress.css" />
window.addEventListener('pinecone-start', () => nProgress.start())
window.addEventListener('pinecone-end', () => nProgress.done())

Supported versions

Version Pinecone Router Versions
2.x.x ^2.0.0
1.x.x ^1.0.0

Contributing:

Please refer to CONTRIBUTING.md

Versioning

This projects follow the Semantic Versioning guidelines.

License

Copyright (c) 2022 Rafik El Hadi Houari

Licensed under the MIT license, see LICENSE.md for details.

About

Views rendering middleware for Pinecone Router

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • TypeScript 92.0%
  • JavaScript 8.0%