feat: Support Dark mode for the widget (#4137)

Co-authored-by: Pranav Raj S <pranav@chatwoot.com>
This commit is contained in:
Sivin Varghese
2022-04-01 20:59:03 +05:30
committed by GitHub
parent 3813b3b372
commit caee9535f1
36 changed files with 411 additions and 113 deletions

View File

@@ -1,12 +1,25 @@
<template>
<div v-if="!!items.length" class="chat-bubble agent">
<div
v-if="!!items.length"
class="chat-bubble agent"
:class="$dm('bg-white', 'dark:bg-slate-700')"
>
<div v-for="item in items" :key="item.link" class="article-item">
<a :href="item.link" target="_blank" rel="noopener noreferrer nofollow">
<span class="title flex items-center text-black-900 font-medium">
<fluent-icon icon="link" class="mr-1" />
<span>{{ item.title }}</span>
<fluent-icon
icon="link"
class="mr-1"
:class="$dm('text-black-900', 'dark:text-slate-50')"
/>
<span :class="$dm('text-slate-900', 'dark:text-slate-50')">{{
item.title
}}</span>
</span>
<span class="description">
<span
class="description"
:class="$dm('text-slate-700', 'dark:text-slate-200')"
>
{{ truncateMessage(item.description) }}
</span>
</a>
@@ -17,12 +30,13 @@
<script>
import messageFormatterMixin from 'shared/mixins/messageFormatterMixin';
import FluentIcon from 'shared/components/FluentIcon/Index.vue';
import darkModeMixin from 'widget/mixins/darkModeMixin.js';
export default {
components: {
FluentIcon,
},
mixins: [messageFormatterMixin],
mixins: [messageFormatterMixin, darkModeMixin],
props: {
items: {
type: Array,

View File

@@ -9,7 +9,7 @@
v-model.trim="email"
class="form-input"
:placeholder="$t('EMAIL_PLACEHOLDER')"
:class="{ error: $v.email.$error }"
:class="inputHasError"
@input="$v.email.$touch"
@keydown.enter="onSubmit"
/>
@@ -31,12 +31,14 @@ import { required, email } from 'vuelidate/lib/validators';
import FluentIcon from 'shared/components/FluentIcon/Index.vue';
import Spinner from 'shared/components/Spinner';
import darkModeMixin from 'widget/mixins/darkModeMixin.js';
export default {
components: {
FluentIcon,
Spinner,
},
mixins: [darkModeMixin],
props: {
messageId: {
type: Number,
@@ -63,6 +65,15 @@ export default {
this.messageContentAttributes.submitted_email
);
},
inputColor() {
return `${this.$dm('bg-white', 'dark:bg-slate-600')}
${this.$dm('text-black-900', 'dark:text-slate-50')}`;
},
inputHasError() {
return this.$v.email.$error
? `${this.inputColor} error`
: `${this.inputColor}`;
},
},
validations: {
email: {
@@ -105,6 +116,10 @@ export default {
padding: $space-one;
width: 100%;
&::placeholder {
color: $color-light-gray;
}
&.error {
border-color: $color-error;
}