@watch-state/history-api
TypeScript icon, indicating that this package has built-in type declarations

2.0.0-alpha.1 • Public • Published
Watch-State logo by Mikhail Lysikov

  @watch-state/history-api

 

NPM minzipped size downloads changelog license

Browser History API with watch-state.

stars watchers

Install

npm

npm i @watch-state/history-api

yarn

yarn add @watch-state/history-api

Usage

You can change History API by historyPush and historyReplace from this library or use some default History API methods: history.back(), history.forward(), history.go(delta)

historyPush

This is an action to add History API step. Use the action instead of history.pushState.

import { historyPush } from '@watch-state/history-api'

historyPush('/new-url')

This action returns a promise because of History API changes non-immediately with historyPush. It first of all scrolls to page up by default.

historyPush('/new-url').then(() => {
  console.log('done')
})

Use scroll-behavior equals smooth to have a smooth scroll effect.

You can scroll to another position by the second argument.

historyPush('/new-url', 100)

You can use a selector to scroll at an element.

historyPush('/new-url', '#header')

historyReplace

This is an action to replace History API step. Use the action instead of history.replaceState.

import { historyReplace } from '@watch-state/history-api'

historyReplace('/new-url')

It works the same as historyPush so it returns a promise and has 2 arguments.


You can react on History API changes by next store elements:


locationHref

Returns observable location.href

import { Watch } from 'watch-state'
import { locationHref, historyPush } from '@watch-state/history-api'

new Watch(() => {
  console.log(locationHref.value)
})

historyPush('/test')

locationURL

Returns observable location.pathname + location.search + location.hash

import { Watch } from 'watch-state'
import { locationURL, historyPush } from '@watch-state/history-api'

new Watch(() => {
  console.log(locationURL.value)
})

historyPush('/test')

locationPath

Returns observable location.pathname

import { Watch } from 'watch-state'
import { locationPath, historyPush } from '@watch-state/history-api'

new Watch(() => {
  console.log(locationPath.value)
})

historyPush('/test')

locationSearch

Returns observable location.search

import { Watch } from 'watch-state'
import { locationSearch, historyPush } from '@watch-state/history-api'

new Watch(() => {
  console.log(locationSearch.value)
})

historyPush('?test=1')

locationHash

Returns observable location.hash

import { Watch } from 'watch-state'
import { locationHash, historyPush } from '@watch-state/history-api'

new Watch(() => {
  console.log(locationHash.value)
})

historyPush('#hash')

historyMovement

This is a Cache returns one of the next string: back | forward | same.

If you go back by browser button or history.back() or history.go(delta) with a negative delta then historyMovement value equals back.

If you go forward by browser button or history.forward() or history.go(delta) with a positive delta or historyPush then historyMovement value equals forward.

If you use historyReplace, historyMovement value equals same

import { Watch } from 'watch-state'
import { historyMovement, historyPush } from '@watch-state/history-api'

new Watch(() => {
  console.log(historyMovement.value)
})

historyPush('/test')
history.back()
history.forward()

historyState

Returns observable history.state

import { Watch } from 'watch-state'
import { historyState, historyPush } from '@watch-state/history-api'

new Watch(() => {
  console.log(historyState.value)
})

historyPush('/test')

Issues

If you find a bug, please file an issue on GitHub

issues

Package Sidebar

Install

npm i @watch-state/history-api

Weekly Downloads

42

Version

2.0.0-alpha.1

License

MIT

Unpacked Size

28.4 kB

Total Files

81

Last publish

Collaborators

  • deight