Skip to content

Commit c714326

Browse files
committed
Removed extra panel in favor of standard confirm.
Idea: let the users decide the message for the prompt confirmation. Instead of a boolean showConfirmDelete why don't we accept an optional string with the message to be shown to the user when confirming a deletion? If such string is not specified, then the deletion can happend without confirmation.
1 parent f649c8b commit c714326

File tree

3 files changed

+24
-39
lines changed

3 files changed

+24
-39
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ Vue.use(Chat)
5757
:showFile="true"
5858
:showEdition="true"
5959
:showDeletion="true"
60-
:showConfirmationDeletion="true"
60+
:deletionConfirmation="true"
6161
:showTypingIndicator="showTypingIndicator"
6262
:showLauncher="true"
6363
:showCloseButton="true"

demo/src/App.vue

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -198,11 +198,9 @@ export default {
198198
m.data.text = message.data.text;
199199
},
200200
removeMessage(message){
201-
if (confirm('Delete?')){
202-
const m = this.messageList.find(m => m.id === message.id);
203-
m.type = 'system';
204-
m.data.text = 'This message has been removed';
205-
}
201+
const m = this.messageList.find(m => m.id === message.id);
202+
m.type = 'system';
203+
m.data.text = 'This message has been removed';
206204
},
207205
like(id){
208206
const m = this.messageList.findIndex(m => m.id === id);

src/messages/TextMessage.vue

Lines changed: 20 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<template>
2-
<div class="sc-message--text" :class="{'confirm-delete' : confirmDeletion}" :style="messageColors">
2+
<div class="sc-message--text" :style="messageColors">
33
<template>
44
<div class="sc-message--toolbox" :style="{background: messageColors.backgroundColor}">
55
<button v-if="showEdition && me && message.id" @click="edit" :disabled="isEditing">
@@ -8,28 +8,11 @@
88
</IconBase>
99
</button>
1010
<div v-if="showDeletion">
11-
<div v-if="showConfirmationDeletion">
12-
<div v-if="confirmDeletion"> <!-- is used only when you display the message before deleting message -->
13-
<div class="message-deletion-confirmation" @mouseleave="refuseDelete">
14-
<span>Confirm?</span>
15-
<a :style="{color: messageColors.color}" href="javascript:void(0);" @click="$emit('remove')">Yes</a>
16-
</div>
17-
</div>
18-
<div v-else>
19-
<button v-if="me && message.id" @click="clickOnDelete">
20-
<IconBase :style="{color: messageColors.color}" width="10" icon-name="remove">
21-
<IconCross />
22-
</IconBase>
23-
</button>
24-
</div>
25-
</div>
26-
<div v-else>
27-
<button v-if="showDeletion && me && message.id != null && message.id != undefined" @click="$emit('remove')">
28-
<IconBase :color="messageColors.color" width="10" icon-name="remove">
29-
<IconCross />
30-
</IconBase>
31-
</button>
32-
</div>
11+
<button v-if="me && message.id != null && message.id != undefined" @click="ifelse(showConfirmationDeletion, withConfirm('Do you really want to delete the message?', () => $emit('remove')), () => $emit('remove'))()">
12+
<IconBase :color="messageColors.color" width="10" icon-name="remove">
13+
<IconCross />
14+
</IconBase>
15+
</button>
3316
</div>
3417
<slot name="text-message-toolbox" :message="message" :me="me"> </slot>
3518
</div>
@@ -61,7 +44,6 @@ const fmt = require('msgdown')
6144
export default {
6245
data() {
6346
return {
64-
confirmDeletion: false,
6547
store
6648
}
6749
},
@@ -89,7 +71,7 @@ export default {
8971
showConfirmationDeletion: {
9072
type: Boolean,
9173
required: true
92-
}
74+
},
9375
},
9476
computed: {
9577
messageText() {
@@ -111,17 +93,25 @@ export default {
11193
edit() {
11294
this.store.editMessage = this.message
11395
},
114-
clickOnDelete() {
115-
this.confirmDeletion = true
96+
ifelse(cond, funcIf, funcElse) {
97+
return () => {
98+
if (funcIf && cond) funcIf()
99+
else if (funcElse) funcElse()
100+
}
116101
},
117-
refuseDelete() {
118-
this.confirmDeletion = false
102+
withConfirm(msg, func) {
103+
return () => {
104+
if (confirm(msg)) {
105+
console.log(func)
106+
func()
107+
}
108+
}
119109
},
120110
},
121111
components:{
122112
IconBase,
123113
IconCross,
124-
IconEdit
114+
IconEdit,
125115
}
126116
}
127117
</script>
@@ -130,7 +120,4 @@ export default {
130120
a.chatLink {
131121
color: inherit !important;
132122
}
133-
.message-deletion-confirmation {
134-
padding: 0px 5px;
135-
}
136123
</style>

0 commit comments

Comments
 (0)