mirror of
				https://github.com/lingble/chatwoot.git
				synced 2025-10-31 02:57:57 +00:00 
			
		
		
		
	 6d3ecfe3c1
			
		
	
	6d3ecfe3c1
	
	
	
		
			
			This PR has the initial version of the new sidebar targeted for the next major redesign of the app. This PR includes the following changes - Components in the `layouts-next` and `base-next` directories in `dashboard/components` - Two generic components `Avatar` and `Icon` - `SidebarGroup` component to manage expandable sidebar groups with nested navigation items. This includes handling active states, transitions, and permissions. - `SidebarGroupHeader` component to display the header of each navigation group with optional icons and active state indication. - `SidebarGroupLeaf` component for individual navigation items within a group, supporting icons and active state. - `SidebarGroupSeparator` component to visually separate nested navigation items. (They look a lot like header) - `SidebarGroupEmptyLeaf` component to render empty state of any navigation groups. ---- Co-authored-by: Pranav <pranav@chatwoot.com> Co-authored-by: Pranav <pranavrajs@gmail.com>
		
			
				
	
	
		
			32 lines
		
	
	
		
			746 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			32 lines
		
	
	
		
			746 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| import { shallowMount } from '@vue/test-utils';
 | |
| import { createStore } from 'vuex';
 | |
| import SidemenuIcon from '../SidemenuIcon.vue';
 | |
| 
 | |
| const store = createStore({
 | |
|   modules: {
 | |
|     auth: {
 | |
|       namespaced: false,
 | |
|       getters: {
 | |
|         getCurrentAccountId: () => 1,
 | |
|       },
 | |
|     },
 | |
|     accounts: {
 | |
|       namespaced: true,
 | |
|       getters: {
 | |
|         isFeatureEnabledonAccount: () => () => false,
 | |
|       },
 | |
|     },
 | |
|   },
 | |
| });
 | |
| 
 | |
| describe('SidemenuIcon', () => {
 | |
|   test('matches snapshot', () => {
 | |
|     const wrapper = shallowMount(SidemenuIcon, {
 | |
|       stubs: { WootButton: { template: '<button><slot /></button>' } },
 | |
|       global: { plugins: [store] },
 | |
|     });
 | |
|     expect(wrapper.vm).toBeTruthy();
 | |
|     expect(wrapper.element).toMatchSnapshot();
 | |
|   });
 | |
| });
 |