48 lines
1.0 KiB
TypeScript
48 lines
1.0 KiB
TypeScript
import { ITeamsState } from './ITeamsState';
|
|
import { ITeam } from '../../models/ITeam';
|
|
|
|
export type Action =
|
|
| { type: 'SET_ITEMS'; payload: ITeam[] }
|
|
| { type: 'SET_CURRENT_PAGE_NUMBER'; payload: number }
|
|
| { type: 'SET_PAGE_SIZE'; payload: number }
|
|
| { type: 'SET_IS_PANEL_OPEN'; payload: boolean };
|
|
|
|
export const initialState: ITeamsState = {
|
|
items: [],
|
|
currentPageNumber: 1,
|
|
pageSize: 10,
|
|
isPanelOpen: false
|
|
};
|
|
|
|
export const reducer = (state: ITeamsState, action: Action): ITeamsState => {
|
|
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;
|
|
}
|
|
}
|
|
};
|