chore: Replace darkmode mixin with useDarkMode composable [CW-3474] (#9949)

# Pull Request Template

## Description

Replaces darkModeMixin with the new useDarkMode composable and replaces
wll usages of mixin the the composable in components and pages

Fixes
https://linear.app/chatwoot/issue/CW-3474/rewrite-darkmodemixin-mixin-to-a-composable

## Type of change

Please delete options that are not relevant.

- [x] New feature (non-breaking change which adds functionality)

---------

Co-authored-by: Muhsin Keloth <muhsinkeramam@gmail.com>
Co-authored-by: Sivin Varghese <64252451+iamsivin@users.noreply.github.com>
This commit is contained in:
Fayaz Ahmed
2024-09-12 00:29:41 +05:30
committed by GitHub
parent 2c17c95eab
commit a76cd7684a
27 changed files with 357 additions and 207 deletions

View File

@@ -7,7 +7,7 @@ import { isEmptyObject } from 'widget/helpers/utils';
import { getRegexp } from 'shared/helpers/Validators';
import { useMessageFormatter } from 'shared/composables/useMessageFormatter';
import routerMixin from 'widget/mixins/routerMixin';
import darkModeMixin from 'widget/mixins/darkModeMixin';
import { useDarkMode } from 'widget/composables/useDarkMode';
import configMixin from 'widget/mixins/configMixin';
export default {
@@ -15,7 +15,7 @@ export default {
CustomButton,
Spinner,
},
mixins: [routerMixin, darkModeMixin, configMixin],
mixins: [routerMixin, configMixin],
props: {
options: {
type: Object,
@@ -24,9 +24,8 @@ export default {
},
setup() {
const { formatMessage } = useMessageFormatter();
return {
formatMessage,
};
const { getThemeClass } = useDarkMode();
return { formatMessage, getThemeClass };
},
data() {
return {
@@ -131,25 +130,28 @@ export default {
return `mt-1 border rounded w-full py-2 px-3 text-slate-700 outline-none`;
},
isInputDarkOrLightMode() {
return `${this.$dm('bg-white', 'dark:bg-slate-600')} ${this.$dm(
'text-slate-700',
'dark:text-slate-50'
)}`;
return `${this.getThemeClass(
'bg-white',
'dark:bg-slate-600'
)} ${this.getThemeClass('text-slate-700', 'dark:text-slate-50')}`;
},
inputBorderColor() {
return `${this.$dm('border-black-200', 'dark:border-black-500')}`;
return `${this.getThemeClass(
'border-black-200',
'dark:border-black-500'
)}`;
},
},
methods: {
labelClass(context) {
const { hasErrors } = context;
if (!hasErrors) {
return `text-xs font-medium ${this.$dm(
return `text-xs font-medium ${this.getThemeClass(
'text-black-800',
'dark:text-slate-50'
)}`;
}
return `text-xs font-medium ${this.$dm(
return `text-xs font-medium ${this.getThemeClass(
'text-red-400',
'dark:text-red-400'
)}`;
@@ -264,7 +266,7 @@ export default {
v-if="shouldShowHeaderMessage"
v-dompurify-html="formatMessage(headerMessage, false)"
class="mb-4 text-sm leading-5 pre-chat-header-message"
:class="$dm('text-black-800', 'dark:text-slate-50')"
:class="getThemeClass('text-black-800', 'dark:text-slate-50')"
/>
<FormulateInput
v-for="item in enabledPreChatFields"