From 2ea4c849669f197df1d142ed24b6909643e471ac Mon Sep 17 00:00:00 2001 From: David Straub Date: Sun, 8 Nov 2020 22:30:58 +0100 Subject: [PATCH] Add routing --- package-lock.json | 13 +++++++++++- package.json | 3 ++- src/GrampsJs.js | 43 +++++++++++++++++++++++++++++++++++++-- src/views/GrampsjsView.js | 5 +++++ 4 files changed, 60 insertions(+), 4 deletions(-) diff --git a/package-lock.json b/package-lock.json index e750d737..ca98be4b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,7 +9,8 @@ "license": "MIT", "dependencies": { "lit-element": "^2.0.1", - "lit-html": "^1.0.0" + "lit-html": "^1.0.0", + "pwa-helpers": "^0.9.1" }, "devDependencies": { "@open-wc/building-rollup": "^1.0.0", @@ -9753,6 +9754,11 @@ "glob": "^7.1.3" } }, + "node_modules/pwa-helpers": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/pwa-helpers/-/pwa-helpers-0.9.1.tgz", + "integrity": "sha512-4sP/C9sSxQ3w80AATmvCEI3R+MHzCwr2RSZEbLyMkeJgV3cRk7ySZRUrQnBDSA7A0/z6dkYtjuXlkhN1ZFw3iA==" + }, "node_modules/qs": { "version": "6.9.4", "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.4.tgz", @@ -22298,6 +22304,11 @@ } } }, + "pwa-helpers": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/pwa-helpers/-/pwa-helpers-0.9.1.tgz", + "integrity": "sha512-4sP/C9sSxQ3w80AATmvCEI3R+MHzCwr2RSZEbLyMkeJgV3cRk7ySZRUrQnBDSA7A0/z6dkYtjuXlkhN1ZFw3iA==" + }, "qs": { "version": "6.9.4", "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.4.tgz", diff --git a/package.json b/package.json index 3f613e60..f84285a4 100644 --- a/package.json +++ b/package.json @@ -61,6 +61,7 @@ "license": "MIT", "dependencies": { "lit-element": "^2.0.1", - "lit-html": "^1.0.0" + "lit-html": "^1.0.0", + "pwa-helpers": "^0.9.1" } } diff --git a/src/GrampsJs.js b/src/GrampsJs.js index cc1fc3e2..d4796e4a 100644 --- a/src/GrampsJs.js +++ b/src/GrampsJs.js @@ -1,4 +1,5 @@ import { LitElement, html, css } from 'lit-element'; +import { installRouter } from 'pwa-helpers/router.js'; import './views/GrampsjsViewPerson.js' @@ -7,12 +8,16 @@ export class GrampsJs extends LitElement { static get properties() { return { strings: { type: Object }, + _page: { type: String }, + _pageId: { type: String }, }; } constructor() { super(); this.strings = {}; + this._page = 'home'; + this._pageId = ''; } static get styles() { @@ -30,17 +35,51 @@ export class GrampsJs extends LitElement { main { flex-grow: 1; } + + .page { + display: none; + } + + .page[active] { + display: block; + } `; } render() { return html`
-

Gramps.js

+ Page: ${this._page} + Subpage: ${this._pageId} +

Gramps.js

+

Home

+

Person

+ -
`; } + firstUpdated() { + installRouter((location) => this._loadPage(decodeURIComponent(location.pathname))); + } + + _loadPage(path) { + if (path === "/") { + console.log("hoooome") + this._page = 'home'; + this._pageId = ''; + } else{ + const pathId = path.slice(1); + const page = pathId.split('/')[0] + const pageId = pathId.split('/')[1] + this._page = page; + this._pageId = pageId || ''; + } + } + } diff --git a/src/views/GrampsjsView.js b/src/views/GrampsjsView.js index bce4618c..1d91f068 100644 --- a/src/views/GrampsjsView.js +++ b/src/views/GrampsjsView.js @@ -9,8 +9,13 @@ export class GrampsjsView extends LitElement { ]; } + shouldUpdate() { + return this.active; + } + static get properties() { return { + active: { type: Boolean }, strings: { type: Object }, }; }