From 9f0fc431dc6f6b1405b5e4e9d78bd366f5f4c806 Mon Sep 17 00:00:00 2001 From: marcin mikołajczak Date: Thu, 26 Sep 2024 01:58:52 +0200 Subject: Allow to change bookmark folder emoji MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: marcin mikołajczak --- .../bookmark_folder_edit/bookmark_folder_edit.js | 31 ++++++-- .../bookmark_folder_edit/bookmark_folder_edit.vue | 91 +++++++++++++++++++--- src/components/emoji_picker/emoji_picker.js | 2 +- 3 files changed, 106 insertions(+), 18 deletions(-) (limited to 'src/components') diff --git a/src/components/bookmark_folder_edit/bookmark_folder_edit.js b/src/components/bookmark_folder_edit/bookmark_folder_edit.js index 8c5d3cfd..95c01576 100644 --- a/src/components/bookmark_folder_edit/bookmark_folder_edit.js +++ b/src/components/bookmark_folder_edit/bookmark_folder_edit.js @@ -1,3 +1,4 @@ +import EmojiPicker from '../emoji_picker/emoji_picker.vue' import apiService from '../../services/api/api.service' const BookmarkFolderEdit = { @@ -9,9 +10,13 @@ const BookmarkFolderEdit = { emojiUrl: null, emojiDraft: '', emojiUrlDraft: null, + emojiPickerExpanded: false, reallyDelete: false } }, + components: { + EmojiPicker + }, created () { if (!this.id) return const credentials = this.$store.state.users.currentUser.credentials @@ -31,20 +36,30 @@ const BookmarkFolderEdit = { } }, methods: { + selectEmoji (event) { + this.emojiDraft = event.insertion + this.emojiUrlDraft = event.insertionUrl + }, + showEmojiPicker () { + if (!this.emojiPickerExpanded) { + this.$refs.picker.showPicker() + } + }, + onShowPicker () { + this.emojiPickerExpanded = true + }, + onClosePicker () { + this.emojiPickerExpanded = false + }, 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 + .then(() => { + this.$router.push({ name: 'bookmark-folders' }) }) }, createFolder () { this.$store.dispatch('createBookmarkFolder', { name: this.nameDraft, emoji: this.emojiDraft }) - .then((folder) => { - return folder.id - }) - .then((folderId) => { + .then(() => { this.$router.push({ name: 'bookmark-folders' }) }) .catch((e) => { diff --git a/src/components/bookmark_folder_edit/bookmark_folder_edit.vue b/src/components/bookmark_folder_edit/bookmark_folder_edit.vue index 30bbde09..b6a768d4 100644 --- a/src/components/bookmark_folder_edit/bookmark_folder_edit.vue +++ b/src/components/bookmark_folder_edit/bookmark_folder_edit.vue @@ -29,22 +29,45 @@
+
+ + + +
- {{ ' ' }} -
@@ -97,9 +130,49 @@ } .panel-body { + display: flex; + gap: 0.5em; + } + + .emoji-picker-panel { + position: absolute; + z-index: 20; + margin-top: 2px; + + &.hide { + display: none; + } + } + + .input-emoji { + height: 2.5em; + width: 2.5em; + padding: 0; + + .iconEmoji { + display: inline-block; + text-align: center; + object-fit: contain; + vertical-align: middle; + height: 2.5em; + width: 2.5em; + + > span { + font-size: 1.5rem; + line-height: 2.5rem; + } + } + + img.iconEmoji { + padding: 0.25em; + box-sizing: border-box; + } + } + + .input-wrap { display: flex; flex-direction: column; - overflow: hidden; + gap: 0.5em; } .go-back-button { diff --git a/src/components/emoji_picker/emoji_picker.js b/src/components/emoji_picker/emoji_picker.js index 9ea5c877..d3d6563a 100644 --- a/src/components/emoji_picker/emoji_picker.js +++ b/src/components/emoji_picker/emoji_picker.js @@ -180,7 +180,7 @@ const EmojiPicker = { if (!this.keepOpen) { this.$refs.popover.hidePopover() } - this.$emit('emoji', { insertion: value, keepOpen: this.keepOpen }) + this.$emit('emoji', { insertion: value, insertionUrl: emoji.imageUrl, keepOpen: this.keepOpen }) }, onScroll (startIndex, endIndex, visibleStartIndex, visibleEndIndex) { const target = this.$refs['emoji-groups'].$el -- cgit v1.2.3-70-g09d2