33 lines
		
	
	
	
		
			820 B
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			33 lines
		
	
	
	
		
			820 B
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| import { createReducer } from '@reduxjs/toolkit';
 | |
| 
 | |
| import { closeDropdownMenu, openDropdownMenu } from '../actions/dropdown_menu';
 | |
| 
 | |
| interface DropdownMenuState {
 | |
|   openId: string | null;
 | |
|   keyboard: boolean;
 | |
|   scrollKey: string | null;
 | |
| }
 | |
| 
 | |
| const initialState: DropdownMenuState = {
 | |
|   openId: null,
 | |
|   keyboard: false,
 | |
|   scrollKey: null,
 | |
| };
 | |
| 
 | |
| export const dropdownMenuReducer = createReducer(initialState, (builder) => {
 | |
|   builder
 | |
|     .addCase(
 | |
|       openDropdownMenu,
 | |
|       (state, { payload: { id, keyboard, scrollKey } }) => {
 | |
|         state.openId = id;
 | |
|         state.keyboard = keyboard;
 | |
|         state.scrollKey = scrollKey;
 | |
|       },
 | |
|     )
 | |
|     .addCase(closeDropdownMenu, (state, { payload: { id } }) => {
 | |
|       if (state.openId === id) {
 | |
|         state.openId = null;
 | |
|         state.scrollKey = null;
 | |
|       }
 | |
|     });
 | |
| });
 |