npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

formkit-cache-plugin

v0.0.3

Published

FormKit Cache plugin

Downloads

9

Readme

formkit-cache-plugin

npm version npm downloads bundle Codecov License JSDocs

Using the createStoragePlugin function, you can easily save unsubmitted user form inputs to any driver from unstorage which will be restored on page load. This is great for preventing data loss in the event a user's browser crashes, tab is closed, or other unforeseen issue causes your application to reload before the user can submit their data.

The difference between this plugin and the official LocalStorage Plugin is that this plugin allows you to use any driver from unstorage instead of just localStorage.

See Official LocalStorage Plugin documentation.

Installation

Install package:

# npm
npm install formkit-cache-plugin

# yarn
yarn add formkit-cache-plugin

# pnpm
pnpm install formkit-cache-plugin

Add it to our FormKit config as a plugin.

The createStoragePlugin has options you can configure:

  • driver - The driver from unstorage to use for saving and loading data. Defaults to Memory.
  • prefix - The prefix assigned to your storage key. Defaults to formkit.
  • key - An optional key to include in the storage key name, useful for keying data to a particular user.
  • control - An optional field name for a field in your form you would like to use to enable saving to storage when true. The field value must be a boolean.
  • maxAge - The time (in milliseconds) that the saved storage should be considered valid. Defaults to 1 hour.
  • debounce - The debounce to apply to saving data to storage. Defaults to 200ms
  • beforeSave: — An optional async callback that recieves the form data. Allows modification of form data before saving to storage.
  • beforeLoad: — An optional async callback that recives the form data. Allows modification of the storage data before applying to the form.

If you want to save in localStorage, you must set the driver to localStorageDriver().

import { defaultConfig } from '@formkit/vue'
import { createCachePlugin } from "formkit-cache-plugin";

// Formkit config
const config = defaultConfig({
  plugins: [
    createCachePlugin({
      // plugin defaults:
      driver: memoryDriver(),
      prefix: 'formkit',
      key: undefined,
      control: undefined,
      maxAge: 3600000, // 1 hour
      debounce: 200,
      beforeSave: undefined,
      beforeLoad: undefined
    })
  ]
})

export default config

Usage

To enable saving to storage add the cache to your FormKit form. The storage key will be your provided prefix (default is formkit) and your form name eg. formkit-contact.

Basic example

<template>
  <FormKit type="form" name="contact" cache @submit="submitHandler">
    <FormKit type="text" name="name" label="Your name" />
    <FormKit type="text" name="email" label="Your email" />
    <FormKit type="textarea" name="message" label="Your message" />
  </FormKit>
</template>

That's it! Your form data will now be saved on every commit event that the form receives. It will remain valid until the maxAge set in your plugin config, and the storage data is cleared when the submit event fires on the target form.

For more examples, see the Official LocalStorage Plugin documentation.

Development

  • Clone this repository
  • Install latest LTS version of Node.js
  • Enable Corepack using corepack enable
  • Install dependencies using pnpm install
  • Run interactive tests using pnpm dev

License

Made with 💛

Published under MIT License.