Session Resume
Annotate fields to be persisted on navigation away from the current page. Fields will be automatically restored when the user revisits the page again in their current browser session (excludes separate tabs).
Not designed for persisted crash recovery.
Installation
$ npm install @github/session-resume
Usage
HTML
`` html
js
import {persistResumableFields, restoreResumableFields, setForm} from '@github/session-resume'### JS
function getPageID() { return window.location.pathname }
// Listen for all form submit events and to see if their default submission // behavior is invoked. window.addEventListener('submit', setForm, {capture: true})
// Resume field content on regular page loads. window.addEventListener('pageshow', function() { restoreResumableFields(getPageID()) })
// Persist resumable fields when page is unloaded window.addEventListener('pagehide', function() { persistResumableFields(getPageID()) })
npm install npm test ``####restoreResumableFields(id: string, options)restoreResumableFields(id: string, options)The
function supports optional configurations:storage:- [Storage][] instance (defaults to [window.sessionStorage][])keyPrefix:-stringprepended onto the storage key (defaults to"session-resume") [Storage]: https://developer.mozilla.org/en-US/docs/Web/API/Storage [window.sessionStorage]: https://developer.mozilla.org/en-US/docs/Web/API/Window/sessionStoragepersistResumableFields(id: string, options)persistResumableFields(id: string, options)The
function supports optional configurations:storage:- [Storage][] instance (defaults to [window.sessionStorage][])storageFilter:-(field: HTMLInputElement | HTMLTextAreaElement) => booleanpredicate to determine whether or not to store a field (defaults to(field) => field.checked !== field.defaultChecked)for checkbox and radio buttons,(field) => field.value !== field.defaultValueotherwise)keyPrefix:-stringprepended onto the storage key (defaults to"session-resume")scope:-ParentNodeused to query field elements (defaults todocument)selector:-stringused to query field elements (defaults to".js-session-resumable")fields:-NodeList | Node[]provide field elements as an alternative to querying (defaults tooptions.scope.querySelectorAll(options.selector)) Note: Whenfieldsis specified,scopeandselectorswill be ignored.Storage[
]: https://developer.mozilla.org/en-US/docs/Web/API/Storage [window.sessionStorage]: https://developer.mozilla.org/en-US/docs/Web/API/Window/sessionStorageDevelopment
License
Distributed under the MIT license. See LICENSE for details.