Merge pull request #10 from paoloar77/localstorage-1

Localstorage 1
This commit is contained in:
Paolo Arena
2019-01-05 23:37:40 +01:00
committed by GitHub
31 changed files with 831 additions and 161 deletions

View File

@@ -1,3 +1,4 @@
SERVICE_WORKER_FILE='sw.js'
APP_ID='1' APP_ID='1'
VUE_APP_URL='prova SVILUPPO!' VUE_APP_URL='prova SVILUPPO!'
PROVA_PAOLO='PROVA SVILUPPO' PROVA_PAOLO='PROVA SVILUPPO'

View File

@@ -34,6 +34,9 @@ Thanks to the Quasar Framework and TypeScript !
[![js-standard-style](https://cdn.rawgit.com/standard/standard/master/badge.svg)](https://github.com/standard/standard) [![js-standard-style](https://cdn.rawgit.com/standard/standard/master/badge.svg)](https://github.com/standard/standard)
[![Build](https://img.shields.io/circleci/project/github/paoloar77/freeplanet/master.svg?style=for-the-badge)](https://circleci.com/gh/paoloar77/freeplanet/tree/master)
[![Coverage](https://img.shields.io/codecov/c/github/paoloar77/freeplanet/master.svg?style=for-the-badge)](https://codecov.io/gh/paoloar77/freeplanet/branch/master)
</div> </div>
## Features ⚡️ ## Features ⚡️

425
package-lock.json generated
View File

@@ -4788,6 +4788,15 @@
"integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=",
"dev": true "dev": true
}, },
"ansi-align": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-2.0.0.tgz",
"integrity": "sha1-w2rsy6VjuJzrVW82kPCx2eNUf38=",
"dev": true,
"requires": {
"string-width": "2.1.1"
}
},
"ansi-colors": { "ansi-colors": {
"version": "3.2.3", "version": "3.2.3",
"resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.3.tgz", "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.3.tgz",
@@ -6230,6 +6239,29 @@
"resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
"integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=" "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24="
}, },
"boxen": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/boxen/-/boxen-1.3.0.tgz",
"integrity": "sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw==",
"dev": true,
"requires": {
"ansi-align": "2.0.0",
"camelcase": "4.1.0",
"chalk": "2.4.1",
"cli-boxes": "1.0.0",
"string-width": "2.1.1",
"term-size": "1.2.0",
"widest-line": "2.0.1"
},
"dependencies": {
"camelcase": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz",
"integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=",
"dev": true
}
}
},
"brace-expansion": { "brace-expansion": {
"version": "1.1.11", "version": "1.1.11",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
@@ -6801,6 +6833,12 @@
} }
} }
}, },
"cli-boxes": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-1.0.0.tgz",
"integrity": "sha1-T6kXw+WclKAEzWH47lCdplFocUM=",
"dev": true
},
"cli-cursor": { "cli-cursor": {
"version": "2.1.0", "version": "2.1.0",
"resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz",
@@ -7527,6 +7565,12 @@
"randomfill": "1.0.4" "randomfill": "1.0.4"
} }
}, },
"crypto-random-string": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz",
"integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=",
"dev": true
},
"css": { "css": {
"version": "2.2.4", "version": "2.2.4",
"resolved": "https://registry.npmjs.org/css/-/css-2.2.4.tgz", "resolved": "https://registry.npmjs.org/css/-/css-2.2.4.tgz",
@@ -8088,6 +8132,12 @@
"integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=", "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=",
"dev": true "dev": true
}, },
"deep-extend": {
"version": "0.6.0",
"resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",
"integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==",
"dev": true
},
"deep-is": { "deep-is": {
"version": "0.1.3", "version": "0.1.3",
"resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz",
@@ -8274,6 +8324,11 @@
"integrity": "sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw==", "integrity": "sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw==",
"dev": true "dev": true
}, },
"dexie": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/dexie/-/dexie-2.0.4.tgz",
"integrity": "sha512-aQ/s1U2wHxwBKRrt2Z/mwFNHMQWhESerFsMYzE+5P5OsIe5o1kgpFMWkzKTtkvkyyEni6mWr/T4HUJuY9xIHLA=="
},
"diff": { "diff": {
"version": "3.5.0", "version": "3.5.0",
"resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz",
@@ -11151,6 +11206,11 @@
"integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==", "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==",
"dev": true "dev": true
}, },
"immediate": {
"version": "3.0.6",
"resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz",
"integrity": "sha1-nbHb0Pr43m++D13V5Wu2BigN5ps="
},
"import-cwd": { "import-cwd": {
"version": "2.1.0", "version": "2.1.0",
"resolved": "https://registry.npmjs.org/import-cwd/-/import-cwd-2.1.0.tgz", "resolved": "https://registry.npmjs.org/import-cwd/-/import-cwd-2.1.0.tgz",
@@ -11179,6 +11239,12 @@
"resolve-from": "3.0.0" "resolve-from": "3.0.0"
} }
}, },
"import-lazy": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz",
"integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=",
"dev": true
},
"import-local": { "import-local": {
"version": "1.0.0", "version": "1.0.0",
"resolved": "https://registry.npmjs.org/import-local/-/import-local-1.0.0.tgz", "resolved": "https://registry.npmjs.org/import-local/-/import-local-1.0.0.tgz",
@@ -11580,6 +11646,12 @@
} }
} }
}, },
"is-npm": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-npm/-/is-npm-1.0.0.tgz",
"integrity": "sha1-8vtjpl5JBbQGyGBydloaTceTufQ=",
"dev": true
},
"is-number": { "is-number": {
"version": "3.0.0", "version": "3.0.0",
"resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
@@ -13432,6 +13504,15 @@
"webpack-sources": "1.3.0" "webpack-sources": "1.3.0"
} }
}, },
"latest-version": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/latest-version/-/latest-version-3.1.0.tgz",
"integrity": "sha1-ogU4P+oyKzO1rjsYq+4NwvNW7hU=",
"dev": true,
"requires": {
"package-json": "4.0.1"
}
},
"launch-editor": { "launch-editor": {
"version": "2.2.1", "version": "2.2.1",
"resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.2.1.tgz", "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.2.1.tgz",
@@ -13487,6 +13568,14 @@
"type-check": "0.3.2" "type-check": "0.3.2"
} }
}, },
"lie": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/lie/-/lie-3.1.1.tgz",
"integrity": "sha1-mkNrLMd0bKWd56QfpGmz77dr2H4=",
"requires": {
"immediate": "3.0.6"
}
},
"listr": { "listr": {
"version": "0.12.0", "version": "0.12.0",
"resolved": "https://registry.npmjs.org/listr/-/listr-0.12.0.tgz", "resolved": "https://registry.npmjs.org/listr/-/listr-0.12.0.tgz",
@@ -13764,6 +13853,14 @@
} }
} }
}, },
"localforage": {
"version": "1.7.3",
"resolved": "https://registry.npmjs.org/localforage/-/localforage-1.7.3.tgz",
"integrity": "sha512-1TulyYfc4udS7ECSBT2vwJksWbkwwTX8BzeUIiq8Y07Riy7bDAAnxDaPU/tWyOVmQAcWJIEIFP9lPfBGqVoPgQ==",
"requires": {
"lie": "3.1.1"
}
},
"locate-path": { "locate-path": {
"version": "3.0.0", "version": "3.0.0",
"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
@@ -13776,8 +13873,7 @@
"lodash": { "lodash": {
"version": "4.17.11", "version": "4.17.11",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz",
"integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg=="
"dev": true
}, },
"lodash._reinterpolate": { "lodash._reinterpolate": {
"version": "3.0.0", "version": "3.0.0",
@@ -18208,6 +18304,18 @@
"resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz",
"integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==" "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ=="
}, },
"package-json": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/package-json/-/package-json-4.0.1.tgz",
"integrity": "sha1-iGmgQBJTZhxMTKPabCEh7VVfXu0=",
"dev": true,
"requires": {
"got": "6.7.1",
"registry-auth-token": "3.3.2",
"registry-url": "3.1.0",
"semver": "5.6.0"
}
},
"pako": { "pako": {
"version": "1.0.7", "version": "1.0.7",
"resolved": "https://registry.npmjs.org/pako/-/pako-1.0.7.tgz", "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.7.tgz",
@@ -20966,6 +21074,26 @@
} }
} }
}, },
"rc": {
"version": "1.2.8",
"resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz",
"integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==",
"dev": true,
"requires": {
"deep-extend": "0.6.0",
"ini": "1.3.5",
"minimist": "1.2.0",
"strip-json-comments": "2.0.1"
},
"dependencies": {
"minimist": {
"version": "1.2.0",
"resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
"integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
"dev": true
}
}
},
"read-pkg": { "read-pkg": {
"version": "1.1.0", "version": "1.1.0",
"resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz",
@@ -21192,6 +21320,25 @@
"resolved": "https://registry.npmjs.org/register-service-worker/-/register-service-worker-1.5.2.tgz", "resolved": "https://registry.npmjs.org/register-service-worker/-/register-service-worker-1.5.2.tgz",
"integrity": "sha512-XNqSZHJsFGnvEGkg/2IrCp6G8Ya3qLj4mq0bSHil/dfdO82LOxGnMnJjAD9MYCvf/8cDCO8pL+1i65yzmP7rPQ==" "integrity": "sha512-XNqSZHJsFGnvEGkg/2IrCp6G8Ya3qLj4mq0bSHil/dfdO82LOxGnMnJjAD9MYCvf/8cDCO8pL+1i65yzmP7rPQ=="
}, },
"registry-auth-token": {
"version": "3.3.2",
"resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.3.2.tgz",
"integrity": "sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ==",
"dev": true,
"requires": {
"rc": "1.2.8",
"safe-buffer": "5.1.2"
}
},
"registry-url": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz",
"integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=",
"dev": true,
"requires": {
"rc": "1.2.8"
}
},
"regjsgen": { "regjsgen": {
"version": "0.5.0", "version": "0.5.0",
"resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.0.tgz", "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.0.tgz",
@@ -21564,6 +21711,21 @@
"aproba": "1.2.0" "aproba": "1.2.0"
} }
}, },
"rx-lite": {
"version": "4.0.8",
"resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz",
"integrity": "sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ=",
"dev": true
},
"rx-lite-aggregates": {
"version": "4.0.8",
"resolved": "https://registry.npmjs.org/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz",
"integrity": "sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74=",
"dev": true,
"requires": {
"rx-lite": "4.0.8"
}
},
"rxjs": { "rxjs": {
"version": "5.5.12", "version": "5.5.12",
"resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.5.12.tgz", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.5.12.tgz",
@@ -21810,6 +21972,15 @@
"resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz",
"integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==" "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg=="
}, },
"semver-diff": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-2.1.0.tgz",
"integrity": "sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY=",
"dev": true,
"requires": {
"semver": "5.6.0"
}
},
"send": { "send": {
"version": "0.16.2", "version": "0.16.2",
"resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz", "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz",
@@ -22810,6 +22981,43 @@
"inherits": "2.0.3" "inherits": "2.0.3"
} }
}, },
"term-size": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz",
"integrity": "sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk=",
"dev": true,
"requires": {
"execa": "0.7.0"
},
"dependencies": {
"cross-spawn": {
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz",
"integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=",
"dev": true,
"requires": {
"lru-cache": "4.1.5",
"shebang-command": "1.2.0",
"which": "1.3.1"
}
},
"execa": {
"version": "0.7.0",
"resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz",
"integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=",
"dev": true,
"requires": {
"cross-spawn": "5.1.0",
"get-stream": "3.0.0",
"is-stream": "1.1.0",
"npm-run-path": "2.0.2",
"p-finally": "1.0.0",
"signal-exit": "3.0.2",
"strip-eof": "1.0.0"
}
}
}
},
"terser": { "terser": {
"version": "3.11.0", "version": "3.11.0",
"resolved": "https://registry.npmjs.org/terser/-/terser-3.11.0.tgz", "resolved": "https://registry.npmjs.org/terser/-/terser-3.11.0.tgz",
@@ -23686,6 +23894,15 @@
"imurmurhash": "0.1.4" "imurmurhash": "0.1.4"
} }
}, },
"unique-string": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz",
"integrity": "sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo=",
"dev": true,
"requires": {
"crypto-random-string": "1.0.0"
}
},
"universalify": { "universalify": {
"version": "0.1.2", "version": "0.1.2",
"resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
@@ -23754,6 +23971,66 @@
"integrity": "sha512-bzpH/oBhoS/QI/YtbkqCg6VEiPYjSZtrHQM6/QnJS6OL9pKUFLqb3aFh4Scvwm45+7iAgiMkLhSbaZxUqmrprw==", "integrity": "sha512-bzpH/oBhoS/QI/YtbkqCg6VEiPYjSZtrHQM6/QnJS6OL9pKUFLqb3aFh4Scvwm45+7iAgiMkLhSbaZxUqmrprw==",
"dev": true "dev": true
}, },
"update-notifier": {
"version": "2.5.0",
"resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-2.5.0.tgz",
"integrity": "sha512-gwMdhgJHGuj/+wHJJs9e6PcCszpxR1b236igrOkUofGhqJuG+amlIKwApH1IW1WWl7ovZxsX49lMBWLxSdm5Dw==",
"dev": true,
"requires": {
"boxen": "1.3.0",
"chalk": "2.4.1",
"configstore": "3.1.2",
"import-lazy": "2.1.0",
"is-ci": "1.0.10",
"is-installed-globally": "0.1.0",
"is-npm": "1.0.0",
"latest-version": "3.1.0",
"semver-diff": "2.1.0",
"xdg-basedir": "3.0.0"
},
"dependencies": {
"configstore": {
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/configstore/-/configstore-3.1.2.tgz",
"integrity": "sha512-vtv5HtGjcYUgFrXc6Kx747B83MRRVS5R1VTEQoXvuP+kMI+if6uywV0nDGoiydJRy4yk7h9od5Og0kxx4zUXmw==",
"dev": true,
"requires": {
"dot-prop": "4.2.0",
"graceful-fs": "4.1.15",
"make-dir": "1.3.0",
"unique-string": "1.0.0",
"write-file-atomic": "2.3.0",
"xdg-basedir": "3.0.0"
}
},
"dot-prop": {
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz",
"integrity": "sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==",
"dev": true,
"requires": {
"is-obj": "1.0.1"
}
},
"write-file-atomic": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.3.0.tgz",
"integrity": "sha512-xuPeK4OdjWqtfi59ylvVL0Yn35SF3zgcAcv7rBPFHVaEapaDr4GdGgm3j7ckTwH9wHL7fGmgfAnb0+THrHb8tA==",
"dev": true,
"requires": {
"graceful-fs": "4.1.15",
"imurmurhash": "0.1.4",
"signal-exit": "3.0.2"
}
},
"xdg-basedir": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-3.0.0.tgz",
"integrity": "sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ=",
"dev": true
}
}
},
"upper-case": { "upper-case": {
"version": "1.1.3", "version": "1.1.3",
"resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz",
@@ -23956,6 +24233,17 @@
"resolved": "https://registry.npmjs.org/vue-i18n/-/vue-i18n-8.4.0.tgz", "resolved": "https://registry.npmjs.org/vue-i18n/-/vue-i18n-8.4.0.tgz",
"integrity": "sha512-MiBI1v2pY22aAEbNrcy7GX9qigoUQE9PbmrAydrBuYNRwn0RbD1RZpMemtmGW3Ju6LBA1yn7TZOPa3lxWrT0Eg==" "integrity": "sha512-MiBI1v2pY22aAEbNrcy7GX9qigoUQE9PbmrAydrBuYNRwn0RbD1RZpMemtmGW3Ju6LBA1yn7TZOPa3lxWrT0Eg=="
}, },
"vue-idb": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/vue-idb/-/vue-idb-0.2.0.tgz",
"integrity": "sha1-Mtqa+N8ZxG/1HYo8xJbfvm6JDTU=",
"requires": {
"dexie": "2.0.4",
"lodash": "4.17.11",
"vue": "2.5.21",
"vuex": "3.0.1"
}
},
"vue-jest": { "vue-jest": {
"version": "3.0.2", "version": "3.0.2",
"resolved": "https://registry.npmjs.org/vue-jest/-/vue-jest-3.0.2.tgz", "resolved": "https://registry.npmjs.org/vue-jest/-/vue-jest-3.0.2.tgz",
@@ -25030,6 +25318,15 @@
"string-width": "2.1.1" "string-width": "2.1.1"
} }
}, },
"widest-line": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/widest-line/-/widest-line-2.0.1.tgz",
"integrity": "sha512-Ba5m9/Fa4Xt9eb2ELXt77JxVDV8w7qQrH0zS/TWSJdLyAwQjWoOzpzj5lwVftDz6n/EOu3tNACS84v509qwnJA==",
"dev": true,
"requires": {
"string-width": "2.1.1"
}
},
"wordwrap": { "wordwrap": {
"version": "0.0.3", "version": "0.0.3",
"resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz",
@@ -25150,6 +25447,130 @@
"workbox-core": "3.6.3" "workbox-core": "3.6.3"
} }
}, },
"workbox-cli": {
"version": "3.6.3",
"resolved": "https://registry.npmjs.org/workbox-cli/-/workbox-cli-3.6.3.tgz",
"integrity": "sha512-l97OZ4sGnnHzlHsqHCOuK0s2hh7OjZTPhP3w6iKqzD9uR2JctXvUB7gB2MmD00ihD3kTyaR8HLCmEI2uZCzkbw==",
"dev": true,
"requires": {
"chalk": "2.4.1",
"common-tags": "1.4.0",
"fs-extra": "4.0.3",
"glob": "7.1.3",
"inquirer": "3.3.0",
"meow": "3.7.0",
"ora": "1.4.0",
"pretty-bytes": "4.0.2",
"update-notifier": "2.5.0",
"workbox-build": "3.6.3"
},
"dependencies": {
"ansi-escapes": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.1.0.tgz",
"integrity": "sha512-UgAb8H9D41AQnu/PbWlCofQVcnV4Gs2bBJi9eZPxfU/hgglFh3SMDMENRIqdr7H6XFnXdoknctFByVsCOotTVw==",
"dev": true
},
"chardet": {
"version": "0.4.2",
"resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz",
"integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=",
"dev": true
},
"external-editor": {
"version": "2.2.0",
"resolved": "http://registry.npmjs.org/external-editor/-/external-editor-2.2.0.tgz",
"integrity": "sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A==",
"dev": true,
"requires": {
"chardet": "0.4.2",
"iconv-lite": "0.4.24",
"tmp": "0.0.33"
}
},
"figures": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz",
"integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=",
"dev": true,
"requires": {
"escape-string-regexp": "1.0.5"
}
},
"fs-extra": {
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz",
"integrity": "sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==",
"dev": true,
"requires": {
"graceful-fs": "4.1.15",
"jsonfile": "4.0.0",
"universalify": "0.1.2"
}
},
"inquirer": {
"version": "3.3.0",
"resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.3.0.tgz",
"integrity": "sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ==",
"dev": true,
"requires": {
"ansi-escapes": "3.1.0",
"chalk": "2.4.1",
"cli-cursor": "2.1.0",
"cli-width": "2.2.0",
"external-editor": "2.2.0",
"figures": "2.0.0",
"lodash": "4.17.11",
"mute-stream": "0.0.7",
"run-async": "2.3.0",
"rx-lite": "4.0.8",
"rx-lite-aggregates": "4.0.8",
"string-width": "2.1.1",
"strip-ansi": "4.0.0",
"through": "2.3.8"
}
},
"jsonfile": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
"integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=",
"dev": true,
"requires": {
"graceful-fs": "4.1.15"
}
},
"ora": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/ora/-/ora-1.4.0.tgz",
"integrity": "sha512-iMK1DOQxzzh2MBlVsU42G80mnrvUhqsMh74phHtDlrcTZPK0pH6o7l7DRshK+0YsxDyEuaOkziVdvM3T0QTzpw==",
"dev": true,
"requires": {
"chalk": "2.4.1",
"cli-cursor": "2.1.0",
"cli-spinners": "1.3.1",
"log-symbols": "2.2.0"
}
},
"strip-ansi": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
"integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
"dev": true,
"requires": {
"ansi-regex": "3.0.0"
}
},
"tmp": {
"version": "0.0.33",
"resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
"integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==",
"dev": true,
"requires": {
"os-tmpdir": "1.0.2"
}
}
}
},
"workbox-core": { "workbox-core": {
"version": "3.6.3", "version": "3.6.3",
"resolved": "https://registry.npmjs.org/workbox-core/-/workbox-core-3.6.3.tgz", "resolved": "https://registry.npmjs.org/workbox-core/-/workbox-core-3.6.3.tgz",

View File

@@ -10,15 +10,13 @@
"pwa": "NODE_ENV=development NODE_OPTIONS=--max_old_space_size=4096 DEBUG=v8:* quasar dev -m pwa", "pwa": "NODE_ENV=development NODE_OPTIONS=--max_old_space_size=4096 DEBUG=v8:* quasar dev -m pwa",
"test:unit": "jest", "test:unit": "jest",
"test:cover": "jest --coverage", "test:cover": "jest --coverage",
"build": "quasar build -m pwa", "build": "quasar build -m pwa && workbox generateSW workbox-config.js",
"build:clean": "quasar clean", "build:clean": "quasar clean",
"serve": "quasar serve ./dist/pwa-mat", "serve": "quasar serve ./dist/pwa-mat",
"serve:coverage": "quasar serve test/coverage/lcov-report/ --cache 0 --port 8788", "serve:coverage": "quasar serve test/coverage/lcov-report/ --cache 0 --port 8788",
"deploy": "deploy.sh" "deploy": "deploy.sh"
}, },
"dependencies": { "dependencies": {
"quasar-extras": "^2.0.8",
"quasar-framework": "0.17.17",
"@types/vuelidate": "^0.7.0", "@types/vuelidate": "^0.7.0",
"acorn": "^6.0.0", "acorn": "^6.0.0",
"axios": "^0.18.0", "axios": "^0.18.0",
@@ -26,19 +24,23 @@
"bcrypt": "^3.0.2", "bcrypt": "^3.0.2",
"bcryptjs": "^2.4.3", "bcryptjs": "^2.4.3",
"dotenv": "^6.1.0", "dotenv": "^6.1.0",
"graphql": "^0.13.2",
"graphql-tag": "^2.8.0",
"element-ui": "^2.3.6", "element-ui": "^2.3.6",
"google-translate-api": "^2.3.0", "google-translate-api": "^2.3.0",
"graphql": "^0.13.2",
"graphql-tag": "^2.8.0",
"js-cookie": "^2.2.0", "js-cookie": "^2.2.0",
"localforage": "^1.7.3",
"normalize.css": "^8.0.0", "normalize.css": "^8.0.0",
"npm": "^6.4.1", "npm": "^6.4.1",
"nprogress": "^0.2.0", "nprogress": "^0.2.0",
"quasar-extras": "^2.0.8",
"quasar-framework": "0.17.17",
"register-service-worker": "^1.0.0", "register-service-worker": "^1.0.0",
"vee-validate": "^2.1.2", "vee-validate": "^2.1.2",
"vue": "^2.5.17", "vue": "^2.5.17",
"vue-class-component": "^6.3.2", "vue-class-component": "^6.3.2",
"vue-i18n": "^8.1.0", "vue-i18n": "^8.1.0",
"vue-idb": "^0.2.0",
"vue-property-decorator": "^7.2.0", "vue-property-decorator": "^7.2.0",
"vue-router": "^3.0.1", "vue-router": "^3.0.1",
"vue-svgicon": "^3.1.0", "vue-svgicon": "^3.1.0",
@@ -50,25 +52,24 @@
"vuex-typex": "^3.0.1" "vuex-typex": "^3.0.1"
}, },
"devDependencies": { "devDependencies": {
"@babel/runtime": "7.0.0-beta.54",
"@babel/core": "7.0.0-beta.50",
"@babel/code-frame": "7.0.0-beta.54", "@babel/code-frame": "7.0.0-beta.54",
"@babel/core": "7.0.0-beta.50",
"@babel/generator": "7.0.0-beta.54", "@babel/generator": "7.0.0-beta.54",
"@babel/helpers": "7.0.0-beta.54", "@babel/helpers": "7.0.0-beta.54",
"@babel/parser": "7.0.0-beta.54", "@babel/parser": "7.0.0-beta.54",
"@babel/preset-env": "7.0.0-beta.54",
"@babel/preset-react": "7.0.0",
"@babel/runtime": "7.0.0-beta.54",
"@babel/template": "7.0.0-beta.54", "@babel/template": "7.0.0-beta.54",
"@babel/traverse": "7.0.0-beta.54", "@babel/traverse": "7.0.0-beta.54",
"@babel/types": "7.0.0-beta.54", "@babel/types": "7.0.0-beta.54",
"@babel/preset-env": "7.0.0-beta.54",
"@vue/babel-preset-app": "3.1.1",
"@babel/preset-react": "7.0.0",
"babel-plugin-transform-imports": "1.5.1",
"@types/dotenv": "^4.0.3", "@types/dotenv": "^4.0.3",
"@types/jest": "^23.1.4", "@types/jest": "^23.1.4",
"@types/js-cookie": "^2.1.0", "@types/js-cookie": "^2.1.0",
"@types/node": "^10.12.2", "@types/node": "^10.12.2",
"@types/nprogress": "^0.0.29", "@types/nprogress": "^0.0.29",
"@types/webpack-env": "^1.13.6", "@types/webpack-env": "^1.13.6",
"@vue/babel-preset-app": "3.1.1",
"@vue/cli-plugin-babel": "^3.0.1", "@vue/cli-plugin-babel": "^3.0.1",
"@vue/cli-plugin-e2e-cypress": "^3.0.1", "@vue/cli-plugin-e2e-cypress": "^3.0.1",
"@vue/cli-plugin-pwa": "^3.0.1", "@vue/cli-plugin-pwa": "^3.0.1",
@@ -77,14 +78,15 @@
"@vue/cli-service": "^3.0.1", "@vue/cli-service": "^3.0.1",
"@vue/test-utils": "^1.0.0-beta.20", "@vue/test-utils": "^1.0.0-beta.20",
"babel-loader": "^8.0.0-beta.2", "babel-loader": "^8.0.0-beta.2",
"babel-plugin-transform-imports": "1.5.1",
"eslint": "^5.5.0", "eslint": "^5.5.0",
"html-webpack-plugin": "^2.8.1", "html-webpack-plugin": "^2.8.1",
"http-proxy-middleware": "^0.17.0", "http-proxy-middleware": "^0.17.0",
"jest": "^23.6.0", "jest": "^23.6.0",
"json-loader": "^0.5.4", "json-loader": "^0.5.4",
"node-sass": "^4.9.0", "node-sass": "^4.11.0",
"quasar-cli": "^0.17.20", "quasar-cli": "^0.17.20",
"sass-loader": "^7.0.1", "sass-loader": "^7.1.0",
"strip-ansi": "=3.0.1", "strip-ansi": "=3.0.1",
"ts-jest": "^23.0.0", "ts-jest": "^23.0.0",
"ts-loader": "^5.3.0", "ts-loader": "^5.3.0",
@@ -98,7 +100,8 @@
"webpack": "^4.0.0", "webpack": "^4.0.0",
"webpack-dev-middleware": "^3.2.0", "webpack-dev-middleware": "^3.2.0",
"webpack-hot-middleware": "^2.24.3", "webpack-hot-middleware": "^2.24.3",
"webpack-merge": "^4.0.0" "webpack-merge": "^4.0.0",
"workbox-cli": "^3.6.3"
}, },
"engines": { "engines": {
"node": ">= 8.9.0", "node": ">= 8.9.0",

View File

@@ -59,7 +59,7 @@ module.exports = function (ctx) {
store: 'src/store/index.ts' store: 'src/store/index.ts'
}, },
// app plugins (/src/plugins) // app plugins (/src/plugins)
plugins: ['i18n', 'axios', 'vee-validate', 'myconfig', 'local-storage', 'error-handler'], plugins: ['i18n', 'axios', 'vee-validate', 'myconfig', 'local-storage', 'error-handler', 'indexdb', 'vue-idb'],
css: [ css: [
'app.styl' 'app.styl'
], ],
@@ -145,6 +145,7 @@ module.exports = function (ctx) {
'QInnerLoading', 'QInnerLoading',
'QSpinnerGears', 'QSpinnerGears',
'QDatetime', 'QDatetime',
'QSlideTransition',
], ],
directives: [ directives: [
'Ripple', 'Ripple',

View File

@@ -18,9 +18,9 @@
<script lang="ts"> <script lang="ts">
import Vue from "vue" import Vue from "vue"
import { Component } from 'vue-property-decorator' import { Component } from 'vue-property-decorator'
import { UserStore } from '@store'
import { EventBus, RootState, storeBuilder, DebugMode } from '@store' import { EventBus, RootState, storeBuilder, DebugMode } from '@store'
import router from "./router" import router from "./router"
import { UserStore } from '@store'
import $ from "jquery" import $ from "jquery"
@@ -37,16 +37,21 @@
created() { created() {
//this.title = 'My Vue and CosmosDB Heroes App' //this.title = 'My Vue and CosmosDB Heroes App'
if (process.env.DEV){ if (process.env.DEV) {
console.info("SESSIONE IN SVILUPPO ! (DEV)") console.info("SESSIONE IN SVILUPPO ! (DEV)")
console.info(process.env) console.info(process.env)
} }
if (process.env.PROD){ if (process.env.PROD) {
console.info("SESSIONE IN PRODUZIONE!") console.info("SESSIONE IN PRODUZIONE!")
console.info(process.env) console.info(process.env)
} }
UserStore.mutations.autologin() UserStore.actions.autologin()
.then((loginEseguito) => {
if (loginEseguito) {
// this.$router.replace('/')
}
})
} }
} }
</script> </script>

View File

@@ -74,7 +74,7 @@
id="g4561-6-7-0"> id="g4561-6-7-0">
<g <g
transform="translate(16.233481,0)" transform="translate(16.233481,0)"
style="font-style:normal;font-weight:normal;font-size:50.25774765px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#263238;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" style="font-style:normal;font-weight:normal;font-size:50.25774765px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#2632AA;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
id="flowRoot4513-6-6-08"> id="flowRoot4513-6-6-08">
<path <path
d="m -402.73125,631.46823 q -0.6125,0.0438 -1.3125,0.0875 -0.65625,0 -1.4,0 l -9.31875,0 q -12.81875,0 -12.81875,-8.44375 l 0,-13.475 q 0,-8.26875 12.6,-8.26875 l 9.75625,0 q 12.6,0 12.6,8.26875 l 0,13.475 q 0,5.03125 -4.4625,7.04375 l 3.10625,2.14375 q 1.35625,0.83125 1.35625,1.70625 0,0.875 -0.7,1.3125 -0.65625,0.48125 -1.88125,0.48125 -0.30625,0 -0.7875,-0.13125 -0.4375,-0.0875 -1.05,-0.48125 l -5.6875,-3.71875 z m 5.38125,-21.74375 q 0,-4.76875 -7.9625,-4.76875 l -9.58125,0 q -7.9625,0 -7.9625,4.76875 l 0,13.3875 q 0,4.94375 8.3125,4.94375 l 8.88125,0 q 8.3125,0 8.3125,-4.94375 l 0,-13.3875 z" d="m -402.73125,631.46823 q -0.6125,0.0438 -1.3125,0.0875 -0.65625,0 -1.4,0 l -9.31875,0 q -12.81875,0 -12.81875,-8.44375 l 0,-13.475 q 0,-8.26875 12.6,-8.26875 l 9.75625,0 q 12.6,0 12.6,8.26875 l 0,13.475 q 0,5.03125 -4.4625,7.04375 l 3.10625,2.14375 q 1.35625,0.83125 1.35625,1.70625 0,0.875 -0.7,1.3125 -0.65625,0.48125 -1.88125,0.48125 -0.30625,0 -0.7875,-0.13125 -0.4375,-0.0875 -1.05,-0.48125 l -5.6875,-3.71875 z m 5.38125,-21.74375 q 0,-4.76875 -7.9625,-4.76875 l -9.58125,0 q -7.9625,0 -7.9625,4.76875 l 0,13.3875 q 0,4.94375 8.3125,4.94375 l 8.88125,0 q 8.3125,0 8.3125,-4.94375 l 0,-13.3875 z"

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 13 KiB

View File

@@ -1,5 +1,6 @@
<template> <template>
<div> <div>
<q-layout-header> <q-layout-header>
<q-toolbar <q-toolbar
color="primary" color="primary"
@@ -40,10 +41,9 @@
</q-layout-header> </q-layout-header>
<q-layout-drawer side="left" <q-layout-drawer side="left"
v-model="leftDrawerOpen" v-model="leftDrawerOpen"
:content-class="['bg-grey-3', 'q-pa-sm']" :content-class="['bg-grey-1', 'q-pa-sm']"
:content-style="{padding: '0px'}" :content-style="{padding: '0px'}"
> >
<drawer></drawer> <drawer></drawer>
@@ -59,6 +59,9 @@
import drawer from '../layouts/drawer/drawer.vue' import drawer from '../layouts/drawer/drawer.vue'
import messagePopover from '../layouts/toolbar/messagePopover/messagePopover.vue' import messagePopover from '../layouts/toolbar/messagePopover/messagePopover.vue'
import { GlobalStore } from '@modules'
import { rescodes } from '../store/Modules/rescodes'
@Component({ @Component({
components: { components: {
drawer, drawer,
@@ -76,7 +79,15 @@
{ label: 'Spanish', icon: 'fa-flag-es', value: 'es' }, { label: 'Spanish', icon: 'fa-flag-es', value: 'es' },
{ label: 'Italian', icon: 'fa-facebook', value: 'it' } { label: 'Italian', icon: 'fa-facebook', value: 'it' }
] ]
public leftDrawerOpen = false;
get leftDrawerOpen() {
return GlobalStore.state.leftDrawerOpen
}
set leftDrawerOpen(value) {
GlobalStore.state.leftDrawerOpen = value
localStorage.setItem(rescodes.localStorage.leftDrawerOpen, value.toString())
}
get lang() { get lang() {
return this.$q.i18n.lang return this.$q.i18n.lang
@@ -103,17 +114,23 @@
</script> </script>
<style> <style lang="scss">
.layout-padding { .layout-padding {
padding: 1em 4em; padding: 1em 4em;
} }
.item-content {
font-size: 0.8rem;
font-weight: 350;
}
@media screen and (max-width: 600px) { @media screen and (max-width: 600px) {
.layout-padding { .layout-padding {
padding: 1.5em .5em; padding: 1.5em .5em;
} }
} }
/*
@-webkit-keyframes moveFromLeftFade { @-webkit-keyframes moveFromLeftFade {
from { from {
opacity: 0.3; opacity: 0.3;
@@ -129,6 +146,21 @@
} }
} }
@-webkit-keyframes moveFromTopFade {
from {
opacity: 0.3;
-webkit-transform: translateY(0%);
}
}
@keyframes moveFromTopFade {
from {
opacity: 0.3;
-webkit-transform: translateY(0%);
transform: translateY(-50%);
}
}
@-webkit-keyframes moveToRight { @-webkit-keyframes moveToRight {
from { from {
} }
@@ -167,6 +199,25 @@
} }
} }
@-webkit-keyframes moveToBottom {
from {
}
to {
opacity: .5;
-webkit-transform: translateY(-100%);
}
}
@keyframes moveToBottom {
from {
}
to {
opacity: .5;
-webkit-transform: translateY(-100%);
transform: translateY(-100%);
}
}
@-webkit-keyframes moveFromRight { @-webkit-keyframes moveFromRight {
from { from {
opacity: .7; opacity: .7;
@@ -181,17 +232,18 @@
transform: translateX(100%); transform: translateX(100%);
} }
} }
*/
.drawer-closer .item-content { .drawer-closer .item-content {
margin-left: 50px !important; margin-left: 20px !important;
} }
.drawer-content .list-label { .drawer-content .list-label {
line-height: 45px; line-height: 25px;
} }
.drawer-content .item { .drawer-content .item {
height: 45px; height: 25px;
} }
.router-link-active .item-primary { .router-link-active .item-primary {
@@ -272,7 +324,7 @@
} }
.toolbar { .toolbar {
min-height: 40px; min-height: 30px;
} }
.right-itens a, .right-itens button { .right-itens a, .right-itens button {
@@ -291,4 +343,6 @@
.fa-flag-it:before { .fa-flag-it:before {
content: url('../statics/icons/flag_it.svg'); content: url('../statics/icons/flag_it.svg');
} }
</style> </style>

View File

@@ -0,0 +1,3 @@
.mycard {
visibility: hidden;
}

View File

@@ -0,0 +1,67 @@
import Vue from 'vue'
import { Component } from 'vue-property-decorator'
require('./category.scss')
@Component({})
export default class Category extends Vue {
filter: boolean = false
category: string = ''
categories_arr: any[] = null
created() {
this.loadCat()
}
async loadCat() {
await this.$db.categories.toArray().then(ris => this.categories_arr = ris)
this.updatetable()
}
async insertCategory() {
let myid = 0
const mycat = this.category
// Add to Indexdb
await this.$db.categories.add(
{ descr_it: mycat }
).then(ris => {
myid = ris
})
// created_at: new Date(),
// Add into the memory
this.categories_arr.push({ descr_it: mycat, id: myid })
this.updatetable()
}
updatetable() {
this.filterCategories()
}
async filterCategories() {
if (this.filter) {
// #Todo If need to filter the output database ...
this.$db.categories
.where('descr_it').notEqual('nonlovedi')
.toArray()
.then((response) => {
Promise.all(response.map(key => key))
.then((myarr) => {
this.categories_arr = [...myarr]
return this.categories_arr
})
})
} else {
return this.categories_arr
}
}
}

View File

@@ -0,0 +1,20 @@
<template>
<q-page>
<div class="panel">
<p class="caption">Category:</p>
<q-input v-model="category" inverted float-label="Inserisci la Categoria"
:after="[{icon: 'arrow_forward', content: true, handler () {}}]"
v-on:keyup.enter="insertCategory"/>
<ul>
Lista:
<li v-for="item in categories_arr" :key="item.id"> {{ item.descr_it }} </li>
</ul>
</div>
</q-page>
</template>
<script lang="ts" src="./category.ts">
</script>

View File

@@ -1 +1,4 @@
// app global css // app global css
/*------------------------------------------------------------------
[Table of contents]
# overwrite some style of stylus

View File

@@ -14,6 +14,7 @@ const messages = {
SignIn: 'Login', SignIn: 'Login',
vreg: 'Verifica Reg', vreg: 'Verifica Reg',
Test: 'Test', Test: 'Test',
Category: 'Categorie',
}, },
components: { components: {
authentication:{ authentication:{
@@ -98,6 +99,7 @@ const messages = {
SignIn: 'SignIn', SignIn: 'SignIn',
vreg: 'Verify Reg', vreg: 'Verify Reg',
Test: 'Test', Test: 'Test',
Category: 'Category',
}, },
components: { components: {
authentication:{ authentication:{

View File

@@ -8,7 +8,7 @@
<meta name="format-detection" content="telephone=no"> <meta name="format-detection" content="telephone=no">
<meta name="msapplication-tap-highlight" content="no"> <meta name="msapplication-tap-highlight" content="no">
<meta name="viewport" <meta name="viewport"
content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width<% if (htmlWebpackPlugin.options.ctx.mode.cordova) { %>, viewport-fit=cover<% } %>"> content="user-scalable=no, initial-scale=1, minimum-scale=1, width=device-width<% if (htmlWebpackPlugin.options.ctx.mode.cordova) { %>, viewport-fit=cover<% } %>">
<link rel="icon" href="statics/quasar-logo.png" type="image/x-icon"> <link rel="icon" href="statics/quasar-logo.png" type="image/x-icon">
<link rel="icon" type="image/png" sizes="32x32" href="statics/icons/favicon-32x32.png"> <link rel="icon" type="image/png" sizes="32x32" href="statics/icons/favicon-32x32.png">
@@ -16,6 +16,8 @@
<script defer src="statics/js/material.min.js"></script> <script defer src="statics/js/material.min.js"></script>
<script src="statics/js/promise.js"></script> <script src="statics/js/promise.js"></script>
<script src="statics/js/fetch.js"></script> <script src="statics/js/fetch.js"></script>
<script src="statics/js/idb.js"></script>
<link type="text/css" rel="stylesheet" href="statics/firebaseui.css" /> <link type="text/css" rel="stylesheet" href="statics/firebaseui.css" />
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet"> <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">

View File

@@ -1,25 +0,0 @@
<template lang="pug">
q-layout(view="lHh Lpr lFf")
q-layout-header
q-toolbar.row(color="primary", glossy)
q-toolbar-title.col
span Quasar TypeScript
div(slot="subtitle") Quasar v{{ $q.version }}
q-btn-dropdown(ref="selectLanguages", v-if="hasMultipleLanguages", icon="language", :label="currentLanguage.code", flat, dense)
q-list(link)
q-item(v-close-overlay, v-for="(language, index) in availableLanguages", :key="index", @click.native="setLanguage(language.code)")
q-item-main
q-item-tile(label) {{ language.name }}
q-item-side(v-if="language.code === currentLanguage.code", right, icon="done", color="primary")
q-page-container
router-view
</template>
<script lang="ts">
import { Vue, Component, Mixins } from 'vue-property-decorator'
import { Mixin as i18nMixin } from '@/plugins/i18n'
@Component
export default class MainLayout extends Mixins(i18nMixin) {}
</script>

View File

@@ -7,8 +7,8 @@
<span class="text-white"> {{ Username }} </span> <span class="text-white"> {{ Username }} </span>
<hr> <hr>
<span class="text-white" v-if="Verificato"> {{$t('reg.verificato')}} </span> <span class="text-white" v-if="Verificato"> {{$t('reg.verificato')}} </span>
<span class="text-white" v-else> {{$t('reg.non_verificato')}} </span> <span class="text-white background-red" v-else> {{$t('reg.non_verificato')}} </span>
<span class="text-white"> {{ Email }} </span> <!-- <span class="text-white"> {{ Email }} </span>-->
</div> </div>
<div id="user-actions"> <div id="user-actions">
<q-btn round color="primary" icon="person"></q-btn> <q-btn round color="primary" icon="person"></q-btn>
@@ -19,6 +19,10 @@
<menu-one :links="links"></menu-one> <menu-one :links="links"></menu-one>
<!--<footer>
<small>- Small</small>
</footer>-->
<div class="fixed-bottom text-center light text-italic"> <div class="fixed-bottom text-center light text-italic">
Powered by Perseo Powered by Perseo
</div> </div>
@@ -31,8 +35,8 @@
import Vue from 'vue' import Vue from 'vue'
import { Component, Watch, Prop } from 'vue-property-decorator' import { Component, Watch, Prop } from 'vue-property-decorator'
import {Store} from 'vuex' import { Store } from 'vuex'
import { UserStore } from '@modules'; import { UserStore } from '@modules'
import { GlobalStore } from '@modules' import { GlobalStore } from '@modules'
@@ -43,9 +47,9 @@
}) })
export default class Drawer extends Vue { export default class Drawer extends Vue {
public $q public $q
$t: any; $t: any
created () { created() {
console.log('Drawer created...') console.log('Drawer created...')
} }
@@ -54,34 +58,36 @@
links = { links = {
Dashboard: { Dashboard: {
routes: [ routes: [
{route: '/', faIcon: 'fa fa-home', materialIcon: 'home', name: 'pages.home'}, { route: '/', faIcon: 'fa fa-home', materialIcon: 'home', name: 'pages.home' },
{route: '/signup', faIcon: 'fa fa-signup', materialIcon: 'login', name: 'pages.SignUp'}, { route: '/category', faIcon: 'fa fa-list-alt', materialIcon: 'category', name: 'pages.Category' },
{route: '/signin', faIcon: 'fa fa-login', materialIcon: 'login', name: 'pages.SignIn'}, { route: '/signup', faIcon: 'fa fa-registered', materialIcon: 'home', name: 'pages.SignUp' },
{ route: '/signin', faIcon: 'fa fa-anchor', materialIcon: 'home', name: 'pages.SignIn' },
/* {route: '/vreg?idlink=aaa', faIcon: 'fa fa-login', materialIcon: 'login', name: 'pages.vreg'},*/ /* {route: '/vreg?idlink=aaa', faIcon: 'fa fa-login', materialIcon: 'login', name: 'pages.vreg'},*/
], ],
show: true show: true
}, },
Forms: { Forms: {
routes: [ routes: [
{route: '/prec', faIcon: 'fa fa-search', materialIcon: 'search', name: 'pages.Test'}, { route: '/prec', faIcon: 'fa fa-search', materialIcon: 'search', name: 'pages.Test' },
], ],
show: false show: false
}, },
} }
get MenuCollapse () { get MenuCollapse() {
return GlobalStore.state.menuCollapse return GlobalStore.state.menuCollapse
// return true // return true
} }
get Username () {
get Username() {
return UserStore.state.username return UserStore.state.username
} }
get Verificato () { get Verificato() {
return UserStore.state.verifiedEmail return UserStore.state.verifiedEmail
} }
get Email () { get Email() {
return UserStore.state.email return UserStore.state.email
} }
@@ -91,7 +97,12 @@
} }
} }
</script> </script>
<style scoped> <style scoped lang="scss">
.background-red {
background-color: red;
padding: 2px;
}
.fixed-bottom { .fixed-bottom {
margin-bottom: 1%; margin-bottom: 1%;
} }
@@ -127,4 +138,10 @@
#menu-collapse { #menu-collapse {
margin-top: 5%; margin-top: 5%;
} }
footer {
small {
color: red;
}
}
</style> </style>

View File

@@ -1,23 +1,24 @@
<template> <template>
<div class="list no-border platform-delimiter light-paragraph"> <div class="list no-border platform-delimiter light-paragraph">
<q-icon name="action"/> <q-icon name="action"/>
<template v-for="(parent, index) in links"> <template v-for="(parent, index) in links">
<q-list> <q-list>
<div class="list-label cursor-pointer" @click="parent.show = !parent.show"> <div class="list-label cursor-pointer" @click="parent.show = !parent.show">
{{replaceUnderlineToSpace(index)}} {{replaceUnderlineToSpace(index)}} <div class="menu_freccina"><i aria-hidden="true" class="v-icon material-icons theme--light">keyboard_arrow_down</i></div>
</div> </div>
<template v-for="child in parent.routes"> <template v-for="child in parent.routes">
<transition name="menu"> <q-slide-transition :duration=200>
<div v-show="parent.show"> <div v-show="parent.show">
<q-item link :to="child.route" exact class="item item-link drawer-closer cursor-pointer"> <q-item link :to="child.route" exact
<i :class="child.faIcon" class="item-primary"></i> class="item item-link drawer-closer cursor-pointer">
<div class="item-content">{{$t(child.name)}}</div> <i :class="child.faIcon" class="item-primary"></i>
</q-item> <div class="item-content">{{$t(child.name)}}</div>
</q-item>
</div> </div>
</transition> </q-slide-transition>
</template> </template>
</q-list> </q-list>
<hr>
</template> </template>
</div> </div>
</template> </template>
@@ -60,6 +61,11 @@
</script> </script>
<style scoped> <style scoped>
.menu-hr{
border-color: #dedede;
height: 0.5px;
}
.router-link-active { .router-link-active {
color: #027be3; color: #027be3;
background-color: #dadada !important; background-color: #dadada !important;
@@ -68,19 +74,21 @@
.list-label:first-child { .list-label:first-child {
line-height: 20px; line-height: 20px;
padding:5px; padding: 5px;
margin:1px; margin: 1px;
} }
/*
.menu-enter-active, .scale-enter { .menu-enter-active, .scale-enter {
-webkit-animation: moveFromLeftFade .2s ease both; -webkit-animation: moveFromTopFade .5s ease both;
animation: moveFromLeftFade .2s ease both; animation: moveFromTopFade .5s ease both;
} }
.menu-leave-to, .scale-leave-active { .menu-leave-to, .scale-leave-active {
-webkit-animation: moveToLeft .2s ease both; -webkit-animation: moveToBottom .5s ease both;
animation: moveToLeft .2s ease both; animation: moveToBottom .5s ease both;
} }
*/
.router-link-active { .router-link-active {
color: #027be3; color: #027be3;
@@ -91,4 +99,14 @@
.router-link-active .item-primary { .router-link-active .item-primary {
color: #027be3; color: #027be3;
} }
.menu_freccina {
position: absolute;
right: 10px;
display: inline-block;
padding: 0 0px 0px 0px;
-webkit-transform: rotate(-180deg);
transform: rotate(-180deg);
}
</style> </style>

View File

@@ -8,6 +8,7 @@ export interface IGlobalState {
layoutNeeded: boolean layoutNeeded: boolean
mobileMode: boolean mobileMode: boolean
menuCollapse: boolean menuCollapse: boolean
leftDrawerOpen: boolean
posts: IPost[] posts: IPost[]
} }

View File

@@ -1,10 +0,0 @@
<template>
<q-page>Prova pagina</q-page>
</template>
<script>
export default {
// name: 'PageName',
}
</script>

5
src/plugins/indexdb.js Normal file
View File

@@ -0,0 +1,5 @@
import VueIdb from 'vue-idb'
export default ({ Vue }) => {
Vue.use(VueIdb)
}

28
src/plugins/vue-idb.js Normal file
View File

@@ -0,0 +1,28 @@
import Vue from 'vue'
import VueIdb from 'vue-idb'
export default ({ Vue }) => {
Vue.use(VueIdb)
// Insert here the database for IndexDB
new VueIdb({
version: 1,
database: 'test',
schemas: [
{ categories: '++id, sub_categ_id, descr_it' }
]
})
}
/*
export default new VueIdb({
version: 1,
database: 'test',
schemas: [
{ categories: '++id, sub_categ_id, descr_it' }
]
})
*/

View File

@@ -28,6 +28,11 @@ export const RouteConfig: VueRouteConfig[] = [
path: '/vreg', path: '/vreg',
component: () => import('@/views/login/vreg/vreg.vue'), component: () => import('@/views/login/vreg/vreg.vue'),
meta: { name: 'Verify Reg' } meta: { name: 'Verify Reg' }
},
{
path: '/category',
component: () => import('@/components/categories/category/category.vue'),
meta: { name: 'Categories' }
} }
/* /*
{ {

View File

@@ -8,6 +8,7 @@ const state: IGlobalState = {
layoutNeeded: true, layoutNeeded: true,
mobileMode: false, mobileMode: false,
menuCollapse: true, menuCollapse: true,
leftDrawerOpen: true,
posts: [] posts: []
} }
@@ -31,8 +32,13 @@ namespace Mutations {
state.conta = num state.conta = num
} }
function setleftDrawerOpen(state: IGlobalState, bool: boolean) {
state.leftDrawerOpen = bool
}
export const mutations = { export const mutations = {
setConta: b.commit(setConta) setConta: b.commit(setConta),
setleftDrawerOpen: b.commit(setleftDrawerOpen)
} }
} }

View File

@@ -6,7 +6,7 @@ import router from '@router'
import { serv_constants } from '../Modules/serv_constants' import { serv_constants } from '../Modules/serv_constants'
import { rescodes } from '../Modules/rescodes' import { rescodes } from '../Modules/rescodes'
import { UserStore } from "@store" import { GlobalStore, UserStore } from '@store'
const bcrypt = require('bcryptjs') const bcrypt = require('bcryptjs')
@@ -109,37 +109,6 @@ namespace Mutations {
state.verifiedEmail = false state.verifiedEmail = false
} }
function autologin (state: IUserState) {
// INIT
UserStore.mutations.setlang(process.env.LANG_DEFAULT)
// ++Todo: Estrai la Lang dal Localstorage
const lang = localStorage.getItem('lang')
if (lang) {
UserStore.mutations.setlang(lang)
}
const token = localStorage.getItem('token')
if (!token) {
return
}
const expirationDateStr = localStorage.getItem('expirationDate')
let expirationDate = new Date(String(expirationDateStr))
const now = new Date()
if (now >= expirationDate) {
return
}
const userId = Number(localStorage.getItem('userId'))
const username = String(localStorage.getItem('username'))
const verifiedEmail = localStorage.getItem('verificato') === '1'
mutations.authUser({
username: username,
userId: userId,
idToken: token,
verifiedEmail: verifiedEmail
})
}
export const mutations = { export const mutations = {
authUser: b.commit(authUser), authUser: b.commit(authUser),
setpassword: b.commit(setpassword), setpassword: b.commit(setpassword),
@@ -147,8 +116,7 @@ namespace Mutations {
setlang: b.commit(setlang), setlang: b.commit(setlang),
UpdatePwd: b.commit(UpdatePwd), UpdatePwd: b.commit(UpdatePwd),
setServerCode: b.commit(setServerCode), setServerCode: b.commit(setServerCode),
clearAuthData: b.commit(clearAuthData), clearAuthData: b.commit(clearAuthData)
autologin: b.commit(autologin)
} }
} }
@@ -200,7 +168,7 @@ namespace Actions {
}) })
.then((body) => { .then((body) => {
Mutations.mutations.UpdatePwd({ idToken: x_auth_token }) Mutations.mutations.UpdatePwd({ idToken: x_auth_token })
localStorage.setItem('token', x_auth_token) localStorage.setItem(rescodes.localStorage.token, x_auth_token)
return { code: body.code, msg: body.msg } return { code: body.code, msg: body.msg }
}).catch((err) => { }).catch((err) => {
@@ -278,7 +246,10 @@ namespace Actions {
// console.log("RITORNO 2 "); // console.log("RITORNO 2 ");
// mutations.setServerCode(myres); // mutations.setServerCode(myres);
if (body.code === serv_constants.RIS_CODE_EMAIL_VERIFIED) { if (body.code === serv_constants.RIS_CODE_EMAIL_VERIFIED) {
localStorage.setItem('verificato', '1') console.log('VERIFICATO !!')
localStorage.setItem(rescodes.localStorage.verifiedEmail, '1')
} else {
console.log('Risultato di vreg: ', body.code)
} }
return { code: body.code, msg: body.msg } return { code: body.code, msg: body.msg }
}).catch((err) => { }).catch((err) => {
@@ -353,12 +324,12 @@ namespace Actions {
const now = new Date() const now = new Date()
// const expirationDate = new Date(now.getTime() + myres.data.expiresIn * 1000); // const expirationDate = new Date(now.getTime() + myres.data.expiresIn * 1000);
const expirationDate = new Date(now.getTime() + 1000) const expirationDate = new Date(now.getTime() * 1000)
localStorage.setItem('username', username) localStorage.setItem(rescodes.localStorage.username, username)
localStorage.setItem('token', x_auth_token) localStorage.setItem(rescodes.localStorage.token, x_auth_token)
localStorage.setItem('userId', iduser) localStorage.setItem(rescodes.localStorage.userId, iduser)
localStorage.setItem('expirationDate', expirationDate.toString()) localStorage.setItem(rescodes.localStorage.expirationDate, expirationDate.toString())
localStorage.setItem('verificato', '0') localStorage.setItem(rescodes.localStorage.verifiedEmail, '0')
// dispatch('storeUser', authData); // dispatch('storeUser', authData);
// dispatch('setLogoutTimer', myres.data.expiresIn); // dispatch('setLogoutTimer', myres.data.expiresIn);
@@ -438,7 +409,7 @@ namespace Actions {
if (myres.status === 200) { if (myres.status === 200) {
let iduser = body._id let iduser = body._id
let username = authData.username let username = authData.username
let verifiedEmail = body.verifiedEmail === 'true' || body.verifiedEmail === true let verifiedEmail = body.verified_email === 'true' || body.verified_email === true
if (process.env.DEV) { if (process.env.DEV) {
console.log('USERNAME = ' + username) console.log('USERNAME = ' + username)
console.log('IDUSER= ' + iduser) console.log('IDUSER= ' + iduser)
@@ -452,13 +423,13 @@ namespace Actions {
const now = new Date() const now = new Date()
// const expirationDate = new Date(now.getTime() + myres.data.expiresIn * 1000); // const expirationDate = new Date(now.getTime() + myres.data.expiresIn * 1000);
const expirationDate = new Date(now.getTime() + 1000) const expirationDate = new Date(now.getTime() * 1000)
localStorage.setItem('username', username) localStorage.setItem(rescodes.localStorage.username, username)
localStorage.setItem('token', x_auth_token) localStorage.setItem(rescodes.localStorage.token, x_auth_token)
localStorage.setItem('userId', iduser) localStorage.setItem(rescodes.localStorage.userId, iduser)
localStorage.setItem('expirationDate', expirationDate.toString()) localStorage.setItem(rescodes.localStorage.expirationDate, expirationDate.toString())
localStorage.setItem('isLoggedin', String(true)) localStorage.setItem(rescodes.localStorage.isLogged, String(true))
localStorage.setItem('verificato', String(verifiedEmail)) localStorage.setItem(rescodes.localStorage.verifiedEmail, Number(verifiedEmail).toString())
// dispatch('storeUser', authData); // dispatch('storeUser', authData);
// dispatch('setLogoutTimer', myres.data.expiresIn); // dispatch('setLogoutTimer', myres.data.expiresIn);
@@ -507,16 +478,60 @@ namespace Actions {
Mutations.mutations.clearAuthData() Mutations.mutations.clearAuthData()
}) })
localStorage.removeItem('expirationDate') localStorage.removeItem(rescodes.localStorage.expirationDate)
localStorage.removeItem('token') localStorage.removeItem(rescodes.localStorage.token)
localStorage.removeItem('userId') localStorage.removeItem(rescodes.localStorage.userId)
localStorage.removeItem('username') localStorage.removeItem(rescodes.localStorage.username)
localStorage.removeItem('isLoggedin') localStorage.removeItem(rescodes.localStorage.isLogged)
localStorage.removeItem('verifiedEmail') // localStorage.removeItem(rescodes.localStorage.leftDrawerOpen)
localStorage.removeItem(rescodes.localStorage.verifiedEmail)
router.push('/signin') router.push('/signin')
} }
function setGlobal() {
GlobalStore.mutations.setleftDrawerOpen(localStorage.getItem(rescodes.localStorage.leftDrawerOpen) === 'true')
}
async function autologin (context) {
try {
// INIT
UserStore.mutations.setlang(process.env.LANG_DEFAULT)
// ++Todo: Estrai la Lang dal Localstorage
const lang = localStorage.getItem('lang')
if (lang) {
UserStore.mutations.setlang(lang)
}
const token = localStorage.getItem(rescodes.localStorage.token)
if (!token) {
return false
}
const expirationDateStr = localStorage.getItem(rescodes.localStorage.expirationDate)
let expirationDate = new Date(String(expirationDateStr))
const now = new Date()
if (now >= expirationDate) {
return false
}
const userId = Number(localStorage.getItem(rescodes.localStorage.userId))
const username = String(localStorage.getItem(rescodes.localStorage.username))
const verifiedEmail = localStorage.getItem(rescodes.localStorage.verifiedEmail) === '1'
setGlobal()
Mutations.mutations.authUser({
username: username,
userId: userId,
idToken: token,
verifiedEmail: verifiedEmail
})
return true
} catch (e) {
console.error('ERR autologin ', e.message)
return false
}
}
export const actions = { export const actions = {
resetpwd: b.dispatch(resetpwd), resetpwd: b.dispatch(resetpwd),
@@ -524,7 +539,8 @@ namespace Actions {
vreg: b.dispatch(vreg), vreg: b.dispatch(vreg),
signup: b.dispatch(signup), signup: b.dispatch(signup),
signin: b.dispatch(signin), signin: b.dispatch(signin),
logout: b.dispatch(logout) logout: b.dispatch(logout),
autologin: b.dispatch(autologin)
} }
} }

View File

@@ -3,5 +3,15 @@ export const rescodes = {
OK: 20, OK: 20,
ERR_GENERICO: -1, ERR_GENERICO: -1,
DUPLICATE_EMAIL_ID: 11000, DUPLICATE_EMAIL_ID: 11000,
DUPLICATE_USERNAME_ID: 11100 DUPLICATE_USERNAME_ID: 11100,
localStorage: {
verifiedEmail: 'vf',
isLogged: 'ilog',
expirationDate: 'expdate',
leftDrawerOpen: 'ldo',
userId: 'uid',
token: 'tk',
username: 'uname'
}
} }

7
src/typings/libs/vue-idb.d.ts vendored Normal file
View File

@@ -0,0 +1,7 @@
import { VueIdb } from 'vue-idb'
declare module 'vue/types/vue' {
interface Vue {
$db: VueIdb
}
}

View File

@@ -85,7 +85,7 @@
} }
} }
</script> </script>
<style> <style scoped>
#map { #map {
height: 180px; height: 180px;
} }

View File

@@ -30,6 +30,7 @@
> >
<q-input <q-input
v-model="signin.password" v-model="signin.password"
type="password"
:before="[{icon: 'vpn_key', handler () {}}]" :before="[{icon: 'vpn_key', handler () {}}]"
@blur="$v.signin.password.$touch" @blur="$v.signin.password.$touch"
:error="$v.signin.password.$error" :error="$v.signin.password.$error"

View File

@@ -72,7 +72,8 @@
riscode: 0, riscode: 0,
emailsent: false, emailsent: false,
form: { form: {
email: '', password: '',
repeatPassword: '',
tokenforgot: 0, tokenforgot: 0,
}, },
} }
@@ -87,8 +88,12 @@
}, },
validations: { validations: {
form: { form: {
email: { password: {
required, email, required,
},
repeatPassword: {
required,
sameAsPassword: sameAs('password')
}, },
} }
}, },

View File

@@ -51,7 +51,7 @@ export default class Vreg extends Vue {
if (this.verificatook) { if (this.verificatook) {
setTimeout(() => { setTimeout(() => {
this.$router.replace('/') this.$router.replace('/signin')
}, 3000) }, 3000)
} }

View File

@@ -35,6 +35,7 @@
"@modules": ["./store/Modules/index.ts"] "@modules": ["./store/Modules/index.ts"]
}, },
"sourceMap": true, "sourceMap": true,
// "usePostCSS": true,
"allowJs": true, "allowJs": true,
"skipLibCheck": true, "skipLibCheck": true,
"types": [ "types": [