Merge branch '21118-gopath-usage-on-test' refs #21118
[arvados.git] / src / store / multiselect / multiselect-reducer.tsx
1 // Copyright (C) The Arvados Authors. All rights reserved.
2 //
3 // SPDX-License-Identifier: AGPL-3.0
4
5 import { multiselectActionContants } from "./multiselect-actions";
6 import { TCheckedList } from "components/data-table/data-table";
7
8 type MultiselectToolbarState = {
9     isVisible: boolean;
10     checkedList: TCheckedList;
11 };
12
13 const multiselectToolbarInitialState = {
14     isVisible: false,
15     checkedList: {},
16 };
17
18 const { TOGGLE_VISIBLITY, SET_CHECKEDLIST, DESELECT_ONE } = multiselectActionContants;
19
20 export const multiselectReducer = (state: MultiselectToolbarState = multiselectToolbarInitialState, action) => {
21     switch (action.type) {
22         case TOGGLE_VISIBLITY:
23             return { ...state, isVisible: action.payload };
24         case SET_CHECKEDLIST:
25             return { ...state, checkedList: action.payload };
26         case DESELECT_ONE:
27             return { ...state, checkedList: { ...state.checkedList, [action.payload]: false } };
28         default:
29             return state;
30     }
31 };