3 |
4 | {{ item.title }}
5 |
6 |
7 |
8 | {{ createdOnFormatted }}
9 |
10 |
11 |
12 |
13 |
14 |
44 |
45 |
46 |
102 |
--------------------------------------------------------------------------------
/src/user/User.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | {{ user.displayName }}
7 |
8 | {{ user.numItems }} Created
9 |
10 |
11 |
12 |
13 | Created Items
14 |
15 | Hold tight...
16 |
17 |
18 |
19 |
20 | No items created! Strange!
21 |
22 |
23 |
24 |
25 |
26 |
85 |
86 |
92 |
--------------------------------------------------------------------------------
/src/Auth.js:
--------------------------------------------------------------------------------
1 | import deferred from './deferred.js';
2 |
3 | export class Auth {
4 |
5 | constructor() {
6 | var self = this;
7 | this.isLoggedIn = false;
8 | this.user = null;
9 | this.loginDeferred = deferred();
10 | this.userDataDeferred = deferred();
11 |
12 | // Initialize Firebase
13 | // Change parameters according to your firebase config
14 | var config = {
15 | apiKey: "AIzaSyC1DkebpFDcclAFDpt2zbu_mcFTi9tRnA8",
16 | authDomain: "cool-project-9a463.firebaseapp.com",
17 | databaseURL: "https://cool-project-9a463.firebaseio.com",
18 | storageBucket: "",
19 | };
20 | firebase.initializeApp(config);
21 |
22 | firebase.auth().onAuthStateChanged(function(user) {
23 | if (user) {
24 | self.user = firebase.auth().currentUser;
25 | self.isLoggedIn = true;
26 | self.loginDeferred.resolve();
27 |
28 | // Listen for future changes on user obj
29 | firebase.database().ref('users/' + self.user.uid).on('value', self.onUserDataChange.bind(self));
30 | } else {
31 | self.user = null;
32 | self.isLoggedIn = false;
33 | }
34 | });
35 | }
36 |
37 | onUserDataChange(snapshot) {
38 | Object.assign(this.user, snapshot.val());
39 | this.userDataDeferred.resolve(this.user);
40 | }
41 |
42 | onLogin() {
43 | return this.loginDeferred.promise;
44 | }
45 |
46 | getUserData() {
47 | return this.userDataDeferred.promise;
48 | }
49 |
50 | login(provider) {
51 | var self = this;
52 | var provider;
53 | if (provider === 'fb') {
54 | provider = new firebase.auth.FacebookAuthProvider();
55 | } else {
56 | provider = new firebase.auth.TwitterAuthProvider();
57 | }
58 |
59 | return firebase.auth().signInWithPopup(provider).then(function(result) {
60 | // Save this user in the store
61 | firebase.database().ref('users/' + result.user.uid).update({
62 | displayName: result.user.displayName,
63 | email: result.user.email,
64 | photoURL: result.user.providerData[0].photoURL,
65 | signedUpOn: Date.now()
66 | });
67 | }).catch(function(error) {
68 | // Handle Errors here.
69 | var errorCode = error.code;
70 | var errorMessage = error.message;
71 | // The email of the user's account used.
72 | var email = error.email;
73 | // The firebase.auth.AuthCredential type that was used.
74 | var credential = error.credential;
75 | console.log(error)
76 | });
77 | }
78 |
79 | logout() {
80 | firebase.auth().signOut().then(function () {
81 | location.reload();
82 | });
83 | }
84 | }
85 |
86 | // Export a singleton instance
87 | export let auth = new Auth();
--------------------------------------------------------------------------------
/src/Modal.vue:
--------------------------------------------------------------------------------
1 |
2 |
13 |
14 |
15 |
57 |
58 |
59 |
107 |
--------------------------------------------------------------------------------
/src/home/Home.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
VuejsFire Hackathon Starter
5 |
The most beautiful and quick hackathon starter kit
6 |
7 |
15 |
16 |
17 |
18 |
19 |
50 |
51 |
81 |
--------------------------------------------------------------------------------
/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
VueFire Hackathon Starter
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
63 |
64 |
65 |
66 |
67 |
68 |
75 |
76 |
89 |
90 |
95 |
96 |
97 |
--------------------------------------------------------------------------------
/src/item/Item.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Loading Item...
7 |
8 |
9 |
10 |
14 |
41 |
42 |
{{ item.notes }}
43 |
44 |
45 |
46 |
47 |
48 |
49 |
90 |
91 |
92 |
100 |
--------------------------------------------------------------------------------
/src/edit/Edit.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
8 |
18 |
19 |
20 |
26 |
27 |
28 |
29 | Some help regarding Creation
30 | Lorem Ipsum Donal Trump :)
31 |
32 |
33 |
34 |
35 |
36 |
129 |
130 |
170 |
--------------------------------------------------------------------------------
/assets/vendor.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";
2 |
3 | /*! Hint.css (base version) - v2.3.1 - 2016-06-05
4 | * http://kushagragour.in/lab/hint/
5 | * Copyright (c) 2016 Kushagra Gour; Licensed */
6 |
7 | [class*=hint--]{position:relative;display:inline-block}[class*=hint--]:after,[class*=hint--]:before{position:absolute;-webkit-transform:translate3d(0,0,0);-moz-transform:translate3d(0,0,0);transform:translate3d(0,0,0);visibility:hidden;opacity:0;z-index:1000000;pointer-events:none;-webkit-transition:.3s ease;-moz-transition:.3s ease;transition:.3s ease;-webkit-transition-delay:0s;-moz-transition-delay:0s;transition-delay:0s}[class*=hint--]:hover:after,[class*=hint--]:hover:before{visibility:visible;opacity:1;-webkit-transition-delay:.1s;-moz-transition-delay:.1s;transition-delay:.1s}[class*=hint--]:before{content:'';position:absolute;background:0 0;border:6px solid transparent;z-index:1000001}[class*=hint--]:after{background:#383838;color:#fff;padding:8px 10px;font-size:12px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;line-height:12px;white-space:nowrap}[class*=hint--][aria-label]:after{content:attr(aria-label)}[class*=hint--][data-hint]:after{content:attr(data-hint)}[aria-label='']:after,[aria-label='']:before,[data-hint='']:after,[data-hint='']:before{display:none!important}.hint--top-left:before,.hint--top-right:before,.hint--top:before{border-top-color:#383838}.hint--bottom-left:before,.hint--bottom-right:before,.hint--bottom:before{border-bottom-color:#383838}.hint--top:after,.hint--top:before{bottom:100%;left:50%}.hint--top:before{margin-bottom:-11px;left:calc(50% - 6px)}.hint--top:after{-webkit-transform:translateX(-50%);-moz-transform:translateX(-50%);transform:translateX(-50%)}.hint--top:hover:before{-webkit-transform:translateY(-8px);-moz-transform:translateY(-8px);transform:translateY(-8px)}.hint--top:hover:after{-webkit-transform:translateX(-50%) translateY(-8px);-moz-transform:translateX(-50%) translateY(-8px);transform:translateX(-50%) translateY(-8px)}.hint--bottom:after,.hint--bottom:before{top:100%;left:50%}.hint--bottom:before{margin-top:-11px;left:calc(50% - 6px)}.hint--bottom:after{-webkit-transform:translateX(-50%);-moz-transform:translateX(-50%);transform:translateX(-50%)}.hint--bottom:hover:before{-webkit-transform:translateY(8px);-moz-transform:translateY(8px);transform:translateY(8px)}.hint--bottom:hover:after{-webkit-transform:translateX(-50%) translateY(8px);-moz-transform:translateX(-50%) translateY(8px);transform:translateX(-50%) translateY(8px)}.hint--right:before{border-right-color:#383838;margin-left:-11px;margin-bottom:-6px}.hint--right:after{margin-bottom:-14px}.hint--right:after,.hint--right:before{left:100%;bottom:50%}.hint--right:hover:after,.hint--right:hover:before{-webkit-transform:translateX(8px);-moz-transform:translateX(8px);transform:translateX(8px)}.hint--left:before{border-left-color:#383838;margin-right:-11px;margin-bottom:-6px}.hint--left:after{margin-bottom:-14px}.hint--left:after,.hint--left:before{right:100%;bottom:50%}.hint--left:hover:after,.hint--left:hover:before{-webkit-transform:translateX(-8px);-moz-transform:translateX(-8px);transform:translateX(-8px)}.hint--top-left:after,.hint--top-left:before{bottom:100%;left:50%}.hint--top-left:before{margin-bottom:-11px;left:calc(50% - 6px)}.hint--top-left:after{-webkit-transform:translateX(-100%);-moz-transform:translateX(-100%);transform:translateX(-100%);margin-left:12px}.hint--top-left:hover:before{-webkit-transform:translateY(-8px);-moz-transform:translateY(-8px);transform:translateY(-8px)}.hint--top-left:hover:after{-webkit-transform:translateX(-100%) translateY(-8px);-moz-transform:translateX(-100%) translateY(-8px);transform:translateX(-100%) translateY(-8px)}.hint--top-right:after,.hint--top-right:before{bottom:100%;left:50%}.hint--top-right:before{margin-bottom:-11px;left:calc(50% - 6px)}.hint--top-right:after{-webkit-transform:translateX(0);-moz-transform:translateX(0);transform:translateX(0);margin-left:-12px}.hint--top-right:hover:after,.hint--top-right:hover:before{-webkit-transform:translateY(-8px);-moz-transform:translateY(-8px);transform:translateY(-8px)}.hint--bottom-left:after,.hint--bottom-left:before{top:100%;left:50%}.hint--bottom-left:before{margin-top:-11px;left:calc(50% - 6px)}.hint--bottom-left:after{-webkit-transform:translateX(-100%);-moz-transform:translateX(-100%);transform:translateX(-100%);margin-left:12px}.hint--bottom-left:hover:before{-webkit-transform:translateY(8px);-moz-transform:translateY(8px);transform:translateY(8px)}.hint--bottom-left:hover:after{-webkit-transform:translateX(-100%) translateY(8px);-moz-transform:translateX(-100%) translateY(8px);transform:translateX(-100%) translateY(8px)}.hint--bottom-right:after,.hint--bottom-right:before{top:100%;left:50%}.hint--bottom-right:before{margin-top:-11px;left:calc(50% - 6px)}.hint--bottom-right:after{-webkit-transform:translateX(0);-moz-transform:translateX(0);transform:translateX(0);margin-left:-12px}.hint--bottom-right:hover:after,.hint--bottom-right:hover:before{-webkit-transform:translateY(8px);-moz-transform:translateY(8px);transform:translateY(8px)}.hint--large:after,.hint--medium:after,.hint--small:after{white-space:normal;line-height:1.4em}.hint--small:after{width:80px}.hint--medium:after{width:150px}.hint--large:after{width:300px}.hint--always:after,.hint--always:before{opacity:1;visibility:visible}.hint--always.hint--top:before{-webkit-transform:translateY(-8px);-moz-transform:translateY(-8px);transform:translateY(-8px)}.hint--always.hint--top:after{-webkit-transform:translateX(-50%) translateY(-8px);-moz-transform:translateX(-50%) translateY(-8px);transform:translateX(-50%) translateY(-8px)}.hint--always.hint--top-left:before{-webkit-transform:translateY(-8px);-moz-transform:translateY(-8px);transform:translateY(-8px)}.hint--always.hint--top-left:after{-webkit-transform:translateX(-100%) translateY(-8px);-moz-transform:translateX(-100%) translateY(-8px);transform:translateX(-100%) translateY(-8px)}.hint--always.hint--top-right:after,.hint--always.hint--top-right:before{-webkit-transform:translateY(-8px);-moz-transform:translateY(-8px);transform:translateY(-8px)}.hint--always.hint--bottom:before{-webkit-transform:translateY(8px);-moz-transform:translateY(8px);transform:translateY(8px)}.hint--always.hint--bottom:after{-webkit-transform:translateX(-50%) translateY(8px);-moz-transform:translateX(-50%) translateY(8px);transform:translateX(-50%) translateY(8px)}.hint--always.hint--bottom-left:before{-webkit-transform:translateY(8px);-moz-transform:translateY(8px);transform:translateY(8px)}.hint--always.hint--bottom-left:after{-webkit-transform:translateX(-100%) translateY(8px);-moz-transform:translateX(-100%) translateY(8px);transform:translateX(-100%) translateY(8px)}.hint--always.hint--bottom-right:after,.hint--always.hint--bottom-right:before{-webkit-transform:translateY(8px);-moz-transform:translateY(8px);transform:translateY(8px)}.hint--always.hint--left:after,.hint--always.hint--left:before{-webkit-transform:translateX(-8px);-moz-transform:translateX(-8px);transform:translateX(-8px)}.hint--always.hint--right:after,.hint--always.hint--right:before{-webkit-transform:translateX(8px);-moz-transform:translateX(8px);transform:translateX(8px)}
--------------------------------------------------------------------------------
/src/App.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
41 |
42 |
43 |
44 |
58 |
59 |
60 |
61 |
72 |
73 |
74 |
75 |
123 |
124 |
422 |
--------------------------------------------------------------------------------