51 lines
1.1 KiB
TypeScript
51 lines
1.1 KiB
TypeScript
import { IDivisionsState } from './IDivisionsState';
|
|
import { IDivision } from '../../models/IDivision';
|
|
|
|
export type Action =
|
|
| { type: 'SET_ITEMS'; payload: IDivision[] }
|
|
| { type: 'SET_CURRENT_PAGE_NUMBER'; payload: number }
|
|
| { type: 'SET_PAGE_SIZE'; payload: number }
|
|
| { type: 'SET_IS_PANEL_OPEN'; payload: boolean };
|
|
|
|
export const initialState: IDivisionsState = {
|
|
items: [],
|
|
currentPageNumber: 1,
|
|
pageSize: 10,
|
|
isPanelOpen: false
|
|
};
|
|
|
|
export const reducer = (
|
|
state: IDivisionsState,
|
|
action: Action
|
|
): IDivisionsState => {
|
|
switch (action.type) {
|
|
case 'SET_ITEMS': {
|
|
return {
|
|
...state,
|
|
items: action.payload
|
|
};
|
|
}
|
|
case 'SET_CURRENT_PAGE_NUMBER': {
|
|
return {
|
|
...state,
|
|
currentPageNumber: action.payload
|
|
};
|
|
}
|
|
case 'SET_PAGE_SIZE': {
|
|
return {
|
|
...state,
|
|
pageSize: action.payload
|
|
};
|
|
}
|
|
case 'SET_IS_PANEL_OPEN': {
|
|
return {
|
|
...state,
|
|
isPanelOpen: action.payload
|
|
};
|
|
}
|
|
default: {
|
|
return state;
|
|
}
|
|
}
|
|
};
|