├── jsconfig.json ├── src ├── utils.js ├── main.js ├── router │ └── index.js ├── components │ ├── IconButton.vue │ ├── NoteCard.vue │ ├── Confirm.vue │ ├── NoteTitle.vue │ └── TodoItem.vue ├── services │ ├── LocalStorageService.js │ └── NoteService.js ├── views │ ├── Home.vue │ └── Note.vue └── App.vue ├── public ├── favicon.ico ├── favicon.png └── index.html ├── babel.config.js ├── .gitignore ├── package.json ├── techtask-ru.md ├── README.md └── LICENSE /jsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "vueCompilerOptions": { 3 | "target": 2.7 4 | } 5 | } -------------------------------------------------------------------------------- /src/utils.js: -------------------------------------------------------------------------------- 1 | export const random = () => Math.random().toString(36).substr(2, 5) 2 | -------------------------------------------------------------------------------- /public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harmyderoman/vuejs-todo-app/HEAD/public/favicon.ico -------------------------------------------------------------------------------- /public/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harmyderoman/vuejs-todo-app/HEAD/public/favicon.png -------------------------------------------------------------------------------- /babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: [ 3 | '@vue/cli-plugin-babel/preset' 4 | ] 5 | } 6 | -------------------------------------------------------------------------------- /src/main.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import App from './App.vue' 3 | import router from './router' 4 | import * as ModalDialogs from 'vue-modal-dialogs' 5 | import vClickOutside from 'v-click-outside' 6 | 7 | Vue.use(vClickOutside) 8 | Vue.use(ModalDialogs) 9 | 10 | Vue.config.productionTip = false 11 | 12 | new Vue({ 13 | router, 14 | ModalDialogs, 15 | render: h => h(App) 16 | }).$mount('#app') 17 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | /dist 4 | 5 | # local env files 6 | .env.local 7 | .env.*.local 8 | 9 | # Log files 10 | npm-debug.log* 11 | yarn-debug.log* 12 | yarn-error.log* 13 | pnpm-debug.log* 14 | 15 | # Editor directories and files 16 | .idea 17 | .vscode 18 | *.suo 19 | *.ntvs* 20 | *.njsproj 21 | *.sln 22 | *.sw? 23 | 24 | # Lock files 25 | pnpm-lock.yaml 26 | packege-lock.json 27 | yarn.lock 28 | 29 | -------------------------------------------------------------------------------- /src/router/index.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import VueRouter from 'vue-router' 3 | import Home from '../views/Home.vue' 4 | import Note from '../views/Note.vue' 5 | 6 | Vue.use(VueRouter) 7 | 8 | const routes = [ 9 | { 10 | path: '/', 11 | name: 'Home', 12 | component: Home 13 | }, 14 | { 15 | path: '/note', 16 | name: 'Note', 17 | component: Note 18 | }, 19 | { 20 | path: '/note/:noteId', 21 | name: 'Edit', 22 | component: Note 23 | } 24 | ] 25 | 26 | const router = new VueRouter({ 27 | mode: 'history', 28 | base: process.env.BASE_URL, 29 | routes 30 | }) 31 | 32 | export default router 33 | -------------------------------------------------------------------------------- /public/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |
4 | 5 | 6 | 7 | 8 |{{ content }}
10 |