9b564486f9ab5cb3c80f402775be19f5c4d3b627
[arvados.git] / src / store / multiselect / multiselect-actions.tsx
1 // Copyright (C) The Arvados Authors. All rights reserved.
2 //
3 // SPDX-License-Identifier: AGPL-3.0
4
5 import { TCheckedList } from "components/data-table/data-table";
6 import { isExactlyOneSelected } from "components/multiselect-toolbar/MultiselectToolbar";
7
8 export const multiselectActionContants = {
9     TOGGLE_VISIBLITY: "TOGGLE_VISIBLITY",
10     SET_CHECKEDLIST: "SET_CHECKEDLIST",
11     SELECT_ONE: 'SELECT_ONE',
12     DESELECT_ONE: "DESELECT_ONE",
13     TOGGLE_ONE: 'TOGGLE_ONE',
14     SET_SELECTED_UUID: 'SET_SELECTED_UUID',
15     ADD_DISABLED: 'ADD_DISABLED',
16     REMOVE_DISABLED: 'REMOVE_DISABLED',
17 };
18
19 export const toggleMSToolbar = (isVisible: boolean) => {
20     return dispatch => {
21         dispatch({ type: multiselectActionContants.TOGGLE_VISIBLITY, payload: isVisible });
22     };
23 };
24
25 export const setCheckedListOnStore = (checkedList: TCheckedList) => {
26     return dispatch => {
27         dispatch(setSelectedUuid(isExactlyOneSelected(checkedList)))
28         dispatch({ type: multiselectActionContants.SET_CHECKEDLIST, payload: checkedList });
29     };
30 };
31
32 export const selectOne = (uuid: string) => {
33     return dispatch => {
34         dispatch({ type: multiselectActionContants.SELECT_ONE, payload: uuid });
35     };
36 };
37
38 export const deselectOne = (uuid: string) => {
39     return dispatch => {
40         dispatch({ type: multiselectActionContants.DESELECT_ONE, payload: uuid });
41     };
42 };
43
44 export const toggleOne = (uuid: string) => {
45     return dispatch => {
46         dispatch({ type: multiselectActionContants.TOGGLE_ONE, payload: uuid });
47     };
48 };
49
50 export const setSelectedUuid = (uuid: string | null) => {
51     return dispatch => {
52         dispatch({ type: multiselectActionContants.SET_SELECTED_UUID, payload: uuid });
53     };
54 };
55
56 export const addDisabledButton = (buttonName: string) => {
57     return dispatch => {
58         dispatch({ type: multiselectActionContants.ADD_DISABLED, payload: buttonName });
59     };
60 };
61
62 export const removeDisabledButton = (buttonName: string) => {
63     return dispatch => {
64         dispatch({ type: multiselectActionContants.REMOVE_DISABLED, payload: buttonName });
65     };
66 };
67
68 export const multiselectActions = {
69     toggleMSToolbar,
70     setCheckedListOnStore,
71     selectOne,
72     deselectOne,
73     toggleOne,
74     setSelectedUuid,
75     addDisabledButton,
76     removeDisabledButton,
77 };