Ура, ура, ура, я нашел время. Добавление, удаление. edit почему-то получает ничего вместо note.

This commit is contained in:
Mootfrost777 2022-12-07 16:30:28 +03:00
parent c5afaf346a
commit 1b48fdaa00
6 changed files with 54 additions and 12 deletions

View file

@ -2,16 +2,39 @@
import { ref } from 'vue' import { ref } from 'vue'
import Item from "./components/Item.vue"; import Item from "./components/Item.vue";
import Edit from "./components/Edit.vue"; import Edit from "./components/Edit.vue";
import { Note } from "./models/Note";
const items = ref([{title: 'Item 1'}, {title: 'Item 2'}, {title: 'Item 3'}]) const notes = ref([new Note(undefined, 'Make SUS'), new Note(undefined, 'аырофщшгвыпгыфа')])
const currentNote = ref(new Note())
function processNote(note: Note) {
const index = notes.value.findIndex((item) => item.id === note.id)
if (index !== -1) {
notes.value[index] = note
}
else {
notes.value.push(note)
}
}
function deleteNote(note: Note) {
notes.value = notes.value.filter((item) => item.id !== note.id)
}
function editNote(note: Note) {
currentNote.value = note
}
</script> </script>
<template> <template>
<div class="container" id="container"> <div class="container" id="container">
<item v-for="item in items" <item v-for="note in notes"
:title="item.title" /> :note="note"
@delete="deleteNote"
@edit="editNote"
/>
</div> </div>
<edit /> <edit @done="processNote" note="{{ currentNote }}"/>
</template> </template>
<style scoped> <style scoped>

View file

@ -1,10 +1,14 @@
<script setup lang="ts"> <script setup lang="ts">
defineEmits(['done'])
defineProps(['note'])
</script> </script>
<template> <template>
<div class="container"> <div class="container">
<input type="text" v-model="s"> <input type="text" v-model="note.title">
<div class="btn" @click=""><span><font-awesome-icon icon="fa-solid fa-check" /> Add</span></div>
<div class="btn" @click="note.title ? $emit('done', note) : null; note = new Note()">
<span><font-awesome-icon icon="fa-solid fa-check" /> Add</span></div>
</div> </div>
</template> </template>

View file

@ -1,14 +1,16 @@
<script setup lang="ts"> <script setup lang="ts">
defineProps(['title']) import { Note } from "../models/Note";
defineProps(['note'])
defineEmits(['delete', 'edit'])
</script> </script>
<template> <template>
<div class="container"> <div class="container">
<input type="checkbox"> <input type="checkbox" :checked="note.checked">
<span class="title">{{ title }}</span> <span class="title">{{ note.title }}</span>
<div class="btn"><span><font-awesome-icon icon="fa-solid fa-pen-to-square" /> Edit</span></div> <div class="btn"><span><font-awesome-icon icon="fa-solid fa-pen-to-square" /> Edit</span></div>
<div class="btn"><span><font-awesome-icon icon="fa-solid fa-trash" /> Delete</span></div> <div class="btn" @click="$emit('delete', note)"><span><font-awesome-icon icon="fa-solid fa-trash" /> Delete</span></div>
</div> </div>
</template> </template>
<style scoped> <style scoped>

View file

@ -11,6 +11,7 @@ import { FontAwesomeIcon } from '@fortawesome/vue-fontawesome'
/* import specific icons */ /* import specific icons */
import { faTrash, faPenToSquare, faCheck } from '@fortawesome/free-solid-svg-icons' import { faTrash, faPenToSquare, faCheck } from '@fortawesome/free-solid-svg-icons'
/* add icons to the library */ /* add icons to the library */
library.add(faTrash, faPenToSquare, faCheck) library.add(faTrash, faPenToSquare, faCheck)

11
src/models/Note.ts Normal file
View file

@ -0,0 +1,11 @@
let currentId = 5;
export class Note {
constructor(public id = currentId, public title = '', public checked = false) {
currentId++
this.id = id
this.title = title
this.checked = checked
}
}

View file

@ -11,7 +11,8 @@
"esModuleInterop": true, "esModuleInterop": true,
"lib": ["ESNext", "DOM"], "lib": ["ESNext", "DOM"],
"skipLibCheck": true, "skipLibCheck": true,
"noEmit": true "noEmit": true,
"noImplicitAny": false
}, },
"include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.tsx", "src/**/*.vue"], "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.tsx", "src/**/*.vue"],
"references": [{ "path": "./tsconfig.node.json" }] "references": [{ "path": "./tsconfig.node.json" }]