34 lines
		
	
	
		
			820 B
		
	
	
	
		
			TypeScript
		
	
	
	
			
		
		
	
	
			34 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;
 | 
						|
      }
 | 
						|
    });
 | 
						|
});
 |