Re_Figma_Code/src/pages/ClosedRequests/redux/closedRequestsSlice.ts

64 lines
1.6 KiB
TypeScript

import { createSlice, PayloadAction } from '@reduxjs/toolkit';
export interface ClosedRequestsFiltersState {
searchTerm: string;
statusFilter: string;
priorityFilter: string;
sortBy: 'created' | 'due' | 'priority';
sortOrder: 'asc' | 'desc';
currentPage: number;
}
const initialState: ClosedRequestsFiltersState = {
searchTerm: '',
statusFilter: 'all',
priorityFilter: 'all',
sortBy: 'created',
sortOrder: 'desc',
currentPage: 1,
};
const closedRequestsSlice = createSlice({
name: 'closedRequests',
initialState,
reducers: {
setSearchTerm: (state, action: PayloadAction<string>) => {
state.searchTerm = action.payload;
},
setStatusFilter: (state, action: PayloadAction<string>) => {
state.statusFilter = action.payload;
},
setPriorityFilter: (state, action: PayloadAction<string>) => {
state.priorityFilter = action.payload;
},
setSortBy: (state, action: PayloadAction<'created' | 'due' | 'priority'>) => {
state.sortBy = action.payload;
},
setSortOrder: (state, action: PayloadAction<'asc' | 'desc'>) => {
state.sortOrder = action.payload;
},
setCurrentPage: (state, action: PayloadAction<number>) => {
state.currentPage = action.payload;
},
clearFilters: (state) => {
state.searchTerm = '';
state.statusFilter = 'all';
state.priorityFilter = 'all';
state.currentPage = 1;
},
},
});
export const {
setSearchTerm,
setStatusFilter,
setPriorityFilter,
setSortBy,
setSortOrder,
setCurrentPage,
clearFilters,
} = closedRequestsSlice.actions;
export default closedRequestsSlice;