-
+
{{ $t('PROFILE_SETTINGS.TITLE') }}
@@ -33,6 +33,48 @@
@update-signature="updateSignature"
/>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -49,6 +91,10 @@ import { clearCookiesOnLogout } from 'dashboard/store/utils/api.js';
import UserProfilePicture from './UserProfilePicture.vue';
import UserBasicDetails from './UserBasicDetails.vue';
import MessageSignature from './MessageSignature.vue';
+import HotKeyCard from './HotKeyCard.vue';
+import ChangePassword from './ChangePassword.vue';
+import NotificationPreferences from './NotificationPreferences.vue';
+import AudioNotifications from './AudioNotifications.vue';
import FormSection from 'dashboard/components/FormSection.vue';
export default {
@@ -57,6 +103,10 @@ export default {
FormSection,
UserProfilePicture,
UserBasicDetails,
+ HotKeyCard,
+ ChangePassword,
+ NotificationPreferences,
+ AudioNotifications,
},
mixins: [alertMixin, globalConfigMixin, uiSettingsMixin],
data() {
@@ -67,6 +117,31 @@ export default {
displayName: '',
email: '',
messageSignature: '',
+ hotKeys: [
+ {
+ key: 'enter',
+ title: this.$t(
+ 'PROFILE_SETTINGS.FORM.SEND_MESSAGE.CARD.ENTER_KEY.HEADING'
+ ),
+ description: this.$t(
+ 'PROFILE_SETTINGS.FORM.SEND_MESSAGE.CARD.ENTER_KEY.CONTENT'
+ ),
+ lightImage: '/assets/images/dashboard/profile/hot-key-enter.svg',
+ darkImage: '/assets/images/dashboard/profile/hot-key-enter-dark.svg',
+ },
+ {
+ key: 'cmd_enter',
+ title: this.$t(
+ 'PROFILE_SETTINGS.FORM.SEND_MESSAGE.CARD.CMD_ENTER_KEY.HEADING'
+ ),
+ description: this.$t(
+ 'PROFILE_SETTINGS.FORM.SEND_MESSAGE.CARD.CMD_ENTER_KEY.CONTENT'
+ ),
+ lightImage: '/assets/images/dashboard/profile/hot-key-ctrl-enter.svg',
+ darkImage:
+ '/assets/images/dashboard/profile/hot-key-ctrl-enter-dark.svg',
+ },
+ ],
};
},
computed: {
@@ -156,6 +231,15 @@ export default {
this.showAlert(this.$t('PROFILE_SETTINGS.AVATAR_DELETE_FAILED'));
}
},
+ toggleHotKey(key) {
+ this.hotKeys = this.hotKeys.map(hotKey =>
+ hotKey.key === key ? { ...hotKey, active: !hotKey.active } : hotKey
+ );
+ this.updateUISettings({ editor_message_key: key });
+ this.showAlert(
+ this.$t('PROFILE_SETTINGS.FORM.SEND_MESSAGE.UPDATE_SUCCESS')
+ );
+ },
},
};
diff --git a/app/javascript/dashboard/routes/dashboard/settings/personal/NotificationCheckBox.vue b/app/javascript/dashboard/routes/dashboard/settings/personal/NotificationCheckBox.vue
new file mode 100644
index 000000000..feb180014
--- /dev/null
+++ b/app/javascript/dashboard/routes/dashboard/settings/personal/NotificationCheckBox.vue
@@ -0,0 +1,53 @@
+
+
+
+
+
+
+
diff --git a/app/javascript/dashboard/routes/dashboard/settings/personal/NotificationPreferences.vue b/app/javascript/dashboard/routes/dashboard/settings/personal/NotificationPreferences.vue
new file mode 100644
index 000000000..a2c4555a7
--- /dev/null
+++ b/app/javascript/dashboard/routes/dashboard/settings/personal/NotificationPreferences.vue
@@ -0,0 +1,284 @@
+
+
+
+
+
+
+
+ {{ $t('PROFILE_SETTINGS.FORM.NOTIFICATIONS.TYPE_TITLE') }}
+
+
+
+
+ {{ $t('PROFILE_SETTINGS.FORM.NOTIFICATIONS.EMAIL') }}
+
+
+
+
+
+ {{ $t('PROFILE_SETTINGS.FORM.NOTIFICATIONS.PUSH') }}
+
+
+
+
+
+
+
+
+
+ {{ $t(notification.label) }}
+
+
+
+ handleInput(type, id)"
+ />
+
+
+
+
+
+
+
+ {{ $t('PROFILE_SETTINGS.FORM.EMAIL_NOTIFICATIONS_SECTION.TITLE') }}
+
+
+
+
+ {{ $t(notification.label) }}
+
+
+
+
+
+ {{ $t('PROFILE_SETTINGS.FORM.PUSH_NOTIFICATIONS_SECTION.TITLE') }}
+
+
+
+
+
+
+
+ {{ $t(notification.label) }}
+
+
+
+
+
+
+
diff --git a/app/javascript/dashboard/routes/dashboard/settings/personal/constants.js b/app/javascript/dashboard/routes/dashboard/settings/personal/constants.js
new file mode 100644
index 000000000..e25d5b52a
--- /dev/null
+++ b/app/javascript/dashboard/routes/dashboard/settings/personal/constants.js
@@ -0,0 +1,52 @@
+export const NOTIFICATION_TYPES = [
+ {
+ label: 'PROFILE_SETTINGS.FORM.NOTIFICATIONS.TYPES.CONVERSATION_CREATED',
+ value: 'conversation_creation',
+ },
+ {
+ label: 'PROFILE_SETTINGS.FORM.NOTIFICATIONS.TYPES.CONVERSATION_ASSIGNED',
+ value: 'conversation_assignment',
+ },
+ {
+ label: 'PROFILE_SETTINGS.FORM.NOTIFICATIONS.TYPES.CONVERSATION_MENTION',
+ value: 'conversation_mention',
+ },
+ {
+ label:
+ 'PROFILE_SETTINGS.FORM.NOTIFICATIONS.TYPES.ASSIGNED_CONVERSATION_NEW_MESSAGE',
+ value: 'assigned_conversation_new_message',
+ },
+ {
+ label:
+ 'PROFILE_SETTINGS.FORM.NOTIFICATIONS.TYPES.PARTICIPATING_CONVERSATION_NEW_MESSAGE',
+ value: 'participating_conversation_new_message',
+ },
+ {
+ label:
+ 'PROFILE_SETTINGS.FORM.NOTIFICATIONS.TYPES.SLA_MISSED_FIRST_RESPONSE',
+ value: 'sla_missed_first_response',
+ },
+ {
+ label: 'PROFILE_SETTINGS.FORM.NOTIFICATIONS.TYPES.SLA_MISSED_NEXT_RESPONSE',
+ value: 'sla_missed_next_response',
+ },
+ {
+ label: 'PROFILE_SETTINGS.FORM.NOTIFICATIONS.TYPES.SLA_MISSED_RESOLUTION',
+ value: 'sla_missed_resolution',
+ },
+];
+
+export const ALERT_EVENTS = [
+ {
+ value: 'none',
+ label: 'none',
+ },
+ {
+ value: 'mine',
+ label: 'mine',
+ },
+ {
+ value: 'all',
+ label: 'all',
+ },
+];
diff --git a/app/javascript/dashboard/routes/dashboard/settings/reports/components/SLA/SLAViewDetails.vue b/app/javascript/dashboard/routes/dashboard/settings/reports/components/SLA/SLAViewDetails.vue
index cdeda0af2..be40349fe 100644
--- a/app/javascript/dashboard/routes/dashboard/settings/reports/components/SLA/SLAViewDetails.vue
+++ b/app/javascript/dashboard/routes/dashboard/settings/reports/components/SLA/SLAViewDetails.vue
@@ -22,14 +22,11 @@
diff --git a/app/javascript/v3/components/Form/Select.vue b/app/javascript/v3/components/Form/Select.vue
index a7165b7f2..67a311b04 100644
--- a/app/javascript/v3/components/Form/Select.vue
+++ b/app/javascript/v3/components/Form/Select.vue
@@ -11,11 +11,11 @@
:selected="value"
:name="name"
:class="{
- 'text-slate-400': !value,
- 'text-slate-900 dark:text-slate-100': value,
+ 'text-ash-400': !value,
+ 'text-ash-900': value,
'pl-9': icon,
}"
- class="block w-full px-3 py-2 pr-6 mb-0 border-0 rounded-md shadow-sm outline-none appearance-none select-caret ring-1 ring-inset placeholder:text-slate-400 focus:ring-2 focus:ring-inset focus:ring-woot-500 sm:text-sm sm:leading-6 dark:bg-slate-700 dark:ring-slate-600 dark:focus:ring-woot-500 ring-slate-200"
+ class="block w-full px-3 py-2 pr-6 mb-0 border-0 shadow-sm outline-none appearance-none rounded-xl select-caret ring-ash-200 ring-1 ring-inset placeholder:text-ash-900 focus:ring-2 focus:ring-inset focus:ring-primary-500 sm:text-sm sm:leading-6"
@input="onInput"
>