mirror of
				https://github.com/lingble/chatwoot.git
				synced 2025-10-31 19:17:48 +00:00 
			
		
		
		
	 b01d032d0d
			
		
	
	b01d032d0d
	
	
	
		
			
			* Enhancement: Updates sidebar to a new design (#2733) * feat: Changes primary navbar to new design (#2598) * feat: updates design for secondary navbar (#2612) * Changes primary nvbar to new design * Updates design for contexual sidebar * Fixes issues with JSON * Remove duplication of notificatons in Navigation * Fixes broken tests * Fixes broken tests * Update app/javascript/dashboard/components/layout/AvailabilityStatus.vue * Update app/javascript/dashboard/components/layout/AvailabilityStatus.vue * Update app/javascript/dashboard/components/layout/SidebarItem.vue Co-authored-by: Sivin Varghese <64252451+iamsivin@users.noreply.github.com> * Update app/javascript/dashboard/components/layout/SidebarItem.vue Co-authored-by: Sivin Varghese <64252451+iamsivin@users.noreply.github.com> * Update app/javascript/dashboard/modules/sidebar/components/Secondary.vue Co-authored-by: Sivin Varghese <64252451+iamsivin@users.noreply.github.com> Co-authored-by: Sivin Varghese <64252451+iamsivin@users.noreply.github.com> * Chore: Update design changes to features * Fixes menu transitions and refactors code * Refactors sidebar routeing logic * lint error fixes * Fixes dropdown menu styles * Fixes secondary new item links * Fixes lint scss issues * fixes linter issues * Fixes broken test cases * Update AvailabilityStatus.spec.js * Review feedbacks * Fixes add modal for label * Add tooltip for primary menu item * Tooltip for notifications * Adds tooltip for primary menu items * Review fixes * Review fixes * Fix merge issues * fixes logo size for login pages * fixes Merge breaks with styles Co-authored-by: Sivin Varghese <64252451+iamsivin@users.noreply.github.com> Co-authored-by: Pranav Raj S <pranav@chatwoot.com>
		
			
				
	
	
		
			142 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			Vue
		
	
	
	
	
	
			
		
		
	
	
			142 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			Vue
		
	
	
	
	
	
| <template>
 | |
|   <transition name="menu-slide">
 | |
|     <div
 | |
|       v-if="show"
 | |
|       v-on-clickaway="onClickAway"
 | |
|       class="dropdown-pane"
 | |
|       :class="{ 'dropdown-pane--open': show }"
 | |
|     >
 | |
|       <availability-status />
 | |
|       <li class="divider" />
 | |
|       <woot-dropdown-menu>
 | |
|         <woot-dropdown-item v-if="showChangeAccountOption">
 | |
|           <woot-button
 | |
|             variant="clear"
 | |
|             color-scheme="secondary"
 | |
|             size="small"
 | |
|             icon="arrow-swap"
 | |
|             @click="$emit('toggle-accounts')"
 | |
|           >
 | |
|             {{ $t('SIDEBAR_ITEMS.CHANGE_ACCOUNTS') }}
 | |
|           </woot-button>
 | |
|         </woot-dropdown-item>
 | |
|         <woot-dropdown-item v-if="globalConfig.chatwootInboxToken">
 | |
|           <woot-button
 | |
|             variant="clear"
 | |
|             color-scheme="secondary"
 | |
|             size="small"
 | |
|             icon="ion-help-buoy"
 | |
|             @click="$emit('show-support-chat-window')"
 | |
|           >
 | |
|             {{ $t('SIDEBAR_ITEMS.CONTACT_SUPPORT') }}
 | |
|           </woot-button>
 | |
|         </woot-dropdown-item>
 | |
|         <woot-dropdown-item>
 | |
|           <woot-button
 | |
|             variant="clear"
 | |
|             color-scheme="secondary"
 | |
|             size="small"
 | |
|             icon="keyboard"
 | |
|             @click="handleKeyboardHelpClick"
 | |
|           >
 | |
|             {{ $t('SIDEBAR_ITEMS.KEYBOARD_SHORTCUTS') }}
 | |
|           </woot-button>
 | |
|         </woot-dropdown-item>
 | |
|         <woot-dropdown-item>
 | |
|           <router-link
 | |
|             v-slot="{ href, isActive, navigate }"
 | |
|             :to="`/app/accounts/${accountId}/profile/settings`"
 | |
|             custom
 | |
|           >
 | |
|             <a
 | |
|               :href="href"
 | |
|               class="button small clear secondary"
 | |
|               :class="{ 'is-active': isActive }"
 | |
|               @click="e => handleProfileSettingClick(e, navigate)"
 | |
|             >
 | |
|               <fluent-icon icon="person" class="icon icon--font" />
 | |
|               <span class="button__content">
 | |
|                 {{ $t('SIDEBAR_ITEMS.PROFILE_SETTINGS') }}
 | |
|               </span>
 | |
|             </a>
 | |
|           </router-link>
 | |
|         </woot-dropdown-item>
 | |
|         <woot-dropdown-item>
 | |
|           <woot-button
 | |
|             variant="clear"
 | |
|             color-scheme="secondary"
 | |
|             size="small"
 | |
|             icon="power"
 | |
|             @click="logout"
 | |
|           >
 | |
|             {{ $t('SIDEBAR_ITEMS.LOGOUT') }}
 | |
|           </woot-button>
 | |
|         </woot-dropdown-item>
 | |
|       </woot-dropdown-menu>
 | |
|     </div>
 | |
|   </transition>
 | |
| </template>
 | |
| 
 | |
| <script>
 | |
| import { mixin as clickaway } from 'vue-clickaway';
 | |
| import { mapGetters } from 'vuex';
 | |
| import Auth from '../../../api/auth';
 | |
| import WootDropdownItem from 'shared/components/ui/dropdown/DropdownItem';
 | |
| import WootDropdownMenu from 'shared/components/ui/dropdown/DropdownMenu';
 | |
| import AvailabilityStatus from 'dashboard/components/layout/AvailabilityStatus';
 | |
| 
 | |
| export default {
 | |
|   components: {
 | |
|     WootDropdownMenu,
 | |
|     WootDropdownItem,
 | |
|     AvailabilityStatus,
 | |
|   },
 | |
|   mixins: [clickaway],
 | |
|   props: {
 | |
|     show: {
 | |
|       type: Boolean,
 | |
|       default: false,
 | |
|     },
 | |
|   },
 | |
|   computed: {
 | |
|     ...mapGetters({
 | |
|       currentUser: 'getCurrentUser',
 | |
|       globalConfig: 'globalConfig/get',
 | |
|       accountId: 'getCurrentAccountId',
 | |
|     }),
 | |
|     showChangeAccountOption() {
 | |
|       if (this.globalConfig.createNewAccountFromDashboard) {
 | |
|         return true;
 | |
|       }
 | |
| 
 | |
|       const { accounts = [] } = this.currentUser;
 | |
|       return accounts.length > 1;
 | |
|     },
 | |
|   },
 | |
|   methods: {
 | |
|     handleProfileSettingClick(e, navigate) {
 | |
|       this.$emit('close');
 | |
|       navigate(e);
 | |
|     },
 | |
|     handleKeyboardHelpClick() {
 | |
|       this.$emit('key-shortcut-modal');
 | |
|       this.$emit('close');
 | |
|     },
 | |
|     logout() {
 | |
|       Auth.logout();
 | |
|     },
 | |
|     onClickAway() {
 | |
|       if (this.show) this.$emit('close');
 | |
|     },
 | |
|   },
 | |
| };
 | |
| </script>
 | |
| <style lang="scss" scoped>
 | |
| .dropdown-pane {
 | |
|   left: var(--space-slab);
 | |
|   bottom: var(--space-larger);
 | |
|   min-width: 16.8rem;
 | |
|   z-index: var(--z-index-much-higher);
 | |
| }
 | |
| </style>
 |