From add72e6246bc4e2d917d305cf66bd2adc23bb754 Mon Sep 17 00:00:00 2001 From: RemiSaurel Date: Fri, 26 Aug 2022 13:46:01 +0200 Subject: [PATCH] new feature: pin elements from todolist --- src/components/ToDoList.vue | 68 +++++++++++++++++++++++++++++++------ 1 file changed, 57 insertions(+), 11 deletions(-) diff --git a/src/components/ToDoList.vue b/src/components/ToDoList.vue index a70fde3..41d0738 100644 --- a/src/components/ToDoList.vue +++ b/src/components/ToDoList.vue @@ -6,13 +6,18 @@ placeholder="Ex: Finir exos maths"> -
-
-
- {{item}} +
+
+
+ {{item.text}}
-
- 🗑 +
+
+ 📌 +
+
+ 🗑 +
@@ -33,9 +38,14 @@ export default { methods: { addItem(item) { const trimmedItem = item.trim(); - if (trimmedItem.length > 0 && this.items.indexOf(trimmedItem) === -1) { - this.items = [trimmedItem].concat(this.items) + const found = this.items.some(item => item.text === trimmedItem) + if (trimmedItem.length > 0 && !(found)) { + this.items.unshift({ + text: trimmedItem, + isPinned: false + }); } + this.sortArrayPinnedElements() this.clearItem() }, removeItem(item) { @@ -47,6 +57,30 @@ export default { }, clearItem() { this.item = "" + }, + pinItem(item) { + if (item.isPinned) { + item.isPinned = false + this.sortArrayPinnedElements() + } else { + item.isPinned = true + this.$nextTick(() => { + const pinnedElement = document.getElementById(item) + pinnedElement.scrollIntoView({behavior: "smooth"}) + }); + this.sortArrayPinnedElements() + } + }, + sortArrayPinnedElements() { + this.items.sort((a, b) => { + if (a.isPinned && !b.isPinned) { + return -1 + } else if (!a.isPinned && b.isPinned) { + return 1 + } else { + return 0 + } + }) } } } @@ -152,10 +186,22 @@ export default { box-shadow: #79624c 0px 1px 6px 0px; } -#trash { - font-size: 20px; - padding-left: 8px; +.pinned { + box-shadow: inset 0px 0px 0px 3px #fd7e7e; +} + +.pinned:hover { + box-shadow: inset 0px 0px 0px 3px #ea0000; +} + +#emojis { + display: flex; cursor: pointer; + margin-left: 8px; +} + +#emojis > div { + margin-left: 8px; } /* ********** */