├── public └── favicon.ico ├── .vscode └── extensions.json ├── src ├── directives │ └── vAutofocus.js ├── assets │ ├── logo.svg │ ├── main.css │ └── base.css ├── main.js ├── composables │ └── useCharactersLimit.js ├── App.vue ├── js │ └── firebase.js ├── router │ └── index.js ├── Views │ ├── StatsView.vue │ ├── EditNoteView.vue │ ├── NotesView.vue │ └── AuthView.vue ├── components │ ├── Notes │ │ ├── AddEditNote.vue │ │ ├── DeleteNoteModal.vue │ │ └── SingleNote.vue │ └── Layout │ │ └── NavBar.vue └── stores │ └── NotesStore.js ├── vite.config.js ├── .gitignore ├── index.html ├── package.json └── README.md /public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leelanarasimha/noteslist-vue/HEAD/public/favicon.ico -------------------------------------------------------------------------------- /.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "recommendations": ["Vue.volar", "Vue.vscode-typescript-vue-plugin"] 3 | } 4 | -------------------------------------------------------------------------------- /src/directives/vAutofocus.js: -------------------------------------------------------------------------------- 1 | export const vAutofocus = { 2 | mounted(el) { 3 | el.focus(); 4 | } 5 | }; 6 | -------------------------------------------------------------------------------- /src/assets/logo.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /src/main.js: -------------------------------------------------------------------------------- 1 | import { createApp } from 'vue'; 2 | import App from './App.vue'; 3 | import router from './router/index'; 4 | import { createPinia } from 'pinia'; 5 | 6 | const app = createApp(App); 7 | 8 | const pinia = createPinia(); 9 | app.use(router); 10 | app.use(pinia); 11 | app.mount('#app'); 12 | -------------------------------------------------------------------------------- /src/composables/useCharactersLimit.js: -------------------------------------------------------------------------------- 1 | import { watch } from 'vue'; 2 | 3 | export function useCharactersLimit(value, limit = 100) { 4 | watch(value, (newValue, oldValue) => { 5 | if (newValue.length === limit) { 6 | alert(`Sorry!! more than ${limit} characters are not allowed`); 7 | } 8 | }); 9 | } 10 | -------------------------------------------------------------------------------- /vite.config.js: -------------------------------------------------------------------------------- 1 | import { fileURLToPath, URL } from 'node:url' 2 | 3 | import { defineConfig } from 'vite' 4 | import vue from '@vitejs/plugin-vue' 5 | 6 | // https://vitejs.dev/config/ 7 | export default defineConfig({ 8 | plugins: [vue()], 9 | resolve: { 10 | alias: { 11 | '@': fileURLToPath(new URL('./src', import.meta.url)) 12 | } 13 | } 14 | }) 15 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | pnpm-debug.log* 8 | lerna-debug.log* 9 | 10 | node_modules 11 | .DS_Store 12 | dist 13 | dist-ssr 14 | coverage 15 | *.local 16 | 17 | /cypress/videos/ 18 | /cypress/screenshots/ 19 | 20 | # Editor directories and files 21 | .vscode/* 22 | !.vscode/extensions.json 23 | .idea 24 | *.suo 25 | *.ntvs* 26 | *.njsproj 27 | *.sln 28 | *.sw? 29 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |
4 | 5 | 6 | 7 || Stat | 7 |Value | 8 |
|---|---|
| Total Notes Count | 14 |{{ notesCount }} | 15 |
| Total Characters Count | 18 |{{ totalCharactersCount }} | 19 |
Delete Note?
7 | 8 |