Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Disable hash routing by default #699

Merged
merged 1 commit into from
Jun 11, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 7 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -284,12 +284,12 @@ Querystrings (e.g. `?foo=bar`) are ignored when matching routes. An object
containing the key-value mappings exists as `state.query`.

### Hash routing
By default hashes are treated as part of the url when routing. Using hashes to
delimit routes (e.g. `/foo#bar`) can be disabled by setting the `hash`
[option](#app--chooopts) to `false`. Regardless, when a hash is found we also
check if there's an available anchor on the same page, and will scroll the
screen to the position. Using both hashes in URLs and anchor links on the page
is generally not recommended.
By default, hashes are ignored when routing. When enabling hash routing
(`choo({ hash: true })`) hashes will be treated as part of the url, converting
`/foo#bar` to `/foo/bar`. This is useful if the application is not mounted at
the website root. Unless hash routing is enabled, if a hash is found we check if
there's an anchor on the same page, and will scroll the element into view. Using
both hashes in URLs and anchor links on the page is generally not recommended.

### Following links
By default all clicks on `<a>` tags are handled by the router through the
Expand Down Expand Up @@ -534,7 +534,7 @@ Initialize a new `choo` instance. `opts` can also contain the following values:
- __opts.cache:__ default: `undefined`. Override default class cache used by
`state.cache`. Can be a a `number` (maximum number of instances in cache,
default `100`) or an `object` with a [nanolru][nanolru]-compatible API.
- __opts.hash:__ default: `true`. Treat hashes in URLs as part of the pathname,
- __opts.hash:__ default: `false`. Treat hashes in URLs as part of the pathname,
transforming `/foo#bar` to `/foo/bar`. This is useful if the application is
not mounted at the website root.

Expand Down
2 changes: 1 addition & 1 deletion index.js
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ function Choo (opts) {
// properties for internal use only
this._historyEnabled = opts.history === undefined ? true : opts.history
this._hrefEnabled = opts.href === undefined ? true : opts.href
this._hashEnabled = opts.hash === undefined ? true : opts.hash
this._hashEnabled = opts.hash === undefined ? false : opts.hash
this._hasWindow = typeof window !== 'undefined'
this._cache = opts.cache
this._loaded = false
Expand Down
10 changes: 5 additions & 5 deletions test/browser.js
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ tape('should expose a public API', function (t) {
t.end()
})

tape('should enable history and hash by defaut', function (t) {
tape('should enable history and href by defaut', function (t) {
var app = choo()
t.true(app._historyEnabled, 'history enabled')
t.true(app._hrefEnabled, 'href enabled')
Expand Down Expand Up @@ -82,9 +82,9 @@ tape('router should support a default route', function (t) {
app.mount(container)
})

tape('router should treat hashes as slashes by default', function (t) {
tape('enabling hash routing should treat hashes as slashes', function (t) {
t.plan(1)
var app = choo()
var app = choo({ hash: true })
var container = init('/account#security')
app.route('/account/security', function (state, emit) {
t.pass()
Expand All @@ -93,9 +93,9 @@ tape('router should treat hashes as slashes by default', function (t) {
app.mount(container)
})

tape('router should ignore hashes if hash is disabled', function (t) {
tape('router should ignore hashes by default', function (t) {
t.plan(1)
var app = choo({ hash: false })
var app = choo()
var container = init('/account#security')
app.route('/account', function (state, emit) {
t.pass()
Expand Down
8 changes: 4 additions & 4 deletions test/node.js
Original file line number Diff line number Diff line change
Expand Up @@ -76,9 +76,9 @@ tape('router should support a default route', function (t) {
t.end()
})

tape('router should treat hashes as slashes by default', function (t) {
tape('enabling hash routing should treat hashes as slashes', function (t) {
t.plan(1)
var app = choo()
var app = choo({ hash: true })
app.route('/account/security', function (state, emit) {
t.pass()
return html`<div></div>`
Expand All @@ -87,9 +87,9 @@ tape('router should treat hashes as slashes by default', function (t) {
t.end()
})

tape('router should ignore hashes if hash is disabled', function (t) {
tape('router should ignore hashes by default', function (t) {
t.plan(1)
var app = choo({ hash: false })
var app = choo()
app.route('/account', function (state, emit) {
t.pass()
return html`<div></div>`
Expand Down