From 2b6de423d5a02413924f18910b1ce3538a5a1625 Mon Sep 17 00:00:00 2001 From: marcin mikołajczak Date: Tue, 24 Sep 2024 18:15:49 +0200 Subject: Bookmark folder editing MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: marcin mikołajczak --- .../bookmark_folder_card/bookmark_folder_card.js | 7 +- .../bookmark_folder_card/bookmark_folder_card.vue | 51 ++++++++- .../bookmark_folder_edit/bookmark_folder_edit.js | 65 +++++++++++ .../bookmark_folder_edit/bookmark_folder_edit.vue | 125 +++++++++++++++++++++ .../bookmark_folders/bookmark_folders.vue | 2 +- src/components/navigation/navigation_entry.vue | 5 + 6 files changed, 251 insertions(+), 4 deletions(-) create mode 100644 src/components/bookmark_folder_edit/bookmark_folder_edit.js create mode 100644 src/components/bookmark_folder_edit/bookmark_folder_edit.vue (limited to 'src/components') diff --git a/src/components/bookmark_folder_card/bookmark_folder_card.js b/src/components/bookmark_folder_card/bookmark_folder_card.js index 9df28e19..7a7206aa 100644 --- a/src/components/bookmark_folder_card/bookmark_folder_card.js +++ b/src/components/bookmark_folder_card/bookmark_folder_card.js @@ -10,7 +10,12 @@ library.add( const BookmarkFolderCard = { props: [ 'folder' - ] + ], + computed: { + firstLetter () { + return this.folder.name[0] + } + } } export default BookmarkFolderCard diff --git a/src/components/bookmark_folder_card/bookmark_folder_card.vue b/src/components/bookmark_folder_card/bookmark_folder_card.vue index 10875e78..b773c9fb 100644 --- a/src/components/bookmark_folder_card/bookmark_folder_card.vue +++ b/src/components/bookmark_folder_card/bookmark_folder_card.vue @@ -4,10 +4,28 @@ :to="{ name: 'bookmark-folder', params: { id: folder.id } }" class="bookmark-folder-name" > - {{ folder.name }} + + + + {{ folder.emoji }} + + + {{ firstLetter }}{{ folder.name }} span { + font-size: 1.5rem; + line-height: 2.5rem; + } + } + + img.iconEmoji { + padding: 0.25em; + box-sizing: border-box; + } } .bookmark-folder-name, diff --git a/src/components/bookmark_folder_edit/bookmark_folder_edit.js b/src/components/bookmark_folder_edit/bookmark_folder_edit.js new file mode 100644 index 00000000..8c5d3cfd --- /dev/null +++ b/src/components/bookmark_folder_edit/bookmark_folder_edit.js @@ -0,0 +1,65 @@ +import apiService from '../../services/api/api.service' + +const BookmarkFolderEdit = { + data () { + return { + name: '', + nameDraft: '', + emoji: '', + emojiUrl: null, + emojiDraft: '', + emojiUrlDraft: null, + reallyDelete: false + } + }, + created () { + if (!this.id) return + const credentials = this.$store.state.users.currentUser.credentials + apiService.fetchBookmarkFolders({ credentials }) + .then((folders) => { + const folder = folders.find(folder => folder.id === this.id) + if (!folder) return + + this.nameDraft = this.name = folder.name + this.emojiDraft = this.emoji = folder.emoji + this.emojiUrlDraft = this.emojiUrl = folder.emoji_url + }) + }, + computed: { + id () { + return this.$route.params.id + } + }, + methods: { + updateFolder () { + this.$store.dispatch('setBookmarkFolder', { folderId: this.id, name: this.nameDraft, emoji: this.emojiDraft }) + .then((folder) => { + this.nameDraft = this.name = folder.name + this.emojiDraft = this.emoji = folder.emoji + this.emojiUrlDraft = this.emojiUrl = folder.emoji_url + }) + }, + createFolder () { + this.$store.dispatch('createBookmarkFolder', { name: this.nameDraft, emoji: this.emojiDraft }) + .then((folder) => { + return folder.id + }) + .then((folderId) => { + this.$router.push({ name: 'bookmark-folders' }) + }) + .catch((e) => { + this.$store.dispatch('pushGlobalNotice', { + messageKey: 'bookmark_folders.error', + messageArgs: [e.message], + level: 'error' + }) + }) + }, + deleteFolder () { + this.$store.dispatch('deleteBookmarkFolder', { folderId: this.id }) + this.$router.push({ name: 'bookmark-folders' }) + } + } +} + +export default BookmarkFolderEdit diff --git a/src/components/bookmark_folder_edit/bookmark_folder_edit.vue b/src/components/bookmark_folder_edit/bookmark_folder_edit.vue new file mode 100644 index 00000000..30bbde09 --- /dev/null +++ b/src/components/bookmark_folder_edit/bookmark_folder_edit.vue @@ -0,0 +1,125 @@ + + + + + diff --git a/src/components/bookmark_folders/bookmark_folders.vue b/src/components/bookmark_folders/bookmark_folders.vue index 733e4cab..65b1a11b 100644 --- a/src/components/bookmark_folders/bookmark_folders.vue +++ b/src/components/bookmark_folders/bookmark_folders.vue @@ -5,7 +5,7 @@ {{ $t('nav.bookmark_folders') }} {{ $t("bookmark_folders.new") }} diff --git a/src/components/navigation/navigation_entry.vue b/src/components/navigation/navigation_entry.vue index 728de1be..024ee314 100644 --- a/src/components/navigation/navigation_entry.vue +++ b/src/components/navigation/navigation_entry.vue @@ -137,5 +137,10 @@ font-size: 1.5rem; } } + + img.iconEmoji { + padding: 0.25rem; + box-sizing: border-box; + } } -- cgit v1.2.3-70-g09d2