1 // Copyright (C) The Arvados Authors. All rights reserved.
3 // SPDX-License-Identifier: AGPL-3.0
5 import { multiselectActionContants } from "./multiselect-actions";
6 import { TCheckedList } from "components/data-table/data-table";
8 type MultiselectToolbarState = {
10 checkedList: TCheckedList;
12 disabledButtons: string[]
15 const multiselectToolbarInitialState = {
22 const { TOGGLE_VISIBLITY, SET_CHECKEDLIST, SELECT_ONE, DESELECT_ONE, TOGGLE_ONE, SET_SELECTED_UUID, ADD_DISABLED, REMOVE_DISABLED } = multiselectActionContants;
24 export const multiselectReducer = (state: MultiselectToolbarState = multiselectToolbarInitialState, action) => {
25 switch (action.type) {
26 case TOGGLE_VISIBLITY:
27 return { ...state, isVisible: action.payload };
29 return { ...state, checkedList: action.payload };
31 return { ...state, checkedList: { ...state.checkedList, [action.payload]: true } };
33 return { ...state, checkedList: { ...state.checkedList, [action.payload]: false } };
35 return { ...state, checkedList: { ...state.checkedList, [action.payload]: !state.checkedList[action.payload] } };
36 case SET_SELECTED_UUID:
37 return {...state, selectedUuid: action.payload || ''}
39 return { ...state, disabledButtons: [...state.disabledButtons, action.payload]}
41 return { ...state, disabledButtons: state.disabledButtons.filter((button) => button !== action.payload) };