Skip to content

Commit 4db2377

Browse files
authored
Add prop to overwrite emoji data source fix #391 (#393)
1 parent 0186ae0 commit 4db2377

File tree

8 files changed

+31
-10
lines changed

8 files changed

+31
-10
lines changed

README.md

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,9 @@ Register `vue-advanced-chat` as a web component in your [config file](https://vu
8686

8787
```javascript
8888
compilerOptions: {
89-
isCustomElement: tagName => tagName === 'vue-advanced-chat'
89+
isCustomElement: tagName => {
90+
return tagName === 'vue-advanced-chat' || tagName === 'emoji-picker'
91+
}
9092
}
9193
```
9294

@@ -254,6 +256,7 @@ Otherwise, you need to pass those props as strings. For example: `[messages]="JS
254256
| `theme`(26) | `light` / `dark` | - | `light` |
255257
| `accepted-files`(27) | String | - | `*` |
256258
| `styles`(28) | [String, Object] | - | (26) |
259+
| `emoji-data-source` | String | - | `https://cdn.jsdelivr.net/npm/emoji-picker-element-data@%5E1/en/emojibase/data.json` |
257260

258261
**(1)** `current-user-id` is required to display UI and trigger actions according to the user using the chat (ex: messages position on the right, etc.)
259262

demo/vite.config.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,9 @@ export default defineConfig({
77
vue({
88
template: {
99
compilerOptions: {
10-
isCustomElement: tagName => tagName === 'vue-advanced-chat'
10+
isCustomElement: tagName => {
11+
return tagName === 'vue-advanced-chat' || tagName === 'emoji-picker'
12+
}
1113
}
1214
}
1315
})

src/components/EmojiPickerContainer/EmojiPickerContainer.vue

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,11 @@
2828
display: emojiPickerTop || !emojiReaction ? 'initial' : 'none'
2929
}"
3030
>
31-
<emoji-picker v-pre ref="emojiPicker" v-if="emojiOpened" />
31+
<emoji-picker
32+
v-if="emojiOpened"
33+
ref="emojiPicker"
34+
:data-source="emojiDataSource"
35+
/>
3236
</div>
3337
</transition>
3438
</template>
@@ -50,7 +54,8 @@ export default {
5054
emojiReaction: { type: Boolean, default: false },
5155
positionTop: { type: Boolean, default: false },
5256
positionRight: { type: Boolean, default: false },
53-
messageId: { type: String, default: '' }
57+
messageId: { type: String, default: '' },
58+
emojiDataSource: { type: String, default: undefined }
5459
},
5560
5661
emits: ['add-emoji', 'open-emoji'],

src/lib/ChatWindow.vue

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@
6767
:accepted-files="acceptedFiles"
6868
:templates-text="templatesTextCasted"
6969
:username-options="usernameOptionsCasted"
70+
:emoji-data-source="emojiDataSource"
7071
@toggle-rooms-list="toggleRoomsList"
7172
@room-info="roomInfo"
7273
@fetch-messages="fetchMessages"
@@ -207,7 +208,8 @@ export default {
207208
usernameOptions: {
208209
type: [Object, String],
209210
default: () => ({ minUsers: 3, currentUser: false })
210-
}
211+
},
212+
emojiDataSource: { type: String, default: undefined }
211213
},
212214
213215
emits: [

src/lib/Room/Room.vue

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,7 @@
9292
:username-options="usernameOptions"
9393
:message-selection-enabled="messageSelectionEnabled"
9494
:selected-messages="selectedMessages"
95+
:emoji-data-source="emojiDataSource"
9596
@message-added="onMessageAdded"
9697
@message-action-handler="messageActionHandler"
9798
@open-file="openFile"
@@ -151,6 +152,7 @@
151152
:init-reply-message="initReplyMessage"
152153
:init-edit-message="initEditMessage"
153154
:dropped-files="droppedFiles"
155+
:emoji-data-source="emojiDataSource"
154156
@update-edited-message-id="editedMessageId = $event"
155157
@edit-message="$emit('edit-message', $event)"
156158
@send-message="$emit('send-message', $event)"
@@ -218,7 +220,8 @@ export default {
218220
emojisSuggestionEnabled: { type: Boolean, required: true },
219221
scrollDistance: { type: Number, required: true },
220222
templatesText: { type: Array, default: null },
221-
usernameOptions: { type: Object, required: true }
223+
usernameOptions: { type: Object, required: true },
224+
emojiDataSource: { type: String, default: undefined }
222225
},
223226
224227
emits: [

src/lib/Room/RoomFooter/RoomFooter.vue

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,7 @@
130130
<emoji-picker-container
131131
:emoji-opened="emojiOpened"
132132
:position-top="true"
133+
:emoji-data-source="emojiDataSource"
133134
@add-emoji="addEmoji"
134135
@open-emoji="emojiOpened = $event"
135136
>
@@ -241,7 +242,8 @@ export default {
241242
audioSampleRate: { type: Number, required: true },
242243
initReplyMessage: { type: Object, default: null },
243244
initEditMessage: { type: Object, default: null },
244-
droppedFiles: { type: Array, default: null }
245+
droppedFiles: { type: Array, default: null },
246+
emojiDataSource: { type: String, default: undefined }
245247
},
246248
247249
emits: [
@@ -267,7 +269,7 @@ export default {
267269
activeUpOrDownEmojis: null,
268270
activeUpOrDownUsersTag: null,
269271
activeUpOrDownTemplatesText: null,
270-
emojisDB: new Database(),
272+
emojisDB: new Database({ dataSource: this.emojiDataSource }),
271273
emojiOpened: false,
272274
keepKeyboardOpen: false,
273275
filteredEmojis: [],

src/lib/Room/RoomMessage/MessageActions/MessageActions.vue

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@
4343
:emoji-reaction="true"
4444
:position-right="message.senderId === currentUserId"
4545
:message-id="message._id"
46+
:emoji-data-source="emojiDataSource"
4647
@add-emoji="sendMessageReaction"
4748
@open-emoji="openEmoji"
4849
>
@@ -107,7 +108,8 @@ export default {
107108
showReactionEmojis: { type: Boolean, required: true },
108109
messageHover: { type: Boolean, required: true },
109110
hoverMessageId: { type: [String, Number], default: null },
110-
hoverAudioProgress: { type: Boolean, required: true }
111+
hoverAudioProgress: { type: Boolean, required: true },
112+
emojiDataSource: { type: String, default: undefined }
111113
},
112114
113115
emits: [

src/lib/Room/RoomMessage/RoomMessage.vue

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -171,6 +171,7 @@
171171
:message-hover="messageHover"
172172
:hover-message-id="hoverMessageId"
173173
:hover-audio-progress="hoverAudioProgress"
174+
:emoji-data-source="emojiDataSource"
174175
@update-message-hover="messageHover = $event"
175176
@update-options-opened="optionsOpened = $event"
176177
@update-emoji-opened="emojiOpened = $event"
@@ -262,7 +263,8 @@ export default {
262263
linkOptions: { type: Object, required: true },
263264
usernameOptions: { type: Object, required: true },
264265
messageSelectionEnabled: { type: Boolean, required: true },
265-
selectedMessages: { type: Array, default: () => [] }
266+
selectedMessages: { type: Array, default: () => [] },
267+
emojiDataSource: { type: String, default: undefined }
266268
},
267269
268270
emits: [

0 commit comments

Comments
 (0)