21128: disabled trash button during async op Arvados-DCO-1.1-Signed-off-by: Lisa...
[arvados-workbench2.git] / src / store / multiselect / multiselect-actions.tsx
index 1c329a9e90496bb87b168e55b8302c9808f6c555..9b564486f9ab5cb3c80f402775be19f5c4d3b627 100644 (file)
@@ -3,11 +3,17 @@
 // SPDX-License-Identifier: AGPL-3.0
 
 import { TCheckedList } from "components/data-table/data-table";
+import { isExactlyOneSelected } from "components/multiselect-toolbar/MultiselectToolbar";
 
 export const multiselectActionContants = {
     TOGGLE_VISIBLITY: "TOGGLE_VISIBLITY",
     SET_CHECKEDLIST: "SET_CHECKEDLIST",
+    SELECT_ONE: 'SELECT_ONE',
     DESELECT_ONE: "DESELECT_ONE",
+    TOGGLE_ONE: 'TOGGLE_ONE',
+    SET_SELECTED_UUID: 'SET_SELECTED_UUID',
+    ADD_DISABLED: 'ADD_DISABLED',
+    REMOVE_DISABLED: 'REMOVE_DISABLED',
 };
 
 export const toggleMSToolbar = (isVisible: boolean) => {
@@ -18,18 +24,54 @@ export const toggleMSToolbar = (isVisible: boolean) => {
 
 export const setCheckedListOnStore = (checkedList: TCheckedList) => {
     return dispatch => {
+        dispatch(setSelectedUuid(isExactlyOneSelected(checkedList)))
         dispatch({ type: multiselectActionContants.SET_CHECKEDLIST, payload: checkedList });
     };
 };
 
+export const selectOne = (uuid: string) => {
+    return dispatch => {
+        dispatch({ type: multiselectActionContants.SELECT_ONE, payload: uuid });
+    };
+};
+
 export const deselectOne = (uuid: string) => {
     return dispatch => {
         dispatch({ type: multiselectActionContants.DESELECT_ONE, payload: uuid });
     };
 };
 
+export const toggleOne = (uuid: string) => {
+    return dispatch => {
+        dispatch({ type: multiselectActionContants.TOGGLE_ONE, payload: uuid });
+    };
+};
+
+export const setSelectedUuid = (uuid: string | null) => {
+    return dispatch => {
+        dispatch({ type: multiselectActionContants.SET_SELECTED_UUID, payload: uuid });
+    };
+};
+
+export const addDisabledButton = (buttonName: string) => {
+    return dispatch => {
+        dispatch({ type: multiselectActionContants.ADD_DISABLED, payload: buttonName });
+    };
+};
+
+export const removeDisabledButton = (buttonName: string) => {
+    return dispatch => {
+        dispatch({ type: multiselectActionContants.REMOVE_DISABLED, payload: buttonName });
+    };
+};
+
 export const multiselectActions = {
     toggleMSToolbar,
     setCheckedListOnStore,
+    selectOne,
     deselectOne,
+    toggleOne,
+    setSelectedUuid,
+    addDisabledButton,
+    removeDisabledButton,
 };